linux内存管理问题

老鼠爱上猫oc 2021-08-18 11:19:17
Unable to handle kernel paging request at virtual address 00100118
pgd = c7f18000
[00100118] *pgd=c7f40031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT
last sysfs file: /sys/devices/virtual/volmon/volmon/dev
Modules linked in: driver_gwzd r8152 exwdg suart_emu
CPU: 0    Tainted: G        W   (2.6.33-rc4 #323)
PC is at __gpio_get_value+0x18/0x3c
LR is at gprs_timer_func+0x24/0x104 [driver_gwzd]
pc : [<c014f124>]    lr : [<bf03e940>]    psr: 80000013
sp : c7f47a60  ip : c7f47a70  fp : c7f47a6c
r10: c03ab20c  r9 : c03ab00c  r8 : c03ab40c
r7 : bf03e91c  r6 : 00000006  r5 : 00000018  r4 : 00007fff
r3 : c03afaa0  r2 : 00007fff  r1 : 000101c5  r0 : 00100100
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: c7f18000  DAC: 00000015
Process cat (pid: 1066, stack limit = 0xc7f46270)
Stack: (0xc7f47a60 to 0xc7f48000)
7a60: c7f47a8c c7f47a70 bf03e940 c014f11c c03aa600 c7f46000 00000102 bf03e91c
7a80: c7f47acc c7f47a90 c0046790 bf03e92c c7820900 c03aae0c c7efa8b4 c7efa8b4
7aa0: 00000000 00000102 c7f46000 00000004 00000001 00000001 0000000a c03aa460
7ac0: c7f47b04 c7f47ad0 c00412dc c0046610 c0384a24 c7f46000 00000015 00000015
7ae0: 00000000 00200000 00000001 00000000 c7f46000 00000000 c7f47b14 c7f47b08
7b00: c00413b4 c0041268 c7f47b2c c7f47b18 c0027078 c0041378 ffffffff febfd000
7b20: c7f47d54 c7f47b30 c0027b4c c0027010 c033ba40 c033ba41 c033ba41 00000075
7b40: 00000014 c033ba3e c7f47dc8 c7ec4240 00000b29 00000000 00000000 c7f47d54
7b60: 0000003c c7f47b78 c0143294 c01433bc 20000013 ffffffff 00000009 00000000
7b80: 00000008 0000000a ffffffff 0000006c c0072050 00001000 c7ec4000 c03a4af8
7ba0: c7ec5000 000200da 003fffff 0000000a 0000006c ffffffff 00000008 c033ba3e
7bc0: c7f47c4c c7f47bd0 c00725ac c0071fc8 00000002 00000041 c03a4af8 00000002
7be0: c006c354 00000000 000200da 0000001b c7f47d84 c7f47dc4 0000001a 00000014
7c00: 0000000e 00000007 00000001 60000013 c014f4b0 c7f47d84 c0393858 c7f47c44
7c20: c7f47dc4 c7f47e0e c7f47d84 c0393858 c7f47c44 c7f47e0e 532d532d c015293c
7c40: c7f47c9c 00000000 00000000 00000000 00000000 00000000 00000000 00000000
7c60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
7c80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
7ca0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
7cc0: 00000000 00000000 00000000 00000000 c7871ea0 c7801800 00000000 c7801800
7ce0: c7f47d0c c7f47cf0 c00b0d6c c01411ac c7592680 c7801800 00000000 00000009
7d00: 00000000 00000008 0000000a ffffffff 0000006c c7f47d20 c00525dc c005258c
7d20: c7592680 c033ba41 c7f47d44 c7df0e00 00000fb8 0000f698 00002ca4 00000b29
7d40: c03ad004 00000108 c7f47d70 c7f47d58 c00b6970 c0143104 c7f47d7c c7f47d78
7d60: 000d7294 c7f47ec4 c7f47d80 c00e3b68 c00b693c c033b84e 0001ed34 00004e10
7d80: 00000000 00017758 00000000 0000490c 00013150 000023dc 00000000 00002530
7da0: 00013150 00000000 00000000 00000000 00000000 00000000 00000000 00000324
7dc0: 00000548 000020d8 00001388 00000728 00000c60 00000108 0000006c 00000000
7de0: 00000000 00000000 0000f698 00002ca4 000d8800 00000fb8 000d7294 00000002
7e00: 00000b29 c7df0e00 00007b4d 00000032 00000000 00000000 00000000 00000000
7e20: 000000c9 00000152 00000836 000001ca 000001ca 00000318 c7f47e54 c7f47e48
7e40: c0075714 c007561c c1b541cf 00007b4d 00001384 00000000 00000000 00000000
7e60: 00000000 c7f47e70 00000000 00000000 00001000 c7ec4000 00020001 00000000
7e80: 000008f7 00004c54 0000094c 00000000 003ee000 35ca5000 00000018 c7df0e00
7ea0: 00000001 00000001 00000000 00001000 c7f47f70 becd8a80 c7f47f0c c7f47ec8
7ec0: c00b6c78 c00e38bc c7dbc780 c7df0e28 bf040ed8 c014f11c 00000000 00000000
7ee0: 00000000 c7f46000 c7871ea0 c00b6aa4 c7dbc780 becd8a80 c7f47f70 00001000
7f00: c7f47f3c c7f47f10 c00dc998 c00b6ab4 c7f47f70 c7dbc780 becd8a80 c7f47f70
7f20: 00001000 00001000 c7f46000 00000000 c7f47f6c c7f47f40 c009b958 c00dc8ec
7f40: c7f47f64 c7f47f50 c0027078 00000000 00000000 c7dbc780 00001000 becd8a80
7f60: c7f47fa4 c7f47f70 c009bac8 c009b8b0 00000000 00000000 00001000 00000000
7f80: 00000003 00001000 becd8a80 00000003 00000003 c00280e8 00000000 c7f47fa8
7fa0: c0027f40 c009ba94 00001000 becd8a80 00000003 becd8a80 00001000 001f1eb0
7fc0: 00001000 becd8a80 00000003 00000003 00000000 00000001 00000001 00000000
7fe0: 001f34c0 becd8a60 0000c128 00008e1c 60000010 00000003 c04bb031 c04bb431
Backtrace: 
[<c014f10c>] (__gpio_get_value+0x0/0x3c) from [<bf03e940>] (gprs_timer_func+0x24/0x104 [driver_gwzd])
[<bf03e91c>] (gprs_timer_func+0x0/0x104 [driver_gwzd]) from [<c0046790>] (run_timer_softirq+0x190/0x25c)
 r7:bf03e91c r6:00000102 r5:c7f46000 r4:c03aa600
[<c0046600>] (run_timer_softirq+0x0/0x25c) from [<c00412dc>] (__do_softirq+0x84/0x110)
[<c0041258>] (__do_softirq+0x0/0x110) from [<c00413b4>] (irq_exit+0x4c/0x6c)
[<c0041368>] (irq_exit+0x0/0x6c) from [<c0027078>] (asm_do_IRQ+0x78/0x94)
[<c0027000>] (asm_do_IRQ+0x0/0x94) from [<c0027b4c>] (__irq_svc+0x4c/0x9c)
Exception stack(0xc7f47b30 to 0xc7f47b78)
7b20:                                     c033ba40 c033ba41 c033ba41 00000075
7b40: 00000014 c033ba3e c7f47dc8 c7ec4240 00000b29 00000000 00000000 c7f47d54
7b60: 0000003c c7f47b78 c0143294 c01433bc 20000013 ffffffff
 r5:febfd000 r4:ffffffff
[<c01430f4>] (vsnprintf+0x0/0xfc0) from [<c00b6970>] (seq_printf+0x48/0x78)
[<c00b6928>] (seq_printf+0x0/0x78) from [<c00e3b68>] (meminfo_proc_show+0x2bc/0x2f0)
 r3:00004e10 r2:0001ed34 r1:c033b84e
 r4:000d7294
[<c00e38ac>] (meminfo_proc_show+0x0/0x2f0) from [<c00b6c78>] (seq_read+0x1d4/0x430)
[<c00b6aa4>] (seq_read+0x0/0x430) from [<c00dc998>] (proc_reg_read+0xbc/0xd0)
[<c00dc8dc>] (proc_reg_read+0x0/0xd0) from [<c009b958>] (vfs_read+0xb8/0x164)
[<c009b8a0>] (vfs_read+0x0/0x164) from [<c009bac8>] (sys_read+0x44/0x70)
 r8:becd8a80 r7:00001000 r6:c7dbc780 r5:00000000 r4:00000000
[<c009ba84>] (sys_read+0x0/0x70) from [<c0027f40>] (ret_fast_syscall+0x0/0x28)
 r8:c00280e8 r7:00000003 r6:00000003 r5:becd8a80 r4:00001000
Code: e24cb004 e59f3024 e1a02000 e7930180 (e5903018) 
---[ end trace 6ae2517a0f7cddee ]---
Kernel panic - not syncing: Fatal exception in interrupt
Backtrace: 
[<c002bdf8>] (dump_backtrace+0x0/0x114) from [<c02b5328>] (dump_stack+0x18/0x1c)
 r7:c014f128 r6:c014f126 r5:00000001 r4:c03a5b30
[<c02b5310>] (dump_stack+0x0/0x1c) from [<c02b5390>] (panic+0x64/0x13c)
[<c02b532c>] (panic+0x0/0x13c) from [<c002c19c>] (die+0x290/0x2cc)
 r3:00000100 r2:c7f478c0 r1:00000000 r0:c033180d
[<c002bf0c>] (die+0x0/0x2cc) from [<c002e308>] (__do_kernel_fault+0x6c/0x7c)
[<c002e29c>] (__do_kernel_fault+0x0/0x7c) from [<c002e4e8>] (do_page_fault+0x1d0/0x1e8)
 r7:c79eca80 r6:00100118 r5:c7f0d500 r4:c037e5a8
[<c002e318>] (do_page_fault+0x0/0x1e8) from [<c00272e0>] (do_DataAbort+0x3c/0x9c)
[<c00272a4>] (do_DataAbort+0x0/0x9c) from [<c0027aec>] (__dabt_svc+0x4c/0x60)
Exception stack(0xc7f47a18 to 0xc7f47a60)
7a00:                                                       00100100 000101c5
7a20: 00007fff c03afaa0 00007fff 00000018 00000006 bf03e91c c03ab40c c03ab00c
7a40: c03ab20c c7f47a6c c7f47a70 c7f47a60 bf03e940 c014f124 80000013 ffffffff
 r8:c03ab40c r7:bf03e91c r6:00000006 r5:c7f47a4c r4:ffffffff
[<c014f10c>] (__gpio_get_value+0x0/0x3c) from [<bf03e940>] (gprs_timer_func+0x24/0x104 [driver_gwzd])
[<bf03e91c>] (gprs_timer_func+0x0/0x104 [driver_gwzd]) from [<c0046790>] (run_timer_softirq+0x190/0x25c)
 r7:bf03e91c r6:00000102 r5:c7f46000 r4:c03aa600
[<c0046600>] (run_timer_softirq+0x0/0x25c) from [<c00412dc>] (__do_softirq+0x84/0x110)
[<c0041258>] (__do_softirq+0x0/0x110) from [<c00413b4>] (irq_exit+0x4c/0x6c)
[<c0041368>] (irq_exit+0x0/0x6c) from [<c0027078>] (asm_do_IRQ+0x78/0x94)
[<c0027000>] (asm_do_IRQ+0x0/0x94) from [<c0027b4c>] (__irq_svc+0x4c/0x9c)
Exception stack(0xc7f47b30 to 0xc7f47b78)
7b20:                                     c033ba40 c033ba41 c033ba41 00000075
7b40: 00000014 c033ba3e c7f47dc8 c7ec4240 00000b29 00000000 00000000 c7f47d54
7b60: 0000003c c7f47b78 c0143294 c01433bc 20000013 ffffffff
 r5:febfd000 r4:ffffffff
[<c01430f4>] (vsnprintf+0x0/0xfc0) from [<c00b6970>] (seq_printf+0x48/0x78)
[<c00b6928>] (seq_printf+0x0/0x78) from [<c00e3b68>] (meminfo_proc_show+0x2bc/0x2f0)
 r3:00004e10 r2:0001ed34 r1:c033b84e
 r4:000d7294
[<c00e38ac>] (meminfo_proc_show+0x0/0x2f0) from [<c00b6c78>] (seq_read+0x1d4/0x430)
[<c00b6aa4>] (seq_read+0x0/0x430) from [<c00dc998>] (proc_reg_read+0xbc/0xd0)
[<c00dc8dc>] (proc_reg_read+0x0/0xd0) from [<c009b958>] (vfs_read+0xb8/0x164)
[<c009b8a0>] (vfs_read+0x0/0x164) from [<c009bac8>] (sys_read+0x44/0x70)
 r8:becd8a80 r7:00001000 r6:c7dbc780 r5:00000000 r4:00000000
[<c009ba84>] (sys_read+0x0/0x70) from [<c0027f40>] (ret_fast_syscall+0x0/0x28)
 r8:c00280e8 r7:00000003 r6:00000003 r5:becd8a80 r4:00001000
[root@Linux /tmp]#cat /proc/meminfo
MemTotal:         126260 kB
MemFree:           20040 kB
Buffers:               0 kB
Cached:            96036 kB
SwapCached:            0 kB
Active:            18648 kB
Inactive:          78160 kB
Active(anon):       9180 kB
Inactive(anon):        0 kB
Active(file):       9468 kB
Inactive(file):    78160 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:           804 kB
Mapped:             1352 kB
Shmem:              8408 kB
Slab:               5000 kB
SReclaimable:       1832 kB
SUnreclaim:         3168 kB
KernelStack:         264 kB
PageTables:          108 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       63128 kB
Committed_AS:      11428 kB
VmallocTotal:     886784 kB
VmallocUsed:        4024 kB
VmallocChunk:     881300 kB

当时的系统状态如下:
1、后台应用程序,每隔1秒会创建一个新文件,写入50K数据再读出来,以此来消耗内存
2、前端手动输入cat /proc/meminfo查看内存剩余,如上图所示
3、内核崩溃

疑问:当时内核剩余的内存空间足够,为什么当剩余低于20M的时候,内核崩溃了呢?

大神们帮忙解答一下

...全文
561 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.4 分析Linux内核的意义 1.5 Linux内核结构 1.6 Linux内核源代码 1.7 Linux内核源代码分析工具 第二章 Linux运行的硬件基础 2.1 i386的寄存器 2.2 内存地址 2.3 段机制和描述符 2.4 分页机制 2.5 Linux中的分页机制 2.6 Linux中的汇编语言 第三章中断机制 3.1 中断基本知识 3.2中断描述符表的初始化 3.3异常处理 3.4 中断处理 3.5中断的后半部分处理机制 第四章 进程描述 4.1 进程和程序(Process and Program) 4.2 Linux中的进程概述 4.3 task_struct结构描述 4.4 task_struct结构在内存中的存放 4.5 进程组织的方式 4.6 内核线程 4.7 进程的权能 4.8 内核同步 第五章进程调度 5.1 Linux时间系统 5.2 时钟中断 5.3 Linux的调度程序-Schedule( ) 5.4 进程切换 第六章 Linux内存管理 6.1 Linux内存管理概述 6.2 Linux内存管理的初始化 6.3 内存的分配和回收 6.4 地址映射机制 6.5 请页机制 6.6 交换机制 6.7 缓存和刷新机制 6.8 进程的创建和执行 第七章 进程间通信 7.1 管道 7.2 信号(signal) 7.3 System V 的IPC机制 第八章 虚拟文件系统 8.1 概述 8.2 VFS中的数据结构 8.3 高速缓存 8.4 文件系统的注册、安装与拆卸 8.5 限额机制 8.6 具体文件系统举例 8.7 文件系统的系统调用 8 .8 Linux2.4文件系统的移植问题 第九章 Ext2文件系统 9.1 基本概念 9.2 Ext2的磁盘布局和数据结构 9.3 文件的访问权限和安全 9.4 链接文件 9.5 分配策略 第十章 模块机制 10.1 概述 10.2 实现机制 10.3 模块的装入和卸载 10.4 内核版本 10.5 编写内核模块 第十一章 设备驱动程序 11.1 概述 11.2 设备驱动基础 11.3 块设备驱动程序 11.4 字符设备驱动程序 第十二章 网络 12.1 概述 12.2 网络协议 12.3 套接字(socket) 12.4 套接字缓冲区(sk_buff) 12.5 网络设备接口 第十三章 启动系统 13.1 初始化流程 13.2 初始化的任务 13.3 Linux 的Boot Loarder 13.4 进入操作系统 13.5 main.c中的初始化 13.6 建立init进程 附录: 1 Linux 2.4内核API 2.1 驱动程序的基本函数 2.2 双向循环链表的操作 2.3 基本C库函数 2.4 Linux内存管理中Slab缓冲区 2.5 Linux中的VFS 2.6 Linux的连网 2.7 网络设备支持 2.8 模块支持 2.9 硬件接口 2.10 块设备 2.11 USB 设备

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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