null
にポインタを渡すとクラッシュが発生しますdlclose
。
呼び出す前にnullをチェックする必要がありますdlclose
か?
POSIXはこれについて何も伝えていません:http: //pubs.opengroup.org/onlinepubs/7908799/xsh/dlclose.html
それは未定義の動作ですか、dlclose
それとも実装のバグですか?
null
にポインタを渡すとクラッシュが発生しますdlclose
。
呼び出す前にnullをチェックする必要がありますdlclose
か?
POSIXはこれについて何も伝えていません:http: //pubs.opengroup.org/onlinepubs/7908799/xsh/dlclose.html
それは未定義の動作ですか、dlclose
それとも実装のバグですか?
これはトリッキーです。POSIX は次のように述べています。
handle
開いているオブジェクトを参照していない場合はdlclose()
、ゼロ以外の値を返します
そこから、任意のポインターについて、そのポインターが開いているオブジェクトを参照しているかどうかを検出する必要があると推測できます。Linux/Glibc バージョンではそのようなチェックは行わないようですNULL
。
[さておき、Linux のマンページもあまり役に立ちません。関数の動作については非常に暗黙的libdl
であり、適合性を明確に主張することなく POSIX に準拠しています。]
また、 a を受け入れてクラッシュしNULL
ないことについても何も述べていません。テストから、明示的なNULL
チェックを行わず、何らかの方法でポインターを使用して終了アクションを実行する必要があると推測できます。
malloc
/慣例 (1) に従うfree
と、バグです。fopen
/fclose
規則 (2)に従っている場合、そうではありません。したがって、バグがある場合は、ゾンビを処理するための規則がないため、標準に含まれています。
これは、混乱を避けるために、今後の POSIX リビジョンで修正する必要があると思います。
この回答から見つけましたhttps://stackoverflow.com/a/6277781/877329、そして無効なtidでman pthread_join
呼び出すことができることを読んで、慣例をサポートしています。ダイナミック ローダー インターフェイスに関して私が見つけたもう 1 つの問題は、標準のエラー処理システムを使用せず、独自の機能を持っていることです。pthread_join
malloc/free
dlerror