fault in 1.3.80's plug code

Ulrich Windl (Ulrich.Windl@rz.uni-regensburg.de)
Thu, 4 Apr 1996 08:26:38 +0100


I have a CD with a bad spot on it; it produces read errors on my SCSI
CD-ROM drive. Unfortunately you can't abort a process that is reading
and retrying. How many retries will be done until the error is
returned to the calling process?

20:41:01 kernel: Disc change detected.
20:41:01 kernel: VFS: Disk change detected on device 0b:00
20:41:03 kernel: Max size:211625 Log zone size:2048
20:41:03 kernel: First datazone:28 Root inode number 57344
20:41:03 kernel: ISO9660 Extensions: RRIP_1991A
20:42:27 kernel: scsi0 channel 0 : resetting for second half of retries.
20:42:27 kernel: SCSI bus is being reset for host 0.
20:42:33 kernel: SCSI CD error : host 0 id 2 lun 0 return code = 18000002
20:42:33 kernel: Current error sr0b:00: sense key Medium Error
20:42:33 kernel: Additional sense indicates Circ unrecovered error
20:42:33 kernel: CD-ROM I/O error: dev 0b:00, sector 846496
20:42:39 kernel: scsi0 channel 0 : resetting for second half of retries.

Becoming bored I started a "ls" in another window, when the kernel
got a fault (BTW: Could we omit some multiple blanks in the register
dump, and could we print less addresses in one line of the stack dump?):

20:45:54 kernel: scsi0 channel 0 : resetting for second half of retries.
20:45:54 kernel: SCSI bus is being reset for host 0.
20:45:56 kernel: SCSI CD error : host 0 id 2 lun 0 return code = 18000002
20:45:56 kernel: Current error sr0b:00: sense key Medium Error
20:45:56 kernel: Additional sense indicates Circ unrecovered error
20:45:56 kernel: CD-ROM I/O error: dev 0b:00, sector 846502
20:45:56 kernel: general protection: 0000
20:45:56 kernel: CPU: 0
20:45:56 kernel: EIP: 0010:[<00198fbf>]
20:45:56 kernel: EFLAGS: 00010246
20:45:56 kernel: eax: bffffd9b ebx: 0025d098 ecx: 001eb030 edx: 0025d118
20:45:56 kernel: esi: 0000007f edi: bffffd9b ebp: 00000000 esp: 00d7ad98
20:45:56 kernel: ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
20:45:56 kernel: Process ls (pid: 85, process nr: 32, stackpage=00d7a000)
20:45:56 kernel: Stack: 0025d098 0000007f 00d7ae28 00000006 00000000 00000000 00000001 00000000
20:45:56 kernel: 001a7cc1 001eb030 bffffd9b 00000000 00000202 0000007f 00d7ae28 00d7ae14
20:45:56 kernel: 00000001 0016df9d 001c7344 0010ff60 001eb02c 01815400 0124c8c0 00d7ae28
20:45:56 kernel: Call Trace: [<001a7cc1>] [<0016df9d>] [<0010ff60>] [<0016e9fc>] [<00122685>] [<00123ac1>] [<00123d36>]
20:45:56 kernel: [<001669d2>] [<0012b67c>] [<00164f46>] [<00164efe>] [<00164f46>] [<00166e91>] [<0012b67c>] [<0012b7b7>]
20:45:56 kernel: [<0012b67c>] [<0010a429>]
20:45:56 kernel: Code: 8b 57 18 83 3d 54 73 1c 00 00 74 31 83 7a 24 00 74 11 a1 00
20:46:04 kernel: scsi0 channel 0 : resetting for second half of retries.
20:46:04 kernel: SCSI bus is being reset for host 0.

Running ksymoops I wondered in someone could add recognition of the
usual syslog format into ksymoops.

Using `../System.map' to map addresses to symbols.

>>EIP: 198fbf <allocate_device+5f/30c>
Trace: 1a7cc1 <do_sr_request+d9/174>
Trace: 16df9d <unplug_device+19/20>
Trace: 10ff60 <schedule+80/294>
Trace: 16e9fc <ll_rw_block+120/184>
Trace: 122685 <__wait_on_buffer+65/c4>
Trace: 123ac1 <__brelse+11/44>
Trace: 123d36 <breada+126/164>
Trace: 1669d2 <do_isofs_readdir+47a/8e4>
Trace: 12b67c <filldir>
Trace: 164f46 <isofs_lookup+18a/198>
Trace: 164efe <isofs_lookup+142/198>
Trace: 164f46 <isofs_lookup+18a/198>
Trace: 166e91 <isofs_readdir+55/78>
Trace: 12b67c <filldir>
Trace: 12b7b7 <sys_getdents+97/c8>
Trace: 12b67c <filldir>
Trace: 10a429 <system_call+59/a0>

Code: 198fbf <allocate_device+5f/30c> movl 0x18(%edi),%edx
Code: 198fc2 <allocate_device+62/30c> cmpl $0x0,0x1c7354
Code: 198fc9 <allocate_device+69/30c> je 198ffc <allocate_device+9c/30c>
Code: 198fcb <allocate_device+6b/30c> cmpl $0x0,0x24(%edx)
Code: 198fcf <allocate_device+6f/30c> je 198fe2 <allocate_device+82/30c>
Code: 198fd1 <allocate_device+71/30c> movl 0x90900000,%eax
Code: 198fd6 <allocate_device+76/30c> nop

Ulrich