ToDo:
POSIX semaphores(sem(4))の実装で使われる kernel semaphore資源 (SEE ALSO ksem_* system call)が、FreeBSD 7.1ではリークするようです。
pthread時には、sem_init(3)等の関数は、プロセス間共有でなければ posix thread library側に有る semaphoreコードに委譲される訳ですが、 -pthread付きでコンパイルして-pthread無しでリンクして 出来た変なC++実行ファイルを何度も実行しているとsem_init(3)に 失敗して abortするようになります。 おそらく、static object生成時の排他制御のために最初にsem_init(3)するが、 途中からPOSIX thread libraryがロードされて、sem_*が thread library側に 切り替わり終了時の sem_destroy(3)がksem_* system callを呼び出さない ためと思われるが、sem_init(3)で生成した名前無しセマフォが 関与するプロセスがすべて死んだ後に生き残っているのは、 カーネルのリソースリークな気がする。 (名前無しなので、アタッチしているプロセスが無くなると 開放手段(sem_destroy)で使うsem_t構造体が無くなる)
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記