「SYSV00000000」とは何ですか?

「SYSV00000000」とは何ですか?

dmesg私のウィンドウマネージャ(xfwm4、XFCEの一部)が次のようにクラッシュする場合:

xfwm4[3936]: segfault at 7f3c7c523770 ip 00007f3c7c523770 sp 00007ffffea1ee28 error 15 in SYSV00000000 (deleted)[7f3c7c4e8000+60000]

他の場所でも同じ状況がSYSV00000000発生します(例lsof:)。だから、これは何ですかSYSV00000000?グーグルをしてみると、仮想メモリと関連があることがわかりましたが、それ以外はあまり多くありませんでした。

答え1

カーネルは、segfault が発生すると、コマンドポインタが0x7f3c7c523770SysV IPC shm セグメントにあることを通知します。共有メモリセグメントは0x7f3c7c4e8000バイト0x60000長で始まります。

SysV shmセグメントはファイルでサポートされていないため、この文字列はSYSV00000000通常、セグメント化された実行可能ファイルまたはライブラリのファイル名を取得する場所に表示されます。したがって、このログ行は実際に役立つ情報を提供しません。競合の原因を追跡するには、コアダンプが必要です。

指示ポインタがまったくあってはならないと思います。実行可能なコードをSysV shmセグメントにロードするのはかなり奇妙です。しかし、XFCEコードを見たことがないので、奇妙に見えるのはおそらく正常です。

メモリ管理の基本をよく理解しているという前提で、次のマニュアルページを読んで、sysv shmの基本を学ぶことができます。

man svipc
man shmget
man shmat

ipcsコマンドを実行して、現在割り当てられているsysv ipcリソースを確認します。ipcs -mリストを共有メモリー・セグメントのみに制限します。

関連情報