在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
将列表限制为仅共享内存段。