使用资源:
开发板:Super4412 2GMem
内核:Android 4.2.2(2015-01-21)
Linux 3.5(2015-01-21)
错误现象:
1:自己上层使用VideoView编写一个最简单的视频播放程序,播放1天左右,出现死机现象,并打印一下Bug信息
2:使用已有的使用较频繁的播放器,比如(MxPlayer),播放一天后,也出现死机现象,并打印一下Bug信息
[83500.045000] SurfaceFlinger invoked oom-killer: gfp_mask=0x84d0, order=0, oom_adj=-16, oom_score_adj=-941
[83500.045000] [<c0015484>] (unwind_backtrace+0x0/0xf0) from [<c00b4a08>] (dump_header.clone.10+0x74/0x17c)
[83500.045000] [<c00b4a08>] (dump_header.clone.10+0x74/0x17c) from [<c00b4cfc>] (oom_kill_process.clone.12+0x120/0x234)
[83500.050000] [<c00b4cfc>] (oom_kill_process.clone.12+0x120/0x234) from [<c00b5148>] (out_of_memory+0x1f0/0x310)
[83500.060000] [<c00b5148>] (out_of_memory+0x1f0/0x310) from [<c00b9c44>] (__alloc_pages_nodemask+0x72c/0x768)
[83500.070000] [<c00b9c44>] (__alloc_pages_nodemask+0x72c/0x768) from [<c00d269c>] (__pte_alloc+0x20/0x140)
[83500.080000] [<c00d269c>] (__pte_alloc+0x20/0x140) from [<c00d29c4>] (remap_pfn_range+0x208/0x21c)
[83500.090000] [<c00d29c4>] (remap_pfn_range+0x208/0x21c) from [<c025b26c>] (ion_heap_map_user+0xbc/0xf8)
[83500.100000] [<c025b26c>] (ion_heap_map_user+0xbc/0xf8) from [<c0259918>] (ion_mmap+0x68/0xd4)
[83500.105000] [<c0259918>] (ion_mmap+0x68/0xd4) from [<c027dc50>] (dma_buf_mmap_internal+0x50/0x58)
[83500.115000] [<c027dc50>] (dma_buf_mmap_internal+0x50/0x58) from [<c00d90ec>] (mmap_region+0x2e4/0x478)
[83500.125000] [<c00d90ec>] (mmap_region+0x2e4/0x478) from [<c00ca760>] (vm_mmap_pgoff+0x5c/0x74)
[83500.135000] [<c00ca760>] (vm_mmap_pgoff+0x5c/0x74) from [<c00d82c0>] (sys_mmap_pgoff+0x58/0xac)
[83500.145000] [<c00d82c0>] (sys_mmap_pgoff+0x58/0xac) from [<c000e440>] (ret_fast_syscall+0x0/0x30)
[83500.150000] Mem-info:
[83500.155000] Normal per-cpu:
[83500.155000] CPU 0: hi: 186, btch: 31 usd: 136
[83500.160000] CPU 1: hi: 186, btch: 31 usd: 26
[83500.165000] CPU 2: hi: 186, btch: 31 usd: 89
[83500.170000] CPU 3: hi: 186, btch: 31 usd: 65
[83500.175000] HighMem per-cpu:
[83500.180000] CPU 0: hi: 186, btch: 31 usd: 166
[83500.185000] CPU 1: hi: 186, btch: 31 usd: 17
[83500.190000] CPU 2: hi: 186, btch: 31 usd: 155
[83500.195000] CPU 3: hi: 186, btch: 31 usd: 17
[83500.200000] active_anon:28916 inactive_anon:246 isolated_anon:0
[83500.200000] active_file:15058 inactive_file:31666 isolated_file:0
[83500.200000] unevictable:0 dirty:1 writeback:0 unstable:0
[83500.200000] free:274094 slab_reclaimable:1296 slab_unreclaimable:89074
[83500.200000] mapped:22726 shmem:259 pagetables:1190 bounce:0
[83500.225000] Normal free:32732kB min:32768kB low:40960kB high:49152kB active_anon:0kB inactive_anon:0kB active_file:76kB inactive_file:92kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:470672kB mlocked:0kB dirty:0kB writeback:0kB mapped:36432kB shmem:0kB slab_reclaimable:5184kB slab_unreclaimable:356296kB kernel_stack:3656kB pagetables:4760kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:1790131 all_unreclaimable? yes
[83500.265000] lowmem_reserve[]: 0 12170 12170
[83500.270000] HighMem free:1063644kB min:512kB low:27624kB high:54740kB active_anon:115664kB inactive_anon:984kB active_file:60156kB inactive_file:126572kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:1557880kB mlocked:0kB dirty:4kB writeback:0kB mapped:54472kB shmem:1036kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[83500.310000] lowmem_reserve[]: 0 0 0
[83500.315000] Normal: 113*4kB 123*8kB 132*16kB 152*32kB 112*64kB 112*128kB 11*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 32732kB
[83500.325000] HighMem: 29*4kB 27*8kB 537*16kB 574*32kB 327*64kB 159*128kB 85*256kB 37*512kB 22*1024kB 13*2048kB 221*4096kB = 1063644kB
[83500.335000] 46976 total pagecache pages
[83500.340000] 0 pages in swap cache
[83500.345000] Swap cache stats: add 0, delete 0, find 0/0
[83500.350000] Free swap = 0kB
[83500.350000] Total swap = 0kB
[83500.390000] 519936 pages of RAM
[83500.390000] 316367 free pages
[83500.390000] 15308 reserved pages
[83500.390000] 88900 slab pages
[83500.390000] 97504 pages shared
[83500.390000] 0 pages swap cached
[83500.390000] [ pid ] uid tgid total_vm rss cpu oom_adj oom_score_adj name
[83500.390000] [ 91] 0 91 89 47 0 -16 -941 ueventd
[83500.400000] [ 102] 1023 102 582 103 3 -16 -941 sdcard
[83500.405000] [ 103] 1000 103 222 46 0 -16 -941 servicemanager
[83500.415000] [ 104] 0 104 1017 176 1 -16 -941 vold
[83500.420000] [ 108] 1007 108 186 42 3 -16 -941 logwrapper
[83500.430000] [ 109] 0 109 2982 326 3 -16 -941 netd
[83500.435000] [ 110] 0 110 233 58 0 -16 -941 debuggerd
[83500.445000] [ 112] 1000 112 52755 793 0 -16 -941 surfaceflinger
[83500.455000] [ 113] 0 113 159603 9040 3 -16 -941 zygote
[83500.460000] [ 114] 1019 114 2249 746 0 -16 -941 drmserver
[83500.470000] [ 115] 1013 115 26691 9205 3 -16 -941 mediaserver
[83500.475000] [ 116] 0 116 191 1 0 -16 -941 tsd
[83500.485000] [ 117] 1002 117 349 121 0 -16 -941 dbus-daemon
[83500.490000] [ 118] 1012 118 225 50 1 -16 -941 installd_rel
[83500.500000] [ 119] 1017 119 457 168 3 -16 -941 keystore
[83500.510000] [ 120] 2000 120 205 116 0 -16 -941 sh
[83500.515000] [ 121] 0 121 861 1 3 -16 -941 adbd
[83500.520000] [ 332] 0 332 1169 60 1 -16 -941 zygote
[83500.530000] [ 370] 0 370 610 8 2 -16 -941 360s
[83500.535000] [ 371] 0 371 610 8 0 -16 -941 360s
[83500.545000] [ 467] 1000 467 183544 9836 0 -16 -941 system_server
[83500.555000] [ 528] 0 528 243 108 1 -16 -941 dhcpcd
[83500.560000] [ 547] 10053 547 169063 9117 3 -12 -705 ndroid.systemui
[83500.570000] [ 561] 10078 561 169265 10285 0 2 117 fe:GuardService
[83500.575000] [ 588] 10027 588 162444 5597 1 2 117 putmethod.latin
[83500.585000] [ 606] 1001 606 166239 6087 3 -12 -705 m.android.phone
[83500.595000] [ 619] 10029 619 166648 8450 3 6 352 ndroid.launcher
[83500.600000] [ 635] 10014 635 161667 4600 3 2 117 .location.fused
[83500.610000] [ 698] 10062 698 161699 4545 0 1 58 android.smspush
[83500.620000] [ 744] 10078 744 160 21 1 0 0 um.0.2
[83500.625000] [ 812] 1010 812 673 370 2 -16 -941 wpa_supplicant
[83500.635000] [ 1338] 10066 1338 165872 6332 0 2 117 om.qihoo.daemon
[83500.645000] [ 1417] 10066 1417 154717 4112 2 0 0 app_process
[83500.650000] [ 1536] 0 1536 1355 83 2 2 117 zygote
[83500.660000] [ 1537] 0 1537 156814 4246 3 2 117 qh_rt_service
[83500.665000] [ 1629] 10080 1629 174242 6528 1 0 0 ple.zfxcaddemon
[83500.675000] [ 1697] 0 1697 208 127 1 -16 -941 sh
[83500.680000] [23376] 0 23376 273 107 1 -16 -941 logcat
[83500.690000] [26039] 10008 26039 164361 5990 0 5 294 e.process.gapps
[83500.700000] [26156] 10026 26156 161680 4292 0 8 470 ndlyarm.LEDDemo
[83500.705000] [26173] 10074 26173 164115 5474 0 8 470 pp:bdservice_v1
[83500.715000] [26201] 10070 26201 162700 4470 3 5 294 xcdevicemanager
[83500.725000] Out of memory: Kill process 26173 (pp:bdservice_v1) score 480 or sacrifice child
[83500.730000] Killed process 26173 (pp:bdservice_v1) total-vm:656460kB, anon-rss:12644kB, file-rss:9252kB
‘错误分析:
通过错误信息可以看出,系统的Lowmem被蚕食殆尽,导致最后系统启动OOM机制来销毁已存在的进程。在不断的销毁进程中,当
Binder进程被销毁时,系统就会死掉(命令行,屏幕都挂掉)
通过cat /proc/zoneinfo命令和cat /proc/meminfo命令分析,可以明显的看到,Lowmem部分的free page在一点点减少,当达到OOM
的销毁级别,只剩(32732kB)32MB的时候,上面Log就会出现。
但是,上述问题在使用4.1.2内核代码后,不会出现Lowmem内存被蚕食的现象。《4.1.2内核配置:Android:4.1.2 Linux:3.0.31》
因此怀疑4.2.2对应的Android或者Linux内核中产生了内存分配(mmap,kmalloc)后没有释放的情况,但是苦于这部分代码繁多,
苦于跟踪,而且对SurfaceFlinger 了解度不够,希望友善之臂或者有了解这方面的人给出建议或者提出解决方案。
谢谢