Messages in this thread | | | Date | Mon, 30 Nov 1998 20:12:03 +0100 (MET) | From | "Maciej W. Rozycki" <> | Subject | A 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
| |