問題タブ [dlopen]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - _dl_close アサーションの失敗
私が書いている Apache モジュールで dlopen() を使用しているので、モジュールのプラグイン システムを使用できます。モジュールをコンパイルし、プラグインをコンパイルし、Apache を起動すると、すべてがうまく機能することがわかりました。
ただし、すべての作業を行った後でプラグインを再コンパイルすると (プラグイン コードに小さな変更を 1 つか 2 つ加えると)、次のページの読み込みで Apache にセグメンテーション違反が発生します。後続の各リクエストは、再び正常に機能します。したがって、segfault の原因となるのは、コンパイル直後の最初のページの読み込みだけです。
私は数日間これに取り組もうとしてきました (私は C のデバッグが得意ではありません)、そして今日、Apache エラー ログでこれに気付きました:
誰が何が起こっているのか知っていますか?これは私のコードではなく、幻のバグを探しているということですか? 私は、dlopen() を呼び出すたびに dlcose() を呼び出していると確信しています。ただし、この特定のバグ/セグメンテーション違反は、apache をシングル プロセス モードで実行し、ページの更新をすばやく開始すると発生するようです。
c - 読み込まれたライブラリ関数は、メイン アプリケーションでどのようにシンボルを呼び出しますか?
関数を介して共有ライブラリがロードされたときdlopen()
に、メインプログラムで関数を呼び出す方法はありますか?
c++ - コンストラクターで例外をスローする静的メンバーを持つライブラリーでの dlopen - 結果は中止になります
dlopen 関数を使用して動的ライブラリをロードしようとしています。このライブラリには、コンストラクターで例外をスローする静的オブジェクトが含まれています。dlopen 呼び出しの周りに「try-catch(...)」ブロックがありますが、例外がキャッチされず、「Abort」が表示されるだけです。
この例外をキャッチするにはどうすればよいですか?
shared-libraries - dlopen を使用してライブラリをロードすると、「未定義のシンボル」エラーが発生する
動的共有ライブラリをプラグインとして使用するコードを書いています。
共有ライブラリを構築するための私のコマンド ラインは次のようになります。
モジュール内では、メインの実行可能ファイル内にロードされた他の共有ライブラリにある関数を呼び出すことができます。
ただし、実行可能ファイル自体にある (エクスポートされた) 関数にアクセスできません (undefined symbol
エラーが発生します)。
私の呼び出しはdlopen
次のようになります。
実行可能ファイルのすべてのユーティリティ関数をさらに別の共有ライブラリに配置することなく、モジュールが実行可能ファイルにコールバックする方法を誰かアドバイスしてもらえますか?
python - Python dlopen/dlfunc/dlsym ラッパー
PythonでUnixダイナミックリンカーにアクセスするためのラッパーまたは移植されたライブラリが実際に存在するかどうかは誰にもわかりませんか?
c - dlfuncの移植性?
FreeBSDのdlopenとその仲間たちのマンページを読んでいます。ロード可能なプラグインに共有ライブラリを使用しているクロスプラットフォームアプリケーションに取り組んでいます。私はこれまでこれを行ったことがありませんが、それがどのように機能するかを十分に理解していると思います。マンページには、共有ライブラリから関数ポインタを取得する一般的な手段のように見えるdlsym()と、関数ポインタにvoid*をキャストすることに関するコンパイラの苦情を回避するdlfunc()が記載されています。dlsym()がより一般的である理由はありますか(移植性?)?コンパイラの問題を回避するためにdlfunc()を使用するべきか、それともdlsym()を使用するべきか疑問に思っています。dlfunc()は移植可能ですか?
c++ - dlopenのエラー:St9bad_alloc
テストに使用しているc++コードがいくつかあります。最初の行は、共有オブジェクトをロードするためのdlopenの呼び出しです。この行に到達すると、次のエラーが発生します。
メモリを増やしましたが(free -mは、exeがgdbにロードされたときに最大120 MBの空きがあると報告します)、それでも同じメッセージが表示されます。
他に何がこれを引き起こしている可能性があり、それを解決するために私が何ができるかについてのアイデアはありますか?
c - 実行時引数を指定したdlsym/dlopen
私は次のようなことをしようとしています
擬似コードは次のようなものです
ありがとうございました
c - 実行可能ファイルでもある.soを構築する
/lib/libc.so.6
したがって、glibcは通常の実行可能ファイルのようにシェルで実行できることを誰もが知っているでしょう。その場合、glibcはバージョン情報を出力して終了します。これは、.soでエントリポイントを定義することで実行されます。場合によっては、これを他のプロジェクトにも使用すると面白いかもしれません。残念ながら、ldの-eオプションで設定できる低レベルのエントリポイントは少し低レベルです。動的ローダーが使用できないため、適切なライブラリ関数を呼び出すことができません。このため、glibcは、このエントリポイントでネイキッドシステムコールを介してwrite()システムコールを実装します。
私の質問は、他の.soの関数にアクセスできるように、そのエントリポイントから完全なダイナミックリンカーをブートストラップする方法を誰かが考えられるかどうかです。
memory-leaks - dlopen で valgrind によって報告されたメモリ リーク?
最近、valgrind を使用していくつかのアプリをデバッグしていて、から非常に奇妙なレポートを受け取っていdlopen
ます。
これは で初期化されたエラー メッセージのように見えますがdlerror
、man ページを見ると、これをクリアする方法については何も書かれていません。これを正しく取り除く方法はありますか?