Re: [PATCH] race condition in procfs
From: Steven Rostedt
Date: Wed Nov 30 2005 - 11:25:34 EST
(Andrew, this will be the last email that I include you on. I'm taking
you off unless you want to stay on this thread, and say so. I figure
that you get enough spam without having to read through this. I'll
obviously add you back if this results in a patch.)
On Wed, 2005-11-30 at 16:29 +0100, Grzegorz Nosek wrote:
> 2005/11/30, Steven Rostedt <rostedt@xxxxxxxxxxx>:
> >
> > OK, Remove your patches, run the system where you can capture the log,
> > and provide a full output of the oops. Make sure you have
> > CONFIG_KALLSYMS set.
> >
>
> OK, attached an oops from netconsole.
>
The oops happened at address a01b50eb. Could you go into the compiled
directory run gdb on vmlinux and type li *0xa01b50eb and show what you
get.
For example:
~/work/ernie/linux-2.6.15-rc2-git5$ gdb vmlinux
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-linux"...Using host libthread_db library "/lib/tls/libthread_db.so.1".
(gdb) li *0xc01019e0
0xc01019e0 is in sys_clone (arch/i386/kernel/process.c:768).
763 {
764 return do_fork(SIGCHLD, regs.esp, ®s, 0, NULL, NULL);
765 }
766
767 asmlinkage int sys_clone(struct pt_regs regs)
768 {
769 unsigned long clone_flags;
770 unsigned long newsp;
771 int __user *parent_tidptr, *child_tidptr;
772
(gdb)
Obviously, use "li *0xa01b50eb" instead of 0xc01019e0.
Now if you get an error in starting gdb like:
$ gdb vmlinux
GNU gdb 6.3.90_20051119-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...(no debugging symbols found)
Using host libthread_db library "/lib/tls/libthread_db.so.1".
(gdb) li *0xa01b50eb
No symbol table is loaded. Use the "file" command.
(gdb)
Notice the (no debugging symbols found). Then start up make menuconfig,
goto "Kernel Hacking", set "Kernel Debugging" and "Compile the kernel
with debug info". And try again. It may also be helpful to have
"Compile the kernel with frame pointers" also set. If you do this, you
will probably need to use something other than the 0xa01b50eb. Look at
the output of the oops and see the following:
Nov 27 00:15:26 s35 [43281574.240000] CPU: 1
Nov 27 00:15:26 s35 [43281574.240000] EIP: 0060:[<a01b50eb>] Not tainted VLI
Nov 27 00:15:26 s35 [43281574.240000] EFLAGS: 00010257 (2.6.14.2amd64smp.17)
That EIP is what I want.
-- Steve
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/