Syslogd 内核:代码:
在运行一些与 MySQL 服务器交互的实验性 Java 代码时,我收到了这些消息,然后服务器崩溃了:
Message from syslogd@localhost at Jun 20 20:04:12 ...
kernel:Stack:
Message from syslogd@localhost at Jun 20 20:04:12 ...
kernel:Call Trace:
Message from syslogd@localhost at Jun 20 20:04:12 ...
kernel:Code: e0 48 8d 55 b0 48 89 4d e8 4c 89 45 f0 48 89 45 b8 48 8d 45 d0 4c 89 4d f8 c7 45 b0 10 00 00 00 48 89 45 c0 e8 5a ff ff ff c9 c3 <89> f0 b9 40 00 00 00 55 99 45 31 c0 f7 f9 48 89 e5 48 89 fa 41
它们是什么意思?重新启动后,一切恢复正常。 /var/log/messages 在事件发生时没有任何条目,并且 dmesg 似乎也没有显示任何有关它的信息。
Fedora 版本 13(戈达德) 2.6.34.8-68.fc13.x86_64
While running some experimental Java code which interacts with a MySQL server, I received these messages and then the server crashed:
Message from syslogd@localhost at Jun 20 20:04:12 ...
kernel:Stack:
Message from syslogd@localhost at Jun 20 20:04:12 ...
kernel:Call Trace:
Message from syslogd@localhost at Jun 20 20:04:12 ...
kernel:Code: e0 48 8d 55 b0 48 89 4d e8 4c 89 45 f0 48 89 45 b8 48 8d 45 d0 4c 89 4d f8 c7 45 b0 10 00 00 00 48 89 45 c0 e8 5a ff ff ff c9 c3 <89> f0 b9 40 00 00 00 55 99 45 31 c0 f7 f9 48 89 e5 48 89 fa 41
What do they mean? After restart, everything is working again. /var/log/messages has no entries near the time of the event and dmesg doesn't seem to show anything about it either.
Fedora release 13 (Goddard)
2.6.34.8-68.fc13.x86_64
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是转储代码的反汇编,如果有帮助的话。我假设尖括号包围的字节是代码崩溃的地方,尽管我看不出从一个寄存器到另一个寄存器的 mov 语句如何做到这一点。
I don't know how to use any of the *grep programs to search for binary data, so you might need to write a few lines of perl or python to locate the kernel code involved. It is quite doubtful that your Java code, or anything to do with MySQL, could have caused a kernel-level crash.
Corrected disassembly for 64-bit mode:
[这么多年后再次审视这个问题,我意识到问题更有可能是:堆栈下溢。由于堆栈为空,
retq
没有地方返回,因此指令指针指向下面的指令 -- jc]Here's a disassembly of the dumped code, if that helps. I'm assuming the byte surrounded by the angle brackets is where the code crashed, although I can't see how a mov statement from one register to another could do so.
I don't know how to use any of the *grep programs to search for binary data, so you might need to write a few lines of perl or python to locate the kernel code involved. It is quite doubtful that your Java code, or anything to do with MySQL, could have caused a kernel-level crash.
Corrected disassembly for 64-bit mode:
[looking at this again after all these years, I realize what the problem more likely was: a stack underflow. the
retq
had no place to return, as the stack was empty, so the instruction pointer was left pointing at the following instruction -- jc]