请教:内核崩溃如何查询原因

stratosphere607 2011-01-10 03:52:33
CPU:Intel CE4100
KERNAL: linux2.6.23

播放普通视频没有问题,当播放高清视频时出现内核崩溃,但是能播放几十秒,每次必然崩溃。
应用程序没有任何错误信息,以下信息全部是内核打印的,每次栈的深度不一定一样:

general protection fault: 0000 [#1]
PREEMPT
Modules linked in: pvrsrvkm alsa_shim(F) snd_usb_audio snd_usb_lib snd_rawmidi snd_hwdep snd_seq_device snd_pcm snd_page_alloc snd_timer snd edl_audio_dac_drv_linux edl_thermal ismdavcap_shim avcap_synthetic(F) avcap_core spectra sec_kernel ismdremux ismdbufmon ismdaudio ismdvidrend(F) ismdvidpproc ismdviddec_v2 ismddemux_v2 ismdclock_recovery gdl_mm gen_timer ismdclock ismdcore ioctl_module intel_ce_pm clock_control idl_smartcard idl_spi idl_gpio idl_i2c sven_linux system_utils_linux platform_config pal_linux osal_linux
CPU: 0
EIP: 0060:[<c01e6775>] Tainted: GF VLI
EFLAGS: 00010297 (2.6.23 #1)
EIP is at nfs_pagein_one+0x55/0xd0
eax: ffffffff ebx: c00a1134 ecx: c5cdfd44 edx: c132c340
esi: ffffffff edi: c5cdfd44 ebp: c00a1000 esp: c5cdfc5c
ds: 007b es: 007b fs: 0000 gs: 0033 ss: 0068
Process cl_app (pid: 965, ti=c5cde000 task=c5d04000 task.ti=c5cde000)
Stack: c7057e94 c95c57a0 00001000 c5cdfd44 00002000 00000000 c01e4503 00001000
00000000 c5cdfd44 c132cc80 c01e4567 07ee4118 c132cc80 c100ab40 00000000
c01e6b4a 00000000 00001000 c5cdfd6c c7057e94 00001000 c100ab40 c5cdfde8
Call Trace:
[<c01e4503>] nfs_pageio_doio+0x53/0x70
[<c01e4567>] nfs_pageio_add_request+0x47/0xc0
[<c01e6b4a>] readpage_async_filler+0x10a/0x190
[<c0141e4d>] read_cache_pages+0x8d/0xd0
[<c01e6a40>] readpage_async_filler+0x0/0x190
[<c01e6ca8>] nfs_readpages+0xd8/0x1c0
[<c01e6720>] nfs_pagein_one+0x0/0xd0
[<c01e6bd0>] nfs_readpages+0x0/0x1c0
[<c0141c31>] __do_page_cache_readahead+0x1d1/0x2e0
[<c042d37e>] io_schedule+0xe/0x20
[<c042dc3b>] __wait_on_bit_lock+0x5b/0x70
[<c0141f8b>] ondemand_readahead+0xfb/0x120
[<c014207b>] page_cache_sync_readahead+0x2b/0x30
[<c013baeb>] do_generic_mapping_read+0x28b/0x480
[<c013d6fd>] generic_file_aio_read+0xbd/0x1e0
[<c013b190>] file_read_actor+0x0/0x130
[<c0166ea3>] do_path_lookup+0x83/0x200
[<c015cd66>] do_sync_read+0xc6/0x110
[<c012a200>] autoremove_wake_function+0x0/0x50
[<c015d611>] vfs_read+0xa1/0x130
[<c015cca0>] do_sync_read+0x0/0x110
[<c015da41>] sys_read+0x41/0x70
[<c01029de>] sysenter_past_esp+0x5f/0x85
=======================
Code: 04 8b b0 40 01 00 00 39 fa 75 05 eb 35 83 c6 04 8b 0a 39 ca 74 0d 8b 42 04 89 41 04 89 08 89 52 04 89 12 8b 43 04 89 1a 89 53 04 <89> 10 89 42 04 8b 42 08 0f ba 30 01 8b 42 08 89 06 8b 17 39 d7
EIP: [<c01e6775>] nfs_pagein_one+0x55/0xd0 SS:ESP 0068:c5cdfc5c
general protection fault: 0000 [#2]
PREEMPT
Modules linked in: pvrsrvkm alsa_shim(F) snd_usb_audio snd_usb_lib snd_rawmidi snd_hwdep snd_seq_device snd_pcm snd_page_alloc snd_timer snd edl_audio_dac_drv_linux edl_thermal ismdavcap_shim avcap_synthetic(F) avcap_core spectra sec_kernel ismdremux ismdbufmon ismdaudio ismdvidrend(F) ismdvidpproc ismdviddec_v2 ismddemux_v2 ismdclock_recovery gdl_mm gen_timer ismdclock ismdcore ioctl_module intel_ce_pm clock_control idl_smartcard idl_spi idl_gpio idl_i2c sven_linux system_utils_linux platform_config pal_linux osal_linux
CPU: 0
EIP: 0060:[<c015a1ee>] Tainted: GF D VLI
EFLAGS: 00010086 (2.6.23 #1)
EIP is at __kmalloc_track_caller+0x3e/0xb0
eax: 00000000 ebx: ffffffff ecx: ffffffff edx: c1001440
esi: 00000282 edi: c0535004 ebp: 00000020 esp: c5cdfa20
ds: 007b es: 007b fs: 0000 gs: 0033 ss: 0068
Process cl_app (pid: 965, ti=c5cde000 task=c5d04000 task.ti=c5cde000)
Stack: c0359b42 c1128900 c92ab6c0 00000640 00000020 c0534b18 c0358ec7 00000000
00000020 c1181000 000005f2 000000a6 c0359b42 ffffffff 000a2012 00000000
c02ae947 0000ab04 0000aaec 0000aaec 00000046 00000046 00000010 c946d140
Call Trace:
[<c0359b42>] __netdev_alloc_skb+0x22/0x50
[<c0358ec7>] __alloc_skb+0x57/0x120
[<c0359b42>] __netdev_alloc_skb+0x22/0x50
[<c02ae947>] e1000_alloc_rx_buffers+0x167/0x370
[<c02aee00>] e1000_clean_rx_irq+0x2b0/0x4b0
[<c02acd4e>] e1000_intr+0x6e/0x130
[<c0138955>] handle_IRQ_event+0x25/0x60
[<c013a11b>] handle_level_irq+0x6b/0xf0
[<c0104a82>] do_IRQ+0x42/0x80
[<c0102bef>] common_interrupt+0x23/0x28
[<c011c2dd>] __do_softirq+0x2d/0x90
[<c011c366>] do_softirq+0x26/0x30
[<c011c595>] irq_exit+0x35/0x40
[<c0104a87>] do_IRQ+0x47/0x80
[<c01033bc>] show_registers+0x1ac/0x350
[<c0102bef>] common_interrupt+0x23/0x28
[<c01036e0>] die+0x180/0x200
[<c0104530>] do_general_protection+0x0/0x280
[<c042edfa>] error_code+0x6a/0x70
[<c01e6775>] nfs_pagein_one+0x55/0xd0
[<c01e4503>] nfs_pageio_doio+0x53/0x70
[<c01e4567>] nfs_pageio_add_request+0x47/0xc0
[<c01e6b4a>] readpage_async_filler+0x10a/0x190
[<c0141e4d>] read_cache_pages+0x8d/0xd0
[<c01e6a40>] readpage_async_filler+0x0/0x190
[<c01e6ca8>] nfs_readpages+0xd8/0x1c0
[<c01e6720>] nfs_pagein_one+0x0/0xd0
[<c01e6bd0>] nfs_readpages+0x0/0x1c0
[<c0141c31>] __do_page_cache_readahead+0x1d1/0x2e0
[<c042d37e>] io_schedule+0xe/0x20
[<c042dc3b>] __wait_on_bit_lock+0x5b/0x70
[<c0141f8b>] ondemand_readahead+0xfb/0x120
[<c014207b>] page_cache_sync_readahead+0x2b/0x30
[<c013baeb>] do_generic_mapping_read+0x28b/0x480
[<c013d6fd>] generic_file_aio_read+0xbd/0x1e0
[<c013b190>] file_read_actor+0x0/0x130
[<c0166ea3>] do_path_lookup+0x83/0x200
[<c015cd66>] do_sync_read+0xc6/0x110
[<c012a200>] autoremove_wake_function+0x0/0x50
[<c015d611>] vfs_read+0xa1/0x130
[<c015cca0>] do_sync_read+0x0/0x110
[<c015da41>] sys_read+0x41/0x70
[<c01029de>] sysenter_past_esp+0x5f/0x85
=======================
Code: 89 74 24 0c e8 d4 fe ff ff 89 c7 83 ff 10 76 31 9c 5e fa 8b 97 88 00 00 00 85 d2 74 38 8b 4a 0c 85 c9 74 31 8b 5a 0c 0f b7 42 0a <8b> 04 83 89 42 0c 56 9d 89 e8 25 00 80 00 00 66 85 c0 75 2f 89
EIP: [<c015a1ee>] __kmalloc_track_caller+0x3e/0xb0 SS:ESP 0068:c5cdfa20
Kernel panic - not syncing: Fatal exception in interrupt

请问各位知道该从何入手?谢谢。
...全文
592 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
stratosphere607 2011-01-25
  • 打赏
  • 举报
回复
换了个新的内核及文件系统就好了。
Wenxy1 2011-01-12
  • 打赏
  • 举报
回复
楼主,对于kernel panic的信息,每次都不同,比较难定位问题。
换了新CPU出现的(同时文件系统和各种库也换了)。从新cpu, 文件系统,库方面着手吧。
stratosphere607 2011-01-12
  • 打赏
  • 举报
回复
谢谢 楼上几位的回复。

应该不是内存溢出,因为播放器是mplayer,后来用Intel自带的一个播放器也是这样,这些代码比较成熟,另外在之前的CPU上跑没出问题,换了新CPU出现的(同时文件系统和各种库也换了)。

spectra.ko驱动后来验证没有关系,可以不加载。

总体感觉还是和内存有关,但是很难定位。我尝试将总共1G的内存分配200M、300M、500M给内核使用(必须预留不到500M给CPU用),结果是内存多了会延长崩溃时间,但是播放码率极高的高清还是很快就挂。

另外还尝试将RAM的频率降下来会有点影响(之前很快挂掉的片子会播久点),但是高码率很快挂。

每次打印的堆栈信息不尽相同,本地启动和网络启动内核堆栈信息肯定不同。

现在总结了规律大概:
1 应用层没有任何错误信息。
2 和高清没有必然联系,好像和已播放的数据总量有关。
3 增加内存和降频会有所缓解。

这个问题很没思路,各位有什么建议。
Wenxy1 2011-01-12
  • 打赏
  • 举报
回复
我怀疑最可能是spectra.ko模块导致的. 试试不加载spectra.ko,播放高清视频测试.
ayw215 2011-01-12
  • 打赏
  • 举报
回复
好好看看这个原因[Quote=引用 4 楼 bruce_gong 的回复:]

系统初始化时加载一个驱动出现错误:
# insmod spectra.ko
flashreg is cdc04000
flashmem is cdc06000
Global Memory is 3745646
Glob_Spectraa: unknown partition table
Spectra: Spectra module loaded with major number……
[/Quote]
steven_miao 2011-01-12
  • 打赏
  • 举报
回复
估计是内存溢出问题,具体不清楚。
jianmin09 2011-01-11
  • 打赏
  • 举报
回复
nfs_pageio_doio与__netdev_alloc_skb这两个函数值得跟踪调试下,跟内存相关。
stratosphere607 2011-01-11
  • 打赏
  • 举报
回复
系统初始化时加载一个驱动出现错误:
# insmod spectra.ko
flashreg is cdc04000
flashmem is cdc06000
Global Memory is 3745646
Glob_Spectraa: unknown partition table
Spectra: Spectra module loaded with major number 254

其中unknown partition table是内核linux-2.6.23\fs\partitions\check.c中报的,不知是否有关系,怎么用。
stratosphere607 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dfysy 的回复:]
看起来应该跟网络有关,估计在本地播放不会有问题
[/Quote]
本来也是这样想的,改为本地加载根文件系统,本地播放还是这个问题。
一个规律就是播放时间一长就不行。
dfysy 2011-01-10
  • 打赏
  • 举报
回复
看起来应该跟网络有关,估计在本地播放不会有问题
stratosphere607 2011-01-10
  • 打赏
  • 举报
回复
补充:
普通视频也会崩溃,只是时间很长,大概二十几分钟。
操作就是在板子上用播放器播放视频。
可能和环境,内存有关系。

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧