lkml.org 
[lkml]   [2006]   [May]   [31]   [last100]   RSS Feed
Views: [more markup]   [less markup]   [headers]   [forward]  
 
 
Messages in this thread
Patch in this message
/
DateWed, 31 May 2006 16:02:02 +0200
FromIngo Molnar <>
SubjectRe: 2.6.17-rc5-mm1
* Michal Piotrowski <michal.k.k.piotrowski@gmail.com> wrote:

> but these two bugs looks similar (both were previously reported). Both 
> appears while starting avahi daemon.
> 
> http://www.stardust.webpages.pl/files/mm/2.6.17-rc5-mm1/dmesg_1
> http://www.stardust.webpages.pl/files/mm/2.6.17-rc5-mm1/dmesg_2
> 
> http://www.stardust.webpages.pl/files/mm/2.6.17-rc5-mm1/latency_trace_1.bz2
> http://www.stardust.webpages.pl/files/mm/2.6.17-rc5-mm1/latency_trace_2.bz2

thanks - these traces made it really easy to spot the problem! The 
problem seems to be caused by a pagefault:

   <...>-1     0D..1 10648us : check_chain_key (__lockdep_acquire)
   <...>-1     0D..1 10649us+: _raw_spin_lock (_spin_lock_irqsave)
   <...>-1     0D..1 10651us : do_page_fault (error_code)
   <...>-1     0D..1 10652us : trace_hardirqs_off (ret_from_exception)
   <...>-1     0D..1 10653us : trace_hardirqs_on (restore_nocheck)
   <...>-1     0D..1 10654us : mark_held_locks (trace_hardirqs_on)
   <...>-1     0D..1 10654us : mark_lock (mark_held_locks)
   <...>-1     0D..1 10655us : save_trace (mark_lock)
   <...>-1     0D..1 10656us : save_stack_trace (save_trace)
   <...>-1     0D..1 10658us : print_usage_bug (mark_lock)

i think what happened is that the pagefault happened with irqs disabled, 
and the entry.S return-to-exception-site irq-flags tracing code 
mistakenly turned on the irq flag - causing the mismatch and lockdep's 
confusion.

if it's easy to reproduce it once more, could you apply the patch below? 
That will add a trace entry about what address faulted and at what EIP. 
Please also upload vmlinux.bz2 because the EIP will be a raw hex number 
and i'll have to look it up. (or if it's too big then please disassemble 
vmlinux via objdump -d vmlinux and upload a ~100 lines portion that is 
mentioned in the new trace entry next to the do_page_fault trace entry 
near the end of the latency_trace output)

	Ingo

Index: linux/arch/i386/mm/fault.c
===================================================================
--- linux.orig/arch/i386/mm/fault.c
+++ linux/arch/i386/mm/fault.c
@@ -337,6 +338,7 @@ fastcall void __kprobes do_page_fault(st
 
 	/* get the address */
         address = read_cr2();
+	trace_special(regs->eip, address, error_code);
 
 	tsk = current;
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2006-05-31 16:08    [from the cache]
©2003-2008