Hi, there, some user space threads, say thread-X stuck in sleep_on_page_killable @ filemap_fault().
my question is : in normal flow, how to wakeup thread-X from wait_on_page_locked_killable() ? How can I go further to debug this issue? I try to use ftrace function_graph to trace the flow, but it can only log EXPORT_SYMBOL_GPL() functions. I am struggling with huge memory and file system source code... hope anyone can give me some practical tips. Call Trace: [<c1895675>] schedule+0x35/0x50 [<c1895708>] io_schedule+0x78/0xb0 [<c12c95fd>] sleep_on_page_killable+0xd/0x40 [<c1895f3f>] __wait_on_bit+0x4f/0x70 [<c12cbcae>] wait_on_page_bit_killable+0x8e/0x90 [<c12cbd42>] __lock_page_or_retry+0x92/0xb0 [<c12cc041>] filemap_fault+0x2e1/0x400 [<c12e55be>] __do_fault+0x3e/0x390 [<c12e72ac>] handle_pte_fault+0x7c/0x930 [<c12e7bf3>] handle_mm_fault+0x93/0xc0 [<c189a98e>] do_page_fault+0x10e/0x4b0 [<c189881b>] error_code+0x5f/0x64 here is the kernel code in filemap.c static inline int wait_on_page_locked_killable(struct page *page) { if (PageLocked(page)) return wait_on_page_bit_killable(page, PG_locked); return 0; } here is ftrace result: 3) | filemap_fault() { 3) | find_get_page() { 3) 0.259 us | __rcu_read_lock(); 3) 0.217 us | __rcu_read_unlock(); 3) 7.432 us | } 3) 0.244 us | __might_sleep(); 3) + 12.206 us | }
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies