RAWBInfo crash after ACTION_INFO
Posted: Sun Mar 04, 2012 12:24 am
I'm having an odd problem with WB Information and my handler.
As far as I can tell, RAWBInfo calls Info(), which sends my handler an ACTION_INFO packet, with a lock in Arg1 and a pointer to an InfoData structure in Arg2. I return what I'm pretty sure is the expected information, however RAWBInfo is crashing after it receives it (error code 80000003 - which I believe is "unaligned access"). It does not appear to send any other packets.
The only clue I have is that if I disable RAWBInfo, the built-in WB Information requester shows garbage for the volume name (although displays the same name perfectly on the window titlebar).
As Workbench itself calls ACTION_INFO repeatedly and displays the correct volume name on WB, I fail to see what can be wrong in my handler. If I set id_VolumeNode to NULL WB just displays the device name and filesystem ID, so I am confident it is getting the name from that pointer and that my DOSList contains the correct data.
This is what it is putting in InfoData:
And here is the crashlog for RAWBInfo (hopefully one of the devs can tell me what it is trying to do at the point it crashes):
As far as I can tell, RAWBInfo calls Info(), which sends my handler an ACTION_INFO packet, with a lock in Arg1 and a pointer to an InfoData structure in Arg2. I return what I'm pretty sure is the expected information, however RAWBInfo is crashing after it receives it (error code 80000003 - which I believe is "unaligned access"). It does not appear to send any other packets.
The only clue I have is that if I disable RAWBInfo, the built-in WB Information requester shows garbage for the volume name (although displays the same name perfectly on the window titlebar).
As Workbench itself calls ACTION_INFO repeatedly and displays the correct volume name on WB, I fail to see what can be wrong in my handler. If I set id_VolumeNode to NULL WB just displays the device name and filesystem ID, so I am confident it is getting the name from that pointer and that my DOSList contains the correct data.
This is what it is putting in InfoData:
Code: Select all
struct InfoData *info;
if(packet->dp_Type == ACTION_INFO) info = (struct InfoData *)BADDR(packet->dp_Arg2);
else info = (struct InfoData *)BADDR(packet->dp_Arg1);
info->id_NumSoftErrors = 0;
info->id_UnitNumber = 0;
info->id_DiskState = ID_VALIDATED;
info->id_NumBlocks = 0;
info->id_NumBlocksUsed = 0;
info->id_BytesPerBlock = 1;
info->id_DiskType = fs_id;
info->id_VolumeNode = MKBADDR(doslist);
info->id_InUse = 0;
Code: Select all
Crash log for task "Information..."
Generated by GrimReaper 53.2
Crash occured in module RAWBInfo at address 0x6F57D438
Type of crash: DSI (Data Storage Interrupt) exception
Register dump:
GPR (General Purpose Registers):
0: 00000039 55BFC8D0 00000000 0000180F 5700B9D0 55BFC8D8 00000001 8000000F
8: 8000000B 81A1D1D0 8000000A 20687474 00000001 00000000 00000000 00000000
16: 53910000 5390D03C 53910000 5390D03C 5C65FC25 542A290C 5B7CE010 00000001
24: 53910000 53910000 53910000 53910000 55BFCA00 546D1B34 5700B9D0 5741BC30
FPR (Floating Point Registers, NaN = Not a Number):
0: nan nan 1.39065e-309 2.72594e+197
4: -1.45594e-232 -1.45993e+44 -8.85e-167 -2.03651e+245
8: 1.42125e+119 -2.17935e+110 2.03821e+149 0
12: 0 0 0 0
16: 0 0 0 0
20: 0 5.30499e-315 0 0
24: 0 0 0 -2.97403e+284
28: 0 0 0 -1.13339e+280
FPSCR (Floating Point Status and Control Register): 0x82004000
SPRs (Special Purpose Registers):
Machine State (msr) : 0x0002F030
Condition (cr) : 0x44422024
Instruction Pointer (ip) : 0x6F57D438
Xtended Exception (xer) : 0x00000004
Count (ctr) : 0x01416208
Link (lr) : 0x6F57D3B8
DSI Status (dsisr) : 0x00000000
Data Address (dar) : 0x81A1D1D0
680x0 emulated registers:
DATA: 00000000 0000009A 00000000 00000000 00000000 00000000 00000000 00000000
ADDR: 00000000 55939620 00000000 00000000 00000000 00000000 00000000 55BFC8C0
FPU0: 0 0 0 0
FPU4: 0 0 0 0
Symbol info:
Instruction pointer 0x6F57D438 belongs to module "RAWBInfo" (HUNK/Kickstart)
Stack trace:
module RAWBInfo at 0x6F57D438 (section 5 @ 0x14418)
module RAWBInfo at 0x6F56B218 (section 5 @ 0x21F8)
module RAWBInfo at 0x6F570DF4 (section 5 @ 0x7DD4)
module RAWBInfo at 0x6F571270 (section 5 @ 0x8250)
module LIBS:workbench.library at 0x6FF175F4 (section 5 @ 0x615D4)
module LIBS:workbench.library at 0x6FEF2E54 (section 5 @ 0x3CE34)
native kernel module dos.library.kmod+0x00022a0c
native kernel module kernel+0x0003af48
native kernel module kernel+0x0003afc8
PPC disassembly:
6f57d430: 817e0004 lwz r11,4(r30)
6f57d434: 5569103a rlwinm r9,r11,2,0,29
*6f57d438: 88090000 lbz r0,0(r9)
6f57d43c: 2f800000 cmpwi cr7,r0,0
6f57d440: 41beff80 beq- cr7,0x6F57D3C0