什么是“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

内核告诉您,当发生段错误时,指令指针0x7f3c7c523770位于 SysV IPC shm 段中。共享内存段开始于0x7f3c7c4e8000字节0x60000长。

SysV shm 段不受文件支持,因此该字符串SYSV00000000出现在通常您获取发生段错误的可执行文件或库的文件名的位置。因此,该日志行没有为我们提供真正有用的信息。如果您希望追踪崩溃的原因,则需要核心转储。

我怀疑指令指针根本不应该在那里。将可执行代码加载到 SysV shm 段中是相当奇怪的。但我还没有看到任何 XFCE 代码,所以对我来说看起来很奇怪的东西可能是正常的。

通过阅读以下手册页,您可以了解有关 sysv shm 的基础知识,假设您对内存管理的基础知识有很好的掌握:

man svipc
man shmget
man shmat

运行ipcs命令查看当前分配了哪些 sysv ipc 资源。ipcs -m将列表限制为仅共享内存段。

相关内容