LD_LIBRARY_PATH
の変更に奇妙な副作用があります。LD_LIBRARY_PATHの副作用
ライブラリを含むパスを追加すると、次のようになります。 :
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my_path/lib
すべてが信じられないほど遅くなります。たとえば、単純なls
は10秒間でも構いません。
ldd
出力はLD_LIBRARY_PATH
変更の前後でまったく同じであると私はstrace
と遅いls
の実行をデバッグしようとした:私はどちらの場合もまったく同じ実行を取得します。 ls
の実行中に実行が停止することはありません(strace
は10秒遅れの間に何も出力せず、突然完全にls
を実行するため)。だから私はそれが私のシェルから来るかもしれないと思ったが、これは同じである。同じことだ、私のbashにstrace
を実行して、ls
を実行すると、同じstrace
という出力が出る。シェルはls
を実行し、遅れの前の出力strace
はwaitpid(...)
です)。だから私はls
の起動とそれがカーネルレベルの問題のようにその実行の間に何か間違ったことが起こったと思います。 ls
(0CPU使用)にsleep
が作成された場合のように機能します。ラグの間に
、私のCPUとネットワークアクティビティが完全に正常である...それは私の中にls
を乱さないように、新しいLDパスのライブラリは、任意の「標準ライブラリ」と競合しないことを
注意例。
私はLD_LIBRARY_PATH
副作用や深く私の例をデバッグする方法についての深い説明に興味があります。
良い質問。私は 'LD_LIBRARY_PATH'を使いましたが、そのような振る舞いは見たことがありませんでしたが、あなたの観察は孤立しているようです。面白い。 – thb
'export LD_DEBUG = all'と' man 8 ld.so' –
が明白ですが、lddがLD_LIBRARY_PATHから何かを使用している場合には、 "ldd $(which ls)"が手がかりを与えるかもしれません。 – Matthias