首页
社区
课程
招聘
[已解决]linux某64位程序执行lea rdi,[r14+0x18]崩溃
发表于: 2017-3-3 17:35 2339

[已解决]linux某64位程序执行lea rdi,[r14+0x18]崩溃

2017-3-3 17:35
2339

结论:gdb 7.2的一个bug吧,虽然是si单步执行,但是其实目标程序一直执行到很远的地方。后来我使用了gdb 7.12.1,就没有这个问题了。
这个目标程序,在断点处后面很远的地方,有给自己发sigkill的一段代码。但是gdb的si命令实际上并没有单步执行,而是一直执行到后面sigkill的那段代码。
我觉得大体思路要找找谁给目标程序发了sigkill信号?内核发的要从/var/log/messages排查,其它程序发的要从其它程序日志排查。再者就是程序本身的代码是否有sigkill自己。

---------------------------------------------------------------------------------------

linux上的某64位程序,gdb断点在某处

(gdb) info registers
rax            0x3e8    1000
rbx            0x3e9    1001
rcx            0x7ffff74c1870   140737342347376
rdx            0x3e9    1001
rsi            0x0      0
rdi            0xc      12
rbp            0x3e8    0x3e8
rsp            0x7fffffffe390   0x7fffffffe390
r8             0xffffffff       4294967295
r9             0x37313032203e2933       3977012937792301363
r10            0x312033302d33302d       3539885589122986029
r11            0x246    582
r12            0x71b0d0 7450832
r13            0xf4628  1001000
r14            0x7fffffffe4b0   140737488348336
r15            0x71b0d0 7450832
rip            0x4157d0 0x4157d0 <CProxyManager::Init()+720>
eflags         0x246    [ PF ZF IF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0

想必是即将运行这一句的

0x00000000004157d0 <+720>:   lea    rdi,[r14+0x18]

于是我单步运行,输入si
结果崩溃了。也没有core文件留下。
Program terminated with signal SIGKILL, Killed.
The program no longer exists.

不知道大家有什么思路提示提示?谢谢大家!

当时就单线程,不可能是其它线程造成崩溃


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//