1. 13 Jan, 2009 1 commit
  2. 06 Jan, 2009 1 commit
    • Arjan van de Ven's avatar
      scripts: script from kerneloops.org to pretty print oops dumps · 5aea50b5
      Arjan van de Ven authored
      
      We're struggling all the time to figure out where the code came from that
      oopsed..  The script below (a adaption from a script used by
      kerneloops.org) can help developers quite a bit, at least for non-module
      cases.
      
      It works and looks like this:
      
      [/home/arjan/linux]$ dmesg | perl scripts/markup_oops.pl vmlinux
       {
       	struct agp_memory *memory;
      
       	memory = agp_allocate_memory(agp_bridge, pg_count, type);
       c055c10f:	89 c2                	mov    %eax,%edx
       	if (memory == NULL)
       c055c111:	74 19                	je     c055c12c <agp_allocate_memory_wrap+0x30>
       /* This function must only be called when current_controller != NULL */
       static void agp_insert_into_pool(struct agp_memory * temp)
       {
       	struct agp_memory *prev;
      
       	prev = agp_fe.current_controller->pool;
       c055c113:	a1 ec dc 8f c0       	mov    0xc08fdcec,%eax
      *c055c118:	8b 40 10             	mov    0x10(%eax),%eax     <----- faulting instruction
      
       	if (prev != NULL) {
       c055c11b:	85 c0                	test   %eax,%eax
       c055c11d:	74 05                	je     c055c124 <agp_allocate_memory_wrap+0x28>
       		prev->prev = temp;
       c055c11f:	89 50 04             	mov    %edx,0x4(%eax)
       		temp->next = prev;
       c055c122:	89 02                	mov    %eax,(%edx)
       	}
       	agp_fe.current_controller->pool = temp;
       c055c124:	a1 ec dc 8f c0       	mov    0xc08fdcec,%eax
       c055c129:	89 50 10             	mov    %edx,0x10(%eax)
       	if (memory == NULL)
       		return NULL;
      
       	agp_insert_into_pool(memory);
      
      so in this case, we faulted while dereferencing agp_fe.current_controller
      pointer, and we get to see exactly which function and line it affects...
      Personally I find this very useful, and I can see value for having this
      script in the kernel for more-than-just-me to use.
      
      Caveats:
      * It only works for oopses not-in-modules
      * It only works nicely for kernels compiled with CONFIG_DEBUG_INFO
      * It's not very fast.
      * It only works on x86
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5aea50b5