2012-03-02 40 views
1

我從內核以下呼叫跟蹤和信息:如何解釋呼叫跟蹤

INFO: task raw_device_benc:9684 blocked for more than 120 seconds. 
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. 
raw_device_be D c1e5c800 5984 9684 9683 
     ed9e9d5c 00000046 c1e5c800 c1e5c800 ed9e9d14 587dc805 00001e62 e884be00 
     e884c054 c1e5c800 00000000 ed9e8000 f6333b80 00000000 00000000 001eda69 
     00000000 e884be00 00000000 e884be00 c044319a 00000000 ed9e9d58 c013e912 
Call Trace: 
[<c044319a>] ? _spin_unlock_irqrestore+0x36/0x3c 
[<c013e912>] ? trace_hardirqs_on+0xe9/0x111 
[<c044126d>] io_schedule+0x1e/0x28 
[<c018ec95>] __blockdev_direct_IO+0x9a9/0xaf2 
[<c014e2da>] ? generic_file_buffered_write+0x116/0x4e1 
[<c017efa6>] ? mnt_drop_write+0x4f/0xbc 
[<c018db1a>] blkdev_direct_IO+0x30/0x35 
[<c018da31>] ? blkdev_get_blocks+0x0/0xb9 
[<c014e067>] generic_file_direct_IO+0xda/0x125 
[<c014eecf>] generic_file_aio_read+0x9c/0x49f 
[<c013f7d1>] ? __lock_acquire+0xaea/0xb32 
[<c016c2c3>] do_sync_read+0xab/0xe9 
[<c0132f0d>] ? autoremove_wake_function+0x0/0x33 
[<c044192d>] ? mutex_unlock+0x8/0xa 
[<c018cb2d>] ? block_llseek+0xbe/0xcc 
[<c016c218>] ? do_sync_read+0x0/0xe9 
[<c016c9bc>] vfs_read+0x8a/0x106 
[<c016cdef>] sys_read+0x3b/0x60 
[<c0103809>] sysenter_past_esp+0x6a/0xb1 
======================= 
no locks held by raw_device_benc/9684. 

不過,我不太清楚這是什麼節的意思是:

raw_device_be D c1e5c800 5984 9684 9683 
     ed9e9d5c 00000046 c1e5c800 c1e5c800 ed9e9d14 587dc805 00001e62 e884be00 
     e884c054 c1e5c800 00000000 ed9e8000 f6333b80 00000000 00000000 001eda69 
     00000000 e884be00 00000000 e884be00 c044319a 00000000 ed9e9d58 c013e912 

任何人都可以或許解釋位對我?那些寄存器值?更具體地說,我想知道是否可以從這些值中推斷傳遞給函數的參數。 謝謝。下面的行的

回答

2

含義是:

raw_device_be D c1e5c800 5984 9684 9683 

紅進程名是raw_device_be,它在d狀態,過程pc爲在c1e5c800,自由堆棧空間5984,該方法的PID是9684和父該方法的PID是9683.

,其餘幾行:

ed9e9d5c 00000046 c1e5c800 c1e5c800 ed9e9d14 587dc805 00001e62 e884be00 
    e884c054 c1e5c800 00000000 ed9e8000 f6333b80 00000000 00000000 001eda69 
    00000000 e884be00 00000000 e884be00 c044319a 00000000 ed9e9d58 c013e912 

是堆棧的數據。將從當前進程的堆棧指針(sp)開始打印24個字(96字節)的堆棧數據。如果你知道堆棧的增長和縮小以及vmlinux的反彙編代碼,你可以找到一個函數的參數。當然你有一個有限的堆棧數據給出。

+0

謝謝!這有很大幫助。但是,我可以獲得堆棧指針和完整的堆棧數據以某種方式給出這些信息? – yangsuli 2012-03-02 14:46:58