阅读:2887回复:8
linux内核在运行一个程序后突然崩溃了
在一个XScale开发板上,自己编写了一个调用Video For Linux来从USB摄像头取图像的程序,大多数情况下运行都很正常,但有时候程序运行完后会引起内核崩溃(就是什么都干不了了只能重启),程序运行是正确的(能取回图像并正确保存)。
内核崩溃时显示信息如下: Unable to handle kernel NULL pointer dereference at virtual address 00000038 pgd = c0004000 *pgd = 00000000, *pmd = 00000000 Internal error: Oops: 0 CPU: 0 pc : [<c00eea6c>] lr : [<00000005>] Not tainted sp : c01a1ef8 ip : 000003cc fp : 00000005 r10: 00000009 r9 : 00000000 r8 : c02e8c00 r7 : 00000000 r6 : 00000000 r5 : c03e7580 r4 : 00008280 r3 : 00000004 r2 : 00000000 r1 : 00000000 r0 : 00000000 Flags: nzCv IRQs on FIQs on Mode SVC_32 Segment kernel Control: 397F Table: A3E74000 DAC: 0000001D Process swapper (pid: 0, stack limit = 0xc01a0368) Stack: (0xc01a1ef8 to 0xc01a2000) 1ee0: c01a1f08 000003c1 1f00: c0024b10 c0025a3c 00000000 00000005 00000000 c02e8c00 00000000 c02e8f84 1f20: c02e8f84 00000000 ffffffff 00000009 00000000 c00efc6c c02aea20 04000000 1f40: 0000001d c01b3654 c01a1f9c a0015174 c001cd74 00000008 00000080 c01a1f9c 1f60: 8e000000 c01b48a4 c0023da8 c01a2ec8 20000000 00000002 c01b32f4 c01a1f9c 1f80: c001cd74 c01a1fd0 f8d00000 00000400 c001d244 60000013 c001c1a0 00000001 1fa0: 80000000 00000000 60000013 c001d204 80000000 c01b4030 c01b4024 c01a2bac 1fc0: 69052904 a0015174 00000000 60000013 c01a1fe4 c001d24c c001d244 60000013 1fe0: ffffffff c001d2b8 c01bd0a0 c01e0024 c00086e0 c01b4444 c01e0024 c0008080 Backtrace: invalid frame pointer Code: 1203303c 00833002 10833002 05933074 (15933034) Kernel panic: Aiee, killing interrupt handler! In interrupt handler - not syncing 请问什么情况下会可能出现这种问题?谢谢 |
|
沙发#
发布于:2005-04-30 12:28
看样子是堆栈问题。回去查查,是不是写了过长 的数据.
|
|
板凳#
发布于:2005-05-21 14:43
to Guestman:
我想一般和内存操作有关系,,比如使用了非法内存! 我也有个问题想请教你一下,,就是你的那些panic出错信息是如何拷贝下来的,,,不会是你逐字输入的吧??还是系统有记录?? 谢谢!! |
|
地板#
发布于:2005-05-25 12:55
这个应该是超级终端的信息啊
|
|
地下室#
发布于:2005-05-25 14:48
在一个XScale开发板上,自己编写了一个调用Video For Linux来从USB摄像头取图像的程序,大多数情况下运行都很正常,但有时候程序运行完后会引起内核崩溃(就是什么都干不了了只能重启),程序运行是正确的(能取回图像并正确保存)。 这个问题应该是驱动的问题,从描述看时引用了NULL指针了。我假定你只写了应用程序。所以引起问题的原因可能有: 1)你的程序没有按照V4L的规定的方式退出,是否关闭了设备什么的 2)驱动有问题,不robust |
|
|
5楼#
发布于:2005-05-25 16:14
你可以用ksymoops 反编译一下这个错误,一般来说是内存分配上的问题。看看是否有内存数据引用的冲突。
|
|
6楼#
发布于:2005-06-02 15:07
这个问题应该是驱动的问题,从描述看时引用了NULL指针了。我假定你只写了应用程序。所以引起问题的原因可能有: V4L规定的退出方式怎样的?不是close(fd)吗? 因为程序能正常取回图像数据并且保存为一个文件,所以我也怀疑是在退出的时候出了问题。 |
|
7楼#
发布于:2005-06-02 15:11
你可以用ksymoops 反编译一下这个错误,一般来说是内存分配上的问题。看看是否有内存数据引用的冲突。 弱弱的问,怎么用ksymoops反编译啊? |
|
8楼#
发布于:2005-06-18 17:34
Re:linux内核在运行一个程序后,程序烧到板子上跑起来后,在中间停了
各位,请教一下,你们帮我看看,我也碰到了这个问题:这是什么问题呢?Bios V1.0 for FS4510. Download and program flash Intel TE28F320C3B. Developer ZhanMaofeng Build date : Apr 06 2005 Time : 20:13:17 Type help for help. /*************************************************************/ Unlock finished \>boot boot from flash, are you sure? [y/n]y Uncompressing Linux.................................................. done, boo ting the kernel. Linux version 2.4.17-uc0 (root@localhost.localdomain) (gcc version 2.95.3 200103 15 (release)) #289 Sat Jun 18 12:41:00 HKT 2005 Processor: Samsung S3C4510B revision 6 Architecture: SNDS100 On node 0 totalpages: 2048 zone(0): 0 pages. zone(1): 2048 pages. zone(2): 0 pages. Kernel command line: root=/dev/rom0 Calibrating delay loop... 6.96 BogoMIPS Memory: 8MB = 8MB total Memory: 6396KB available (1425K code, 155K data Dentry-cache hash table entries: 1024 (order: 1, 8192 bytes) Inode-cache hash table entries: 512 (order: 0, 4096 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 2048 (order: 1, 8192 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options en abled ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B ttyS01 at 0x3ffe000 (irq = 7) is a S3C4510B block: 64 slots per queue, batch=16 RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize Blkmem copyright 1998,1999 D. Jeff Dionne Blkmem copyright 1998 Kenneth Albanowski Blkmem 1 disk images: 0: C19E0-1765DF [VIRTUAL C19E0-1765DF] (RO) Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) <mac@os.nctu.edu.tw> eth0: 00:40:95:36:35:34 NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 512 bind 512) VFS: Mounted root (romfs filesystem) readonly. Freeing init memory: 40K Warning: unable to open an initial console. Kernel panic: Attempted to kill init! |
|