2013-05-07 96 views
1

當進程被殺後,我得到了一個堆棧。我可以告訴一個流氓是否已經死亡,或者它是否因堆棧轉儲而崩潰?

(gdb) 
Thread 2 (Thread 0xf6ec6b90 (LWP 10941)): 
#0 0xffffe410 in __kernel_vsyscall() 
#1 0xf7a47525 in *__GI___poll (fds=0xf7fb1558, nfds=1, timeout=-1) 
    at ../sysdeps/unix/sysv/linux/poll.c:87 
#2 0xf7f9138a in timer_thread_entry (arg=0x0) 
    at ../../../ux/com_ux/libux/com/UXtimer2.c:509 
#3 0xf797be7b in start_thread (arg=0xf6ec6b90) at pthread_create.c:298 
#4 0xf7a4ff9e in clone() from /lib/libc.so.6 

Thread 1 (Thread 0xf796d8d0 (LWP 10686)): 
#0 0xffffe410 in __kernel_vsyscall() 
#1 0xf7a517d9 in __libc_msgrcv (msqid=1736749, msgp=0xff99cb78, msgsz=2160, 
    msgtyp=0, msgflg=0) at ../sysdeps/unix/sysv/linux/msgrcv.c:59 
#2 0xf7f6f647 in _CT_getmsg (mode=0, msgp=0xff99cb78, pmaxtime=0xff99cb6c, 
    pdata=0xf7faf180, ux_type=0) at ../../../ux/com_ux/libux/com/UXipc.c:2550 
#3 0xf7f6fec5 in CT_getmsg_v2 (mode=0, msgp=0xff99cb78, maxtime=10000, 
    ux_type=0) at ../../../ux/com_ux/libux/com/UXipc.c:2237 
#4 0x0804afe9 in main (argc=1, argv=0xff99d4b4) 
    at ../../../../main/CT_main.cpp:271 
#0 0xffffe410 in __kernel_vsyscall() 
  1. 爲什麼有兩個線程?他們如何鏈接在一起?
  2. 通過這種傾倒,它可以顯示過程本身是墜毀的,還是被其他人殺死。
  3. 「0xf7a47525 in * GI _poll(fds = 0xf7fb1558,nfds = 1,timeout = -1)」,「timeout = -1」是什麼意思?
  4. 這裏涉及的是怎樣調用系統調用?

非常感謝你!

回答

3
  1. 在主程序函數clone()中的某處被調用來創建單獨的線程 - 顯然是用於套接字處理。
  2. 由於其參數,很可能該進程在msgrcv()函數中崩潰。如果由於信號而創建崩潰轉儲,您將在堆棧跟蹤中看到信號處理程序。
  3. timeout = -1表示無限超時。
  4. 它沒有涉及 - 線程被阻塞。
相關問題