2.0.4 - exploding sound module

David Monro (davidm@gh.cs.usyd.edu.au)
Wed, 10 Jul 1996 10:03:23 +1000 (EST)


Got 2.0.4, fixed the missing ';', compiled as a module, rebooted, and the sound
driver explodes. Now, the $64 question - how do I get the address=>symbol
mapping for a module which is half installed? The addresses don't appear in
/proc/ksyms, and the map from the module has all addresses starting from 0 of
course. I have attatched the message and the ksymoops output, such as it is,
just in case it helps somebody...

Interestingly enough, /dev/sndstat exists and works, but /dev/audio doesn't
exist. The output from /dev/sndstat is a little strange:

Sound Driver:3.5.4-960630 (Tue Jul 9 01:34:01 EST 1996 davidm,
Linux fuzzbox 2.0.0 #1 Mon Jun 10 17:05:02 EST 1996 i486)
Kernel: Linux fuzzbox 2.0.4 #1 Tue Jul 9 02:14:17 EST 1996 i486
Config options: 0

Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 3: ProAudioSpectrum
Type 2: Sound Blaster
Type 7: SB MPU-401

Card config:
(ProAudioSpectrum at 0x388 irq 5 drq 3)
Sound Blaster at 0x220 irq 5 drq 1,6
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0

Audio devices:

Synth devices:

Midi devices:

Timers:
0: System clock

Mixers:

So it found the cards but then didn't get to working out which devices went
where I suppose. (The ProAudioSpectrum code is in the module because I use this
module on multiple machines - this hasn't caused any trouble before).

Oh, the sound system is a SoundBlaster16 Value edition, set up for irq 5, dma
1/6, midi at 330, FM at 388 as per usual.

Hope this helps,

David

The message:
Oops: 0002
CPU: 0
EIP: 0010:[<0209e6d8>]
EFLAGS: 00010202
eax: 00000005 ebx: 00000000 ecx: ffffffdf edx: 00000000
esi: 00000000 edi: 00000005 ebp: 015ecd94 esp: 015ecd60
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process insmod (pid: 98, process nr: 12, stackpage=015ec000)
Stack: 00225658 000000ff 0010cd4d 00000005 00000000 015ecd94 015ecd94 00000005
00000000 00225658 0010bfb6 00000005 015ecd94 0019dbe0 ffffffdf 00108e00
00000005 00000000 00225658 00000000 00000018 000b0018 0040002b c20b002b
Call Trace: [<0010cd4d>] [<0010bfb6>] [<0010cee7>] [<02090010>] [<0209e6c4>]
[<0010cf58>] [<020b1000>]
[<020a86a8>] [<020a86a8>] [<0209471e>] [<0209e6c4>] [<020a7cfb>]
[<020b1000>] [<0209f2f6>] [<0209e6c4>]
[<020a7cfb>] [<0209e55a>] [<0209e51e>] [<020a86a8>] [<02094dff>]
[<020a86a8>] [<02094e49>] [<02094533>]
[<02094643>] [<0011f0d3>] [<02094664>] [<00114fa4>] [<00115190>]
[<0011fb0d>] [<020945c4>] [<02094664>]
[<001118b8>] [<001118f0>] [<0011795b>] [<0010aa52>]
Code: c7 43 40 01 00 00 00 85 db 0f 84 e4 00 00 00 39 43 24 0f 85
Aiee, killing interrupt handler

And the trace:
Using `/boot/newlinux.map' to map addresses to symbols.

Trace: 10cd4d <do_IRQ+2d/50>
Trace: 10bfb6 <IRQ5_interrupt+56/80>
Trace: 10cee7 <setup_x86_irq+127/130>
Trace: 2090010
Trace: 209e6c4
Trace: 10cf58 <request_irq+68/90>
Trace: 20b1000
Trace: 20a86a8
Trace: 20a86a8
Trace: 209471e
Trace: 209e6c4
Trace: 20a7cfb
Trace: 20b1000
Trace: 209f2f6
Trace: 209e6c4
Trace: 20a7cfb
Trace: 209e55a
Trace: 209e51e
Trace: 20a86a8
Trace: 2094dff
Trace: 20a86a8
Trace: 2094e49
Trace: 2094533
Trace: 2094643
Trace: 11f0d3 <kmalloc+143/220>
Trace: 2094664
Trace: 114fa4 <sys_init_module+214/440>
Trace: 115190 <sys_init_module+400/440>
Trace: 11fb0d <vmalloc+4d/80>
Trace: 20945c4
Trace: 2094664
Trace: 1118b8 <timer_bh+b8/150>
Trace: 1118f0 <timer_bh+f0/150>
Trace: 11795b <do_bottom_half+3b/70>
Trace: 10aa52 <system_call+52/80>

Code: movl $0x1,0x40(%ebx)
Code: testl %ebx,%ebx
Code: je 000000f3 <_EIP+f3>
Code: cmpl %eax,0x24(%ebx)
Code: jne 90909018 <_EIP+90909018>