Oops! [2.1.95]

James Mastros (root@jennifer-unix.dyn.ml.org)
Sun, 12 Apr 1998 13:40:18 -0400 (EDT)


I just got an oops while reading my mail in pine! I've been running a
clean 2.1.95 (well, nearly clean -- there are a few minor changes -- all
of which are meaningless with the config that I compiled this kernel
with) with few problems (kmod and parport modules not mixing well). It
was somwhat odd in that:
1) I was interacting with pine, but the oops was with the bash underneath
it.
2) Pine was still up and running afterwords, but didn't appear to get any
input from the keybord -- though it still checked my mail spool every 15
seconds, as I told it.
3) I now note the following from ps x -- GACH! They aren't there
anymore! Anyway, there was the login shell on vt1 in "D" state, as was
another bash with a long commandline with some odd charset names in it...
wish I had it around somwhere. It was also in "D".
4) Pine seemed to exit cleanly when I killed it (SIGTERM), and then I got
more or less my normal prompt -- "13:10:41:root:/proc/parport/0->pine" --
at the upper-left corner of an otherwise blank screen. But then I just
seem to get character echo.
5) I think I just figgured out part of the cause: while pine was running
with cwd=/proc/parport/0, the parport modules were unloaded (manualy, not
via kmod). Why, however, it waited untill I read that piticular message,
I have no idea (it was a large message, but...)

Well, here it is -- I removed the pine from underneath it by hand.

shell-init: could not get current directory: getcwd: cannot access parent
directories
Unable to handle kernel paging request at virtual address 1a2e9b37
current->tss.cr3 = 002d3000, %cr3 = 002d3000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c0148220>]
EFLAGS: 00010202
eax: 00000000 ebx: 1a2e9b37 ecx: 0000c03d edx: c19125a0
esi: c17d9f8c edi: c190f700 ebp: c190f700 esp: c17d9f40
ds: 0018 es: 0018 ss: 0018
Process sh (pid: 4218, process nr: 38, stackpage=c17d9000)
Stack: c19125a0 c17d9f8c c190f700 c028be00 fffffffe c012b967 c190f700
c19125a0
00000000 c17d9f8c c1f90004 c012bb7c c028be00 c17d9f8c c1f90000
bffff83c 00000001 bffff87c 00010000 c1f90002 00000002
00000758
c012bc10 c1f90000
Call Trace: [<c012b967>] [<c012bb7c>] [<c012bc10>] [<c0129a1a>]
[<c0109aa8>]
Code: 66 83 3b 00 74 46 31 c9 66 8b 4b 02 8b 54 24 1c 39 4a 44 75
shell-init: could not get current directory: getcwd: cannot access parent

And here is the translation (from module-oops -- I can't get ksymoops to
compile):
3646 symbols from /boot/System.map-2.1.95

EIP: 0xc0148220 T proc_lookup+0x4c/0xd0
trace: 0xc012b967 t real_lookup+0x47/0x70
trace: 0xc012bb7c T lookup_dentry+0x15c/0x1c4
trace: 0xc012bc10 T __namei+0x2c/0x80
trace: 0xc0129a1a T sys_newstat+0xe/0x60
trace: 0xc0109aa8 T system_call+0x38/0x40
code: 00000000 <oops> cmpw $0x0,(%ebx)
code: 00000004 <oops+4> je 0000004c <main+4c>
code: 00000006 <oops+6> xorl %ecx,%ecx
code: 00000008 <oops+8> movw 0x2(%ebx),%cx
code: 0000000c <oops+c> movl 0x1c(%esp,1),%edx
code: 00000010 <oops+10> cmpl %ecx,0x44(%edx)
code: 00000013 <oops+13>

Didn't we add refcounting to /proc directories a couple of months ago to
handle such situations? I could of sworn that it was in there, but I
can't find it.

-=- James Mastros

-- 
Where do you want to go today?
We might support that somtime next year.
	-=- Microsoft
(But I dought it.)
	-=- Me

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu