Re: BUG on 2.6.20-rc1 when using gdb

Dave Airlie
2006-12-20T00:53:48Z

On 12/20/06, Andrew Morton <akpm@osdl.org> wrote:
> > When I was using gdb to debug xchat-gnome, I got a kernel BUG and stack
> > trace as the program was running (e.g. I had typed 'run' in gdb):
> >
> > WARNING at kernel/softirq.c:137 local_bh_enable()
> > [<c0103cd6>] dump_trace+0x68/0x1d9
> > [<c0103e5f>] show_trace_log_lvl+0x18/0x2c
> > [<c01044d3>] show_trace+0xf/0x11
> > [<c010455e>] dump_stack+0x12/0x14
> > [<c011cc7d>] local_bh_enable+0x44/0x94
> > [<c02871b9>] unix_release_sock+0x6e/0x1fe
> > [<c02887eb>] unix_stream_connect+0x3b4/0x3cf
> > [<c0232dee>] sys_connect+0x82/0xad
> > [<c0233641>] sys_socketcall+0xac/0x261
> > [<c0102d38>] syscall_call+0x7/0xb
> > [<b7f70822>] 0xb7f70822
> > =======================
> > ------------[ cut here ]------------
> > kernel BUG at fs/buffer.c:1235!
> > invalid opcode: 0000 [#1]
> > PREEMPT
> > Modules linked in: binfmt_misc rfcomm l2cap i915 drm bluetooth nfs nfsd
> > exportfs lockd nfs_acl sunrpc nvram uinput ipv6 ppdev lp button ac
> > battery dm_crypt dm_snapshot dm_mirror dm_mod fuse cpufreq_conservative
> > cpufreq_ondemand cpufreq_performance cpufreq_powersave
> > speedstep_centrino freq_table ibm_acpi loop snd_intel8x0m snd_pcm_oss
> > snd_mixer_oss snd_intel8x0 snd_ac97_codec pcmcia ac97_bus irtty_sir
> > sir_dev ipw2200 snd_pcm snd_timer irda ieee80211 ieee80211_crypt
> > crc_ccitt rtc parport_pc parport 8250_pnp snd soundcore 8250_pci 8250
> > serial_core firmware_class i2c_i801 yenta_socket rsrc_nonstatic
> > pcmcia_core snd_page_alloc i2c_core intel_agp agpgart evdev tsdev joydev
> > ext3 jbd mbcache ide_cd cdrom ide_disk ide_generic e100 mii generic piix
> > ide_core ehci_hcd uhci_hcd usbcore
> > CPU: 0
> > EIP: 0060:[<c0179266>] Not tainted VLI
> > EFLAGS: 00010046 (2.6.20-rc1 #1)
> > EIP is at __find_get_block+0x1c/0x16f
> > eax: 00000086 ebx: 00000000 ecx: 00000000 edx: 0088a800
> > esi: 0088a800 edi: 00000000 ebp: dfffd040 esp: cad2dd30
> > ds: 007b es: 007b ss: 0068
> > Process xchat-gnome (pid: 4322, ti=cad2c000 task=d0cd3ab0
> > task.ti=cad2c000)
> > Stack: cad2dd58 c02caa0b 00000002 0000000e 0000000b 00000001 e8836580
> > 0088a800
> > 00000000 00000000 e8836610 00000000 c01793dc 00001000 c03ab3e0
> > f3cadd80
> > 00000086 c90d41b0 0088a800 00000000 dfffd040 00008000 00000000
> > 00000002
> > Call Trace:
> > [<c01793dc>] __getblk+0x23/0x268
> > [<f040d4c6>] ext3_getblk+0x10b/0x244 [ext3]
> > [<f040e364>] ext3_bread+0x19/0x70 [ext3]
> > [<f04106f3>] dx_probe+0x43/0x2c9 [ext3]
> > [<f04119b3>] ext3_htree_fill_tree+0x99/0x1ba [ext3]
> > [<f040ab77>] ext3_readdir+0x1d4/0x5ed [ext3]
> > [<c0167b29>] vfs_readdir+0x63/0x8d
> > [<c0167bb6>] sys_getdents64+0x63/0xa5
> > [<c0102d38>] syscall_call+0x7/0xb
> > [<b7f70822>] 0xb7f70822
> > =======================
> > Code: 8b 40 08 a8 08 74 05 e8 02 2f 11 00 5b 5e c3 55 89 c5 57 89 cf 56
> > 89 d6 53 83 ec 20 9c 58 90 8d b4 26 00 00 00 00 f6 c4 02 75 04 <0f> 0b
> > eb fe 89 e0 25 00 e0 ff ff ff 40 14 31 c9 8b 1c 8d a0 74
> > EIP: [<c0179266>] __find_get_block+0x1c/0x16f SS:ESP 0068:cad2dd30
> >
> > This happens on 2.6.20-rc1 but not 2.6.19.
> >
>
> And it's repeatable, yes?
>
> And you're sure that use of gdb triggers it?
>
> Something is forgetting to reenable local interrupts.

I've managed to get nearly the same thing on a test system I built
yesterday, my app when running under gdb would also blow up in
__find_get_block.

I was using close to Linus's git head...

Dave.