- 论坛徽章:
- 0
|
用pthread_kill 给一个不存在的线程会导致SIGSEGV?
哪个高手给出个说法?
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1219392624 (LWP 574 ]
0x00617f2f in pthread_kill () from /lib/libpthread.so.0
(gdb) bt
#0 0x00617f2f in pthread_kill () from /lib/libpthread.so.0
#1 0x08049c13 in do_epoll () at function.c:201
#2 0x006132db in start_thread () from /lib/libpthread.so.0
#3 0x0056d12e in clone () from /lib/libc.so.6
(gdb) disa pthread_kill
warning: bad breakpoint number at or near 'pthread_kill'
(gdb) disas pthread_kill
Dump of assembler code for function pthread_kill:
0x00617f20 <pthread_kill+0>: push %ebp
0x00617f21 <pthread_kill+1>: mov %esp,%ebp
0x00617f23 <pthread_kill+3>: mov 0x8(%ebp),%eax
0x00617f26 <pthread_kill+6>: push %edi
0x00617f27 <pthread_kill+7>: mov 0xc(%ebp),%edx
0x00617f2a <pthread_kill+10>: mov $0x3,%edi
0x00617f2f <pthread_kill+15>: mov 0x48(%eax),%ecx
0x00617f32 <pthread_kill+18>: test %ecx,%ecx
0x00617f34 <pthread_kill+20>: jle 0x617f67 <pthread_kill+71>
0x00617f36 <pthread_kill+22>: lea 0xffffffe0(%edx),%eax
0x00617f39 <pthread_kill+25>: mov $0x16,%di
0x00617f3d <pthread_kill+29>: cmp $0x1,%eax
0x00617f40 <pthread_kill+32>: jbe 0x617f67 <pthread_kill+71>
0x00617f42 <pthread_kill+34>: mov %gs:0x4c,%edi
0x00617f49 <pthread_kill+41>: xchg %ebx,%edi
0x00617f4b <pthread_kill+43>: mov $0x10e,%eax
0x00617f50 <pthread_kill+48>: call *%gs:0x10
0x00617f57 <pthread_kill+55>: xchg %edi,%ebx
0x00617f59 <pthread_kill+57>: mov %eax,%edx
0x00617f5b <pthread_kill+59>: xor %edi,%edi
0x00617f5d <pthread_kill+61>: neg %edx
0x00617f5f <pthread_kill+63>: cmp $0xfffff000,%eax
0x00617f64 <pthread_kill+68>: cmova %edx,%edi
0x00617f67 <pthread_kill+71>: mov %edi,%eax
0x00617f69 <pthread_kill+73>: pop %edi
0x00617f6a <pthread_kill+74>: pop %ebp
0x00617f6b <pthread_kill+75>: ret
0x00617f6c <pthread_kill+76>: nop
0x00617f6d <pthread_kill+77>: nop
0x00617f6e <pthread_kill+78>: nop
0x00617f6f <pthread_kill+79>: nop
End of assembler dump.
(gdb) info f
Stack level 0, frame at 0xb75180c0:
eip = 0x617f2f in pthread_kill; saved eip 0x8049c13
called by frame at 0xb75183d0
Arglist at 0xb75180b8, args:
Locals at 0xb75180b8, Previous frame's sp is 0xb75180c0
Saved registers:
ebp at 0xb75180b8, eip at 0xb75180bc
Dec 22 18:56:08 wqw-work [5746]: after do_deal pthread 2855287696
Dec 22 18:56:08 wqw-work [5746]: close pthread 2855287696
Dec 22 18:56:07 wqw-work [5746]: socket 34 address 2855287696 events 0
目标线程在调用pthread_kill的时候退出了
[ 本帖最后由 孙轩 于 2008-1-3 09:20 编辑 ] |
|