内核初始化期间崩溃(模块insmod)

时间:2021-10-21 16:53:56

Im using Monta-Vista Linux 2.6.10. During kernel initialization, while registering my modules with "insmod", the following kernel dump happens after rebooting 7,000 times.

我使用的是Monta-Vista Linux 2.6.10。在内核初始化期间,在使用“insmod”注册模块时,重启7000次后会发生以下内核转储。

DMY Touch Panel Filter Driver Version Ver.1.0.0 Major=200
usbdmy_init
DMY USB-Driver Ver.1.0.5
usbdmy_probe vendor=$afa product=$3e8
usbdmy_probe: endpoint irq-in 1 ,interval=1
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c7a28000
[00000000] *pgd=a79fd031, *pte=00000000, *ppte=00000000
Internal error: Oops: 817 [#1]
Modules linked in: usbdmy tpdmy
CPU: 0
PC is at __free_pages+0x24/0x64
LR is at free_task+0x1c/0x34
pc : [<c005df04>]    lr : [<c003833c>]    Tainted: P
sp : c7e51eb0  ip : c7e51ec0  fp : c7e51ebc
r10: c7ddf3c8  r9 : 00000005  r8 : 00000000
r7 : 00000000  r6 : c7e50000  r5 : c7ddf320  r4 : c7ddf320
r3 : ffffffff  r2 : 00000000  r1 : 00000001  r0 : c03eb900
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: 397F  Table: A7A28000  DAC: 00000015
Process default.hotplug (pid: 953, stack limit = 0xc7e501b0)
Stack: (0xc7e51eb0 to 0xc7e52000)
1ea0:                                     c7e51ed4 c7e51ec0 c003833c c005deec
1ec0: c7ddf320 c7ddf320 c7e51efc c7e51ed8 c003c924 c003832c c785e6c0 000003ba
1ee0: c7ddf320 c7e50000 c7ddf320 00000000 c7e51f84 c7e51f00 c003efbc c003c7b8
1f00: c785e6c0 4000cba4 c7a28000 00000000 c7a28000 c7861b60 00000000 c7861ac0
1f20: 7efff034 ffffffff 00000000 c7861ac0 c0036dec 00000000 00000000 c7e51f48
1f40: 00000000 c7861ac0 c0036dec c7861bc4 c7861bc4 c7e51fb0 00000001 ffffffea
1f60: 7efff034 ffffffff 00000072 c00231f4 c7e50000 00900072 c7e51fa4 c7e51f88
1f80: c003f404 c003e6a0 00000000 ffffffff c7e51fec 00000001 00000000 c7e51fa8
1fa0: c0022a60 c003f3d8 00000001 7efff034 ffffffff 7efff034 00000001 00000000
1fc0: 00000001 7efff034 ffffffff 000b4388 00000000 ffffffff 00000000 00000000
1fe0: 40018d30 7efff000 400f67a0 400f67c0 60000010 ffffffff 00000000 00000000
Backtrace:
[<c005dee0>] (__free_pages+0x0/0x64) from [<c003833c>] (free_task+0x1c/0x34)
[<c0038320>] (free_task+0x0/0x34) from [<c003c924>] (release_task+0x178/0x188)
 r4 = C7DDF320
[<c003c7ac>] (release_task+0x0/0x188) from [<c003efbc>] (do_wait+0x928/0xca8)
 r8 = 00000000  r7 = C7DDF320  r6 = C7E50000  r5 = C7DDF320
 r4 = 000003BA
[<c003e694>] (do_wait+0x0/0xca8) from [<c003f404>] (sys_wait4+0x38/0x4c)
[<c003f3cc>] (sys_wait4+0x0/0x4c) from [<c0022a60>] (ret_fast_syscall+0x0/0x2c)
 r4 = 00000001
Code: e2132001 189da800 e5903004 e3730001 (05822000)
 prev->state: 2 != TASK_RUNNING??
default.hotplug/953: BUG in __schedule at kernel/sched.c:2905
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c7a3c000
[00000000] *pgd=a79a6031, *pte=00000000, *ppte=00000000
Internal error: Oops: 817 [#2]
Modules linked in: usbdmy tpdmy
CPU: 0
PC is at __free_pages+0x24/0x64
LR is at free_task+0x1c/0x34
pc : [<c005df04>]    lr : [<c003833c>]    Tainted: P
sp : c7a27eb0  ip : c7a27ec0  fp : c7a27ebc
r10: c7861b68  r9 : 00000005  r8 : 00000000
r7 : 00000000  r6 : c7a26000  r5 : c7861ac0  r4 : c7861ac0
r3 : ffffffff  r2 : 00000000  r1 : 00000001  r0 : c03ebfc0
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: 397F  Table: A7A3C000  DAC: 00000015
Process default.hotplug (pid: 948, stack limit = 0xc7a261b0)
Stack: (0xc7a27eb0 to 0xc7a28000)
7ea0:                                     c7a27ed4 c7a27ec0 c003833c c005deec
7ec0: c7861ac0 c7861ac0 c7a27efc c7a27ed8 c003c924 c003832c c0016040 000003cb
7ee0: c7861ac0 c7a26000 c7861ac0 00000000 c7a27f84 c7a27f00 c003efbc c003c7b8
7f00: 00000000 00000001 c7a3c000 00000000 c7a3c000 c7ddf140 00000000 c7ddf0a0
7f20: 7efff684 ffffffff 00000000 c7ddf0a0 c0036dec 00000000 00000000 c7a27f48
7f40: 00000000 c7ddf0a0 c0036dec c7ddf1a4 c7ddf1a4 c7a27fb0 00000000 ffffffea
7f60: 7efff684 ffffffff 00000072 c00231f4 c7a26000 00900072 c7a27fa4 c7a27f88
7f80: c003f404 c003e6a0 00000000 ffffffff c7a27fec 00000001 00000000 c7a27fa8
7fa0: c0022a60 c003f3d8 00000001 7efff684 ffffffff 7efff684 00000001 00000000
7fc0: 00000001 7efff684 ffffffff 00000003 00000000 00000001 00000003 00000000
7fe0: 40018d30 7efff650 400f67a0 400f67c0 60000010 ffffffff 763074f6 0000023c
Backtrace:
[<c005dee0>] (__free_pages+0x0/0x64) from [<c003833c>] (free_task+0x1c/0x34)
[<c0038320>] (free_task+0x0/0x34) from [<c003c924>] (release_task+0x178/0x188)
 r4 = C7861AC0
[<c003c7ac>] (release_task+0x0/0x188) from [<c003efbc>] (do_wait+0x928/0xca8)
 r8 = 00000000  r7 = C7861AC0  r6 = C7A26000  r5 = C7861AC0
 r4 = 000003CB
[<c003e694>] (do_wait+0x0/0xca8) from [<c003f404>] (sys_wait4+0x38/0x4c)
[<c003f3cc>] (sys_wait4+0x0/0x4c) from [<c0022a60>] (ret_fast_syscall+0x0/0x2c)
 r4 = 00000001
Code: e2132001 189da800 e5903004 e3730001 (05822000)
 prev->state: 2 != TASK_RUNNING??
default.hotplug/948: BUG in __schedule at kernel/sched.c:2905
usbdmy_specify : len=2 data=$06 $00
drivers/usb/core/file.c: looking for a minor, starting at 181
Unable to handle kernel paging request at virtual address 0000a000
pgd = c0004000
[0000a000] *pgd=00000000
Internal error: Oops: 817 [#3]
Modules linked in: usbdmy tpdmy
CPU: 0
PC is at memcpy+0x5c/0x5a0
LR is at copy_process+0xbc/0xe14
pc : [<c010a4bc>]    lr : [<c0039300>]    Tainted: P
sp : c0467e0c  ip : 00000000  fp : c0467e34
r10: 00804111  r9 : 00000000  r8 : 00000000
r7 : 00000000  r6 : 00000000  r5 : 00000000  r4 : 00000000
r3 : 00000000  r2 : 00000030  r1 : c0466120  r0 : 00009ff4
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  Segment kernel
Control: 397F  Table: A7A38000  DAC: 00000017
Process khelper (pid: 5, stack limit = 0xc04661b0)
Stack: (0xc0467e0c to 0xc0468000)
7e00:                            00009ef4 c7ddfd20 c042f2c0 00009ef4 c0466000
7e20: fffffff4 c02d8388 c0467e7c c0467e38 c0039300 c010a46c 00000000 c0467ed8
7e40: 00000000 00000000 c0467ed8 00000000 00200200 00000000 00804111 000003cc
7e60: c0466000 00000000 00000000 c0467ed8 c0467ecc c0467e80 c003a1c4 c0039250
7e80: 00000000 00000000 000003cc c0467e98 00000000 c0467e94 c0467e94 c7ddfaa0
7ea0: c0467ecc 00804111 c0467ed8 c7a01d60 c004c548 c0431ec0 c7a01d60 c0431ec8
7ec0: c0467f3c c0467ed0 c002557c c003a100 00000000 00000000 00000000 c7a01d60
7ee0: c004c548 c003d5f0 00000000 00000000 00000000 00000000 00000000 00000000
7f00: 00000000 00000000 00000000 00000000 00000000 c0024d50 00000013 00000000
7f20: c7a01d60 c7a01d28 c0466000 00000000 c0467f54 c0467f40 c004c6c4 c0025514
7f40: c7a01e1c c7a01d2c c0467fc4 c0467f58 c004cccc c004c698 c0451f2c c004c68c
7f60: ffffffff ffffffff 00000001 00000000 c0036dec 00010000 00000000 c0466000
7f80: 00000000 c042f2c0 c0036dec 00100100 00200200 00000000 c0467fc4 c0431ec0
7fa0: c0466000 c0451f28 c004cac8 fffffffc 00000000 00000000 c0467ff4 c0467fc8
7fc0: c0051b74 c004cad4 ffffffff ffffffff 00000000 00000000 00000000 00000000
7fe0: 00000000 00000000 00000000 c0467ff8 c003d5f0 c0051a98 cc33cc33 cc33cc33
Backtrace:
[<c010a460>] (memcpy+0x0/0x5a0) from [<c0039300>] (copy_process+0xbc/0xe14)
 r9 = C02D8388  r8 = FFFFFFF4  r7 = C0466000  r6 = 00009EF4
 r5 = C042F2C0  r4 = C7DDFD20  r0 = 00009EF4
[<c0039244>] (copy_process+0x0/0xe14) from [<c003a1c4>] (do_fork+0xd0/0x1e8)
[<c003a0f4>] (do_fork+0x0/0x1e8) from [<c002557c>] (kernel_thread+0x74/0x84)
[<c0025508>] (kernel_thread+0x0/0x84) from [<c004c6c4>] (__call_usermodehelper+0x38/0x74)
 r7 = 00000000  r6 = C0466000  r5 = C7A01D28  r4 = C7A01D60
[<c004c68c>] (__call_usermodehelper+0x0/0x74) from [<c004cccc>] (worker_thread+0x204/0x2c0)
 r4 = C7A01D2C
[<c004cac8>] (worker_thread+0x0/0x2c0) from [<c0051b74>] (kthread+0xe8/0x11c)
[<c0051a8c>] (kthread+0x0/0x11c) from [<c003d5f0>] (do_exit+0x0/0xd8c)
 r8 = 00000000  r7 = 00000000  r6 = 00000000  r5 = 00000000
 r4 = 00000000
Code: f5d1f03c f5d1f05c e8b113f8 e2522020 (a8a013f8)

I wonder if you guys could help me on why such an error appears. Thanks.

我想知道你们是否可以帮我解决为什么会出现这样的错误。谢谢。

1 个解决方案

#1


1  

I think your kernel or module binaries are corrupted.

我认为你的内核或模块二进制文件已损坏。

Because you state that boot device is CF card, and you had your script to continually reboot it 7000 times, it appears to me that CF card had to endure quite a bit of write activity.

因为您声明启动设备是CF卡,并且您的脚本不断重启7000次,所以在我看来CF卡必须忍受相当多的写入活动。

It is only newer flash media devices like eMMC and micro-SD cards typically have hardware support for flash wear leveling, and thus can be (almost) safely used as ext3/ext4 file systems.

只有较新的闪存介质设备(如eMMC和micro-SD卡)通常具有闪存损耗均衡的硬件支持,因此可以(几乎)安全地用作ext3 / ext4文件系统。

For older flash media (like CF cards), proper flash wear leveling is not typically implemented, and it only takes few days (sometimes hours) to wear it out.

对于较旧的闪存介质(如CF卡),通常不会实现适当的闪光磨损均衡,并且只需要几天(有时是几小时)就可以将其磨损。

My suggestion is to check every single file on your system if check-sum matches to that of another good, working system. I am almost certain that in your case at least one file would not check out correctly.

我的建议是检查系统上的每个文件,如果校验和匹配另一个好的工作系统的那个。我几乎可以肯定,在您的情况下,至少有一个文件无法正确检出。

#1


1  

I think your kernel or module binaries are corrupted.

我认为你的内核或模块二进制文件已损坏。

Because you state that boot device is CF card, and you had your script to continually reboot it 7000 times, it appears to me that CF card had to endure quite a bit of write activity.

因为您声明启动设备是CF卡,并且您的脚本不断重启7000次,所以在我看来CF卡必须忍受相当多的写入活动。

It is only newer flash media devices like eMMC and micro-SD cards typically have hardware support for flash wear leveling, and thus can be (almost) safely used as ext3/ext4 file systems.

只有较新的闪存介质设备(如eMMC和micro-SD卡)通常具有闪存损耗均衡的硬件支持,因此可以(几乎)安全地用作ext3 / ext4文件系统。

For older flash media (like CF cards), proper flash wear leveling is not typically implemented, and it only takes few days (sometimes hours) to wear it out.

对于较旧的闪存介质(如CF卡),通常不会实现适当的闪光磨损均衡,并且只需要几天(有时是几小时)就可以将其磨损。

My suggestion is to check every single file on your system if check-sum matches to that of another good, working system. I am almost certain that in your case at least one file would not check out correctly.

我的建议是检查系统上的每个文件,如果校验和匹配另一个好的工作系统的那个。我几乎可以肯定,在您的情况下,至少有一个文件无法正确检出。