2018年8月12日日曜日

あなたの GIMP 2.10.x ちゃんと動いていますか? 2

以前、こんな投稿を書きました。  あなたの GIMP 2.10.2 ちゃんと動いていますか?
でも、これは GIMP のみでのケースで、
実際には、これ以外にも、他のソフトやアプリが関連するケースがあります。
あなたの GIMP ちゃんと動いていますか?。


所謂、DLL HELL !。
あ~、 怖ろしい言葉ですね。

私は、嘗てより、ライブラリの競合が予測されるソフトの導入には慎重でした。
例えば、 GIMP と Inkscape 。
これらは、似た(同じ)ライブラリを使っています。
もし、そのライブラリのバージョンが異なれば、それは怖い結果を齎す可能性があります。
通常は、双方が影響を与え合うケースは少ないと思われる訳ですが ... 。
なので、GIMP 主体の私は Inkscape を Portable 版で導入する事で、競合を避ける方針を取って来ました。
この場合(この組み合わせ)は 危惧に過ぎない のかも知れません。

しかし、実際、この危惧が具体化してしまった例を Internet 上 で見付ける事が可能です。

DLL HELL

ソフトウェアは、皆、自分の環境を整える為に、勝手に!、ファイルをコピーします。
このファイルが所定の場所にあれば、そうは、問題は起こりません。
しかし、 共通して利用される場所として用意された特殊な場所に、それを突っ込まれると、それはそれは厄介です。
具体的には、 C:\Windows 配下 等です。


恐らく、競合する可能性のあるソフトは クロスプラットフォームで設計されたもの です。
以下を Command Prompt (cmd.exe) から実行して見て下さい。

  where /R C:\Windows /T libfreetype*.*
C:\Users\UserA>where /R C:\Windows /T libfreetype*.*
情報: 与えられたパターンのファイルが見つかりませんでした。

もし、見付からない ではなく、ファイルサイズ 日付 ファイル名 が列挙されているなら、
GIMP がちゃんと動かない可能性があります。
削除しちゃって影響が無いなら 宜し ですが、普通は、犯人探しに勤しむ事になろうか、と。
然るに、その場合は、いきなり削除では無く、リネームして様子を見て ... 見付かればお引越し でしょうか。


上の例は文字表示を司る FreeType2 絡みのトラブルですが、
単なる文字表示ではなく、様々な形でエラーを引き起こしている様です。
実際には、他の DLL もバッティングする可能性があります。

  一例: exchndl.dll


尚、 この件は問題視されていて、解消を試み様とされています。
次期の GIMP 2.10.6 で間に合うか分かりませんが、
もし、色々とソフト類が入っている方は、こんな事もある、と心の片隅に仕舞って置かれると良いと思います。

でも、願わくは、 そんな状況に出喰わしません様に!。



参考 URL: https://gitlab.gnome.org/GNOME/gimp/issues/1809#note_291824  Jehan (GIMP Developer) said,
i suspect the problem may not lie within the gimp distro but with a conflict with other system setups.

Well yes, this has always been the case. With DLL hell, the problem is never really with GIMP (well it used to be, in part, and other part to plug-in creators, when we were asking plug-ins to be installed all at the same place). It is because other programs do shitty stuffs by installing all their libs in system folders (which is quite high in loading priority). And now we are looking for solutions protecting plug-ins from these unwanted libs.
So of course GIMP works fine on most installed Windows (if this were a general issue, you'd be more to complain! :P).

参考 URL: https://gitlab.gnome.org/GNOME/gimp/issues/1809#note_290027  Jehan (GIMP Developer) said,
Thanks @tneagnom! c:\Windows\SysWOW64\libfreetype-6.dll is most obviously our culprit here. SysWOW64 is the system directory for 32-bit libs on Windows 64-bit. So it is searched before the PATH.
I assume some other software installed it there, which is bad habit of some software developers and is the common reason for DLL hell. Now it interferes with GIMP.
I suggest you move it away (you could just delete it, but since you don't know which other software uses it, you may want to keep a copy somewhere until you figure it out). Then I guess/hope the twain plug-in will now run fine.
This all being said, I may have found a long-term solution to DLL hell! I searched a bit the web, and found SetDllDirectoryA which does exactly what we need, which is inserting a given directory in between the application directory and system directories. This way, we should be able to give priority to bin/ or 32/bin/ (apparently we can choose only one, so I guess we'll need some logics to decide whether that's 32-bit on 64-bit or not) when loading plug-ins.
Not sure if it can make it on time for GIMP 2.10.6 in a few days, but I'll try.



0 件のコメント:

コメントを投稿