process crash while it reads write on the USB HDD and it is plugs out.
Hi All,
I have arm based board with Linux kernel.
I connected a USB HDD (harddisk) to a usb port on the board and run a
Disk Performance test tool (process name: performancetest).
I observed that while the tool is running (i.e. reading and writing on the disk), If the usb disk is plugged out it crashes the process (performancetest) with "Bus Error". Traces also show the page fault occured.
Can you please answer the following questions.
1. Is it the correct behaviour, traces show that it is unhandled page fault, why it is unhandled page fault, why can't it be handled, shouldn't kernel handle it inside and return errors to read write system calls.
2. Or, Is it applications responsibility to implement relevant signal handler and kernel is doing its job correctly.
Pid: 139, comm: performancetest
CPU: 0
PC is at 0x31ab8
LR is at 0x14a9c
pc : [<00031ab8>] lr : [<00014a9c>] Tainted: P
sp : bedbe9b8 ip : 04000000 fp : 00013c18
r10: 00013c20 r9 : 00000079 r8 : 0008034c
r7 : 00008a00 r6 : 0008037c r5 : 0002c000 r4 : 000a4000
r3 : 0007f6c0 r2 : 00000000 r1 : 00080798 r0 : 000d0000
Flags: nzCv IRQs on FIQs on Mode USER_32 Segment user
Control: C5387F
Table: 6C2C4000 DAC: 00000015
[<c0021494>] (show_regs+0x0/0x50) from [<c00273ac>] (__do_user_fault+0x60/0xec)
r4 = CB734CE0
[<c002734c>] (__do_user_fault+0x0/0xec) from [<c00276ac>] (do_page_fault+0x1f8/0x228)
r7 = C06FE128 r6 = CB734CE0 r5 = 00031000 r4 = 00000001
[<c00274b4>] (do_page_fault+0x0/0x228) from [<c0027784>] (do_translation_fault+0x24/0xd4)
[<c0027760>] (do_translation_fault+0x0/0xd4) from [<c002784c>] (do_PrefetchAbort+0x18/0x1c)
r5 = 0002C000 r4 = FFFFFFFF
[<c0027834>] (do_PrefetchAbort+0x0/0x1c) from [<c001fde0>] (ret_from_exception+0x0/0x10)
[<c0024890>] (show_stack+0x0/0x48) from [<c00273b8>] (__do_user_fault+0x6c/0xec)
[<c002734c>] (__do_user_fault+0x0/0xec) from [<c00276ac>] (do_page_fault+0x1f8/0x228)
r7 = C06FE128 r6 = CB734CE0 r5 = 00031000 r4 = 00000001
[<c00274b4>] (do_page_fault+0x0/0x228) from [<c0027784>] (do_translation_fault+0x24/0xd4)
[<c0027760>] (do_translation_fault+0x0/0xd4) from [<c002784c>] (do_PrefetchAbort+0x18/0x1c)
r5 = 0002C000 r4 = FFFFFFFF
[<c0027834>] (do_PrefetchAbort+0x0/0x1c) from [<c001fde0>] (ret_from_exception+0x0/0x10)
-----------------------------------------------------------
* dump maps on pid (139)
-----------------------------------------------------------
00008000-00078000 r-xp 00000000 08:03 65 /mnt/performancetest1
0007f000-00080000 rw-p 0006f000 08:03 65 /mnt/performancetest1
00080000-000a4000 rwxp 00080000 08:03 65
40000000-40001000 rw-p 40000000 08:03 65
bedaa000-bedbf000 rwxp bedaa000 08:03 65
-----------------------------------------------------------
task stack info : pid(139) stack area (0xbedaa000 ~ 0xbedbf000)
scsi 0:0:0:0: rejecting I/O to dead device
scsi 0:0:0:0: rejecting I/O to dead device
[24] + Bus error ./performancetest1 Guide.avi all
Thanks & Regards
Nitin Arora
|