Oops fun

Evan Jeffrey (ejeffrey@eliot82.wustl.edu)
Sat, 17 May 1997 16:40:39 -0500

Linus said that to be a real man
you need the latest kernel there is
I download it as fast as I can
I am as bleeding edge as there is.

I booted it up and was off and running
it crashed like a windows pile of dung
yessiree, my computer was well hung!

Ok, I just got 2.1.38 from 'da site'(ftp.kernel.org) and had... problems.
First problem was, I tried to be a smartass and see what happens when you
execute the "vmlinux" file that make zImage creates in "/usr/src/linux" I
figgured "hey, it is marked as executable, file says it is an ELF
executable, lets see what happens." I was doing this as an unprivledged
user. Oops. The system died. As I mentioned, well hung.

Here is a copy of the oops from executing vmlinux (transcribed by hand):

general protection: 0000
CPU: 0
EIP: 0010:[<c01095f6>]
EFLAGS: 00010282
eax: 00000000 ebx: 08053510 ecx: 08053510 edx: 00000000
esi: 08053530 edi: bffffd3a ebp: bffffc28 esp: c0c1ffec
ds: 002b es: 002b ss: 0018
Process vmlinux (pid: 110, process nr: 37, stackpage=c0c1f000)
Stack: c0100000 00000023 00000282 bffffbb4 0000002b
Call Trace:
Code: cf 8d 36 8d b4 26 00 00 00 00 f7 44 24 30 00 00 02 00 54 75

that is in ret_with_reschedule, here is the disassembly of the function:

Dump of assembler code for function ret_with_reschedule:
0xc01095d1 <ret_with_reschedule>: cmpl $0x0,0xc01c5348
0xc01095d8 <ret_with_reschedule+7>: jne 0xc01096e0 <reschedule>
0xc01095de <ret_with_reschedule+13>: movl 0x10(%ebx),%eax
0xc01095e1 <ret_with_reschedule+16>: movl %eax,%esi
0xc01095e3 <ret_with_reschedule+18>: notl %eax
0xc01095e5 <ret_with_reschedule+20>: andl 0xc(%ebx),%eax
0xc01095e8 <ret_with_reschedule+23>: jne 0xc0109600 <signal_return>
0xc01095ea <ret_with_reschedule+25>: popl %ebx
0xc01095eb <ret_with_reschedule+26>: popl %ecx
0xc01095ec <ret_with_reschedule+27>: popl %edx
0xc01095ed <ret_with_reschedule+28>: popl %esi
0xc01095ee <ret_with_reschedule+29>: popl %edi
0xc01095ef <ret_with_reschedule+30>: popl %ebp
0xc01095f0 <ret_with_reschedule+31>: popl %eax
0xc01095f1 <ret_with_reschedule+32>: popl %ds
0xc01095f2 <ret_with_reschedule+33>: popl %es
0xc01095f3 <ret_with_reschedule+34>: addl $0x4,%esp
0xc01095f6 <ret_with_reschedule+37>: iret
0xc01095f7 <ret_with_reschedule+38>: leal (%esi),%esi
0xc01095f9 <ret_with_reschedule+40>: leal 0x0(%esi,1),%esi
End of assembler dump.

Evan Jeffrey