console oopses

Gerd Knorr (kraxel@goldbach.isdn.cs.tu-berlin.de)
Tue, 11 Aug 1998 09:13:36 +0200 (CEST)


On Mon, 10 Aug 1998, Shawn Leas wrote:

> > > This patch causes me major oopsing... I have a ksymoops'ed, and raw, and
> > > an strace of an offending zsh process that did it. Every time I tried to
> > > do a history search, it oopsed. Sometimes oopsed maniacally on shutdown.
> >
> > What does vesafb say at startup?
>
> Aug 9 19:10:46 cerebro kernel: vesafb: framebuffer at 0xf6000000, mapped to 0xc4800000, size 4096k
> Aug 9 19:10:46 cerebro kernel: vesafb: mode is 1024x768x8, linelength=1024, pages=4
> Aug 9 19:10:46 cerebro kernel: vesafb: protected mode interface info at c000:4d86
> Aug 9 19:10:46 cerebro kernel: vesafb: pmi: set display start = c00c4dad, set palette = c00c4e0f
> Aug 9 19:10:46 cerebro kernel: vesafb: pmi: ports = 3b4 3b5 3ba 3c0 3c1 3c4 3c5 3c6 3c7 3c8 3c9 3cc 3ce 3cf 3d0 3d1 3d2 3d3 3d4 3d5 3da , memory =
> Aug 9 19:10:46 cerebro kernel: vesafb: scrolling: ypan using protected mode interface, yres_virtual=4096

nothing special...

> > > >>EIP: c018839f <write_chan+14f/1e8>
> > > Trace: c011bc4e <handle_mm_fault+c2/148>
> > > Trace: c0179839 <tty_write+10d/15c>
> > > Trace: c018839f <write_chan+14f/1e8>
> > > Trace: c0124f50 <sys_write+c0/124>
> > > Trace: c010a9c0 <system_call+34/38>
> >
> > No fbcon here. Hmm, maybe the patch triggers some race in tty/console
> > code?
>
> I guess I have no special insight into this area. want me to do some
> tests? I'd be quite willing.

I think it is'nt vesafb itself what produces an oops. I suspect the
changed timing (due to faster scrolling) triggers something else in the
console/tty layer. I've seen other console oops reports too. Had one
myself (with emacs), which looks much like yours (see the last 4 lines
are common):

EIP: 0x00000000 ???
trace: 0xc0173852 t con_put_char+0x1e/0x28
trace: 0xc0178503 t opost+0x1b3/0x1c0
trace: 0xc017a330 t write_chan+0x110/0x1d4
trace: 0xc0176371 t tty_write+0x115/0x164
trace: 0xc017a220 t write_chan+0x0/0x1d4
trace: 0xc0125418 T sys_write+0xb4/0x10c
trace: 0xc010acd0 T system_call+0x34/0x38

Just don't know how to track this one down. To me it looks like
con_put_char called some NULL function-pointer, which is hardly possible.
con_put_char is just this:

static void con_put_char(struct tty_struct *tty, unsigned char ch)
{
do_con_write(tty, 0, &ch, 1);
}

Some hints anybody?

Gerd

--------------------------------------------------------------------
complete oops:

Unable to handle kernel NULL pointer dereference at virtual address 00000000
current->tss.cr3 = 0326f000, %cr3 = 0326f000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<00000000>]
EFLAGS: 00010603
eax: 00000000 ebx: 00000000 ecx: 00000000 edx: 081b97df
esi: 00000000 edi: 00000000 ebp: c2143ef4 esp: c2143ee0
ds: 0018 es: 0018 ss: 0018
Process emacs (pid: 871, process nr: 38, stackpage=c2143000)
Stack: 2d483931 65707974 355b1b73 3a682e40 090a3432 6d6d0809 483900ff 70790000
00000000 00000000 00000001 00000001 c0173852 c35eb000 00000000 c2143f28
00000000 091b0a4b c0178503 c35eb000 00000009 00000037 081b97a8 c35eb000
Call Trace: [<c0173852>] [<c0178503>] [<c017a330>] [<c0176371>] [<c017a220>] [<c0125418>] [<c010acd0>]
Code: <1>Unable to handle kernel NULL pointer dereference at virtual address 00000000
current->tss.cr3 = 0326f000, %cr3 = 0326f000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c010b17f>]
EFLAGS: 00010086
eax: 00000000 ebx: 00000000 ecx: c3e38000 edx: c01a9d98
esi: 0000002b edi: c2144000 ebp: c4800000 esp: c2143e1c
ds: 0018 es: 0018 ss: 0018
Process emacs (pid: 871, process nr: 38, stackpage=c2143000)
Stack: c2143ea4 c3419340 0000000b 00000000 00000000 c2143ef4 00000000 00000000
00000000 081b97df 00000000 00010603 c4800000 c5000000 c010b1e0 c2143ea4
c01918ff c019283f 00000000 00000000 c01101d6 c019283f c2143ea4 00000000
Call Trace: [<c4800000>] [<c5000000>] [<c010b1e0>] [<c01918ff>] [<c019283f>] [<c01101d6>] [<c019283f>]
[<c010ae04>] [<c0173852>] [<c0178503>] [<c017a330>] [<c0176371>] [<c017a220>] [<c0125418>] [<c010acd0>]
Code: 0f b6 0c 03 89 4c 24 38 51 68 f7 18 19 c0 e8 16 95 00 00 83
3741 symbols from /boot/System.map-2.1.115-9

EIP: 0x00000000 ???
trace: 0xc0173852 t con_put_char+0x1e/0x28
trace: 0xc0178503 t opost+0x1b3/0x1c0
trace: 0xc017a330 t write_chan+0x110/0x1d4
trace: 0xc0176371 t tty_write+0x115/0x164
trace: 0xc017a220 t write_chan+0x0/0x1d4
trace: 0xc0125418 T sys_write+0xb4/0x10c
trace: 0xc010acd0 T system_call+0x34/0x38

EIP: 0xc010b17f t show_registers+0x26b/0x29c
trace: 0xc4800000 ???
trace: 0xc5000000 ???
trace: 0xc010b1e0 T die+0x30/0x38
trace: 0xc01918ff T stext_lock+0x10ff/0x12df8
trace: 0xc019283f T stext_lock+0x203f/0x12df8
trace: 0xc01101d6 T do_page_fault+0x30e/0x318
trace: 0xc019283f T stext_lock+0x203f/0x12df8
trace: 0xc010ae04 t error_code+0x30/0x38
trace: 0xc0173852 t con_put_char+0x1e/0x28
trace: 0xc0178503 t opost+0x1b3/0x1c0
trace: 0xc017a330 t write_chan+0x110/0x1d4
trace: 0xc0176371 t tty_write+0x115/0x164
trace: 0xc017a220 t write_chan+0x0/0x1d4
trace: 0xc0125418 T sys_write+0xb4/0x10c
trace: 0xc010acd0 T system_call+0x34/0x38
code: 00000000 <oops>:
code: 0: 0f b6 0c 03 movzbl (%ebx,%eax,1),%ecx
code: 4: 89 4c 24 38 movl %ecx,0x38(%esp,1)
code: 8: 51 pushl %ecx
code: 9: 68 f7 18 19 c0 pushl $0xc01918f7
code: e: e8 16 95 00 00 call 9529 <main+0x9529>
code: 13:

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html