lkml.org 
[lkml]   [1998]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectA repeatable Oops on Alpha/2.1.129 in scsi_proc_fill_inode
Hi,

Almost every morning I arrive at my Alpha/Linux machine I see a nice Oops
on the console coming from `updatedb' being run at night. Well, it's not
a standard Oops as it looks like an unaligned access. But normal
unaligned accesses are emulated and not reported like this. So I presume,
the emulation fails due to protection checks -- almost the same symptoms
may be reproduced in user level -- when an unaligned access hits
unaccessible memory it's unalignment being reported and not the fact of
memory protection violation.

Anyway, attached there is a decoded (thanks for a great work, Keith
Owens) kernel report and an output of the relevant part of `objdump -S' of
scsi_proc.o (in case someone is interested what actually that nice Alpha
assembler code means) -- a series of caret (^) characters helps finding
the problematic opcode.

Here is the SCSI-related part of .config:

CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_PPA=m
CONFIG_SCSI_PPA_HAVE_PEDANTIC=y
CONFIG_SCSI_IMM=m
CONFIG_SCSI_NCR53C8XX=y
CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=0
CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
CONFIG_SCSI_NCR53C8XX_SYNC=40

Note that it happens when accessing a NCR-hosted hard disk.

The compiler version is: "gcc version egcs-2.91.57 19980901 (egcs-1.1
release)" -- it seems to be stable on Alpha -- unlike gcc 2.7.x it did not
yet proved it can produce bogus code for me here.

I may provide any further details if needed.

Maciej

--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
Options used: -v /usr/src/linux-2.1.129-srm-setup/vmlinux (specified)
-o /lib/modules/2.1.129 (specified)
-k /proc/ksyms (specified)
-l /proc/modules (specified)
-m /boot/System.map-2.1.129 (specified)
-c 4 (default)

find: Exception at [<fffffc000031155c>] (fffffc000031156c)
pc = [<fffffc00003db46c>] ra = [<fffffc000036b4b4>] ps = 0000
r0 = fffffc00021770d8 r1 = fffc0000442358ff r2 = 0000000000000000
r3 = fffffc000045eaf0 r4 = 0000000000000400 r5 = 0000000000000fff
r6 = 0000000000000117 r7 = 0000000000000001 r8 = fffffc000059c000
r9 = fffffc0000439b98 r10= fffffc00021770d8 r11= fffffc0000537800
r12= fffffc0003585500 r13= ffffffffffffffea r14= 0000000000000000
r15= 0000000000000015
r16= fffffc00021770d8 r17= 0000000000000001 r18= 0000000000000000
r19= 00000001201172d0 r20= 0000000000000001 r21= fffffc0000000000
r22= 0000000000000004 r23= 0000000000000000 r24= 0000000000000080
r25= 0000000000000001 r27= fffffc00003db45f r28= 0000000000000a24
gp = fffffc00004420b7 sp = fffffc000059fdf8
Trace: [<fffffc000036bfb8>] [<fffffc0000348310>] [<fffffc0000348654>] [<fffffc00003487ac>] [<fffffc000034562c>] [<fffffc0000310b88>] [<fffffc0000310ae0>]
Code: 27bb0006 23bd6c58 a43d9e18 <a4610000> e460001c a6100030 47ff041f 2fe00000 a4430010

>>EIP: fffffc00003db46c <scsi_proc_fill_inode+c/a0>
Trace: fffffc000036bfb8 <proc_lookup+d8/140>
Trace: fffffc0000348310 <real_lookup+b0/140>
Trace: fffffc0000348654 <lookup_dentry+1d4/2e0>
Trace: fffffc00003487ac <__namei+4c/c0>
Trace: fffffc000034562c <sys_newlstat+2c/c0>
Trace: fffffc0000310b88 <entSys+a8/c0>
Trace: fffffc0000310ae0 <entSys+0/c0>
Code: fffffc00003db460 <scsi_proc_fill_inode+0/a0> 0000000000000000 <_EIP>:
Code: fffffc00003db460 <scsi_proc_fill_inode+0/a0> 0: 06 00 bb 27 ldah gp,6(t12)
Code: fffffc00003db464 <scsi_proc_fill_inode+4/a0> 4: 58 6c bd 23 lda gp,27736(gp)
Code: fffffc00003db468 <scsi_proc_fill_inode+8/a0> 8: 18 9e 3d a4 ldq t0,-25064(gp)
Code: fffffc00003db46c <scsi_proc_fill_inode+c/a0> c: 00 00 61 a4 ldq t2,0(t0)
Code: fffffc00003db470 <scsi_proc_fill_inode+10/a0> 10: 1c 00 60 e4 beq t2,84 <_EIP+0x84> fffffc00003db4e4 <scsi_proc_fill_inode+84/a0>
Code: fffffc00003db474 <scsi_proc_fill_inode+14/a0> 14: 30 00 10 a6 ldq a0,48(a0)
Code: fffffc00003db478 <scsi_proc_fill_inode+18/a0> 18: 1f 04 ff 47 nop
Code: fffffc00003db47c <scsi_proc_fill_inode+1c/a0> 1c: 00 00 e0 2f unop
Code: fffffc00003db480 <scsi_proc_fill_inode+20/a0> 20: 10 00 43 a4 ldq t1,16(t2)

drivers/scsi/scsi_proc.o: file format elf64-alpha

Disassembly of section .text:

00000000000001e0 <scsi_proc_fill_inode>:
1e0: 00 00 bb 27 ldah gp,0(t12)
1e4: 00 00 bd 23 lda gp,0(gp)

static void scsi_proc_fill_inode(struct inode *inode, int fill)
{
Scsi_Host_Template *shpnt;

shpnt = scsi_hosts;
1e8: 00 00 3d a4 ldq t0,0(gp)
1ec: 00 00 61 a4 ldq t2,0(t0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
while (shpnt && shpnt->proc_dir->low_ino != inode->i_ino)
1f0: 1c 00 60 e4 beq t2,264 <scsi_proc_fill_inode+0x84>
1f4: 30 00 10 a6 ldq a0,48(a0)
1f8: 1f 04 ff 47 nop
1fc: 00 00 e0 2f unop
200: 10 00 43 a4 ldq t1,16(t2)
204: 00 00 22 a0 ldl t0,0(t1)
208: 21 76 20 48 zapnot t0,0x3,t0
20c: a1 05 30 40 cmpeq t0,a0,t0
210: 02 00 20 f4 bne t0,21c <scsi_proc_fill_inode+0x3c>
shpnt = shpnt->next;
214: 00 00 63 a4 ldq t2,0(t2)
218: f9 ff 7f f4 bne t2,200 <scsi_proc_fill_inode+0x20>
if (!shpnt || !shpnt->module)
21c: 11 00 60 e4 beq t2,264 <scsi_proc_fill_inode+0x84>
220: 08 00 43 a4 ldq t1,8(t2)
224: 0f 00 40 e4 beq t1,264 <scsi_proc_fill_inode+0x84>
return;
if (fill)
228: 07 00 20 e6 beq a1,248 <scsi_proc_fill_inode+0x68>
__MOD_INC_USE_COUNT(shpnt->module);
22c: 20 00 22 a4 ldq t0,32(t1)
230: 01 34 20 40 addq t0,0x1,t0
234: 20 00 22 b4 stq t0,32(t1)
238: 08 00 63 a4 ldq t2,8(t2)
23c: 28 00 43 a4 ldq t1,40(t2)
240: 02 14 43 44 or t1,0x18,t1
244: 06 00 e0 c3 br 260 <scsi_proc_fill_inode+0x80>
else
__MOD_DEC_USE_COUNT(shpnt->module);
248: 20 00 22 a4 ldq t0,32(t1)
24c: 21 35 20 40 subq t0,0x1,t0
250: 20 00 22 b4 stq t0,32(t1)
254: 08 00 63 a4 ldq t2,8(t2)
258: 28 00 43 a4 ldq t1,40(t2)
25c: 02 14 41 44 or t1,0x8,t1
260: 28 00 43 b4 stq t1,40(t2)
}
264: 01 80 fa 6b ret zero,(ra),0x1
268: 1f 04 ff 47 nop
26c: 00 00 e0 2f unop
270: 1f 04 ff 47 nop
274: 00 00 e0 2f unop
278: 1f 04 ff 47 nop
27c: 00 00 e0 2f unop
\
 
 \ /
  Last update: 2005-03-22 13:45    [W:0.024 / U:1.908 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site