This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

mount nand flash error,OOM-Killer



我正在使用DM368开发IP相机,当程序正常运行过程中,有时候会出现下面的内存问题,触发oom-killer:

oom-killer: gfp_mask=0xd0, order=1

Mem-info:

DMA per-cpu:

cpu 0 hot: high 18, batch 3 used:4

cpu 0 cold: high 6, batch 1 used:0

DMA32 per-cpu: empty

Normal per-cpu: empty

HighMem per-cpu: empty

Free pages:        1176kB (0kB HighMem)

Active:5991 inactive:5072 dirty:0 writeback:0 unstable:0 free:294 slab:2228 mapp

ed:152 pagetables:203

DMA free:1176kB min:1052kB low:1312kB high:1576kB active:23116kB inactive:21148k

B present:69632kB pages_scanned:19456 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB page

s_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pag

es_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:

0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA: 22*4kB 6*8kB 1*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB

 0*4096kB 0*8192kB 0*16384kB = 1176kB

DMA32: empty

Normal: empty

HighMem: empty

Swap cache: add 0, delete 0, find 0/0, race 0+0

Free swap  = 0kB

Total swap = 0kB

Free swap:            0kB

17408 pages of RAM

456 free pages

2742 reserved pages

2228 slab pages

863 pages shared

0 pages swap cached

Out of Memory: Kill process 545 (av_server.out) score 2845 and children.

Out of memory: Killed process 545 (av_server.out).

oom-killer: gfp_mask=0xd0, order=1

Mem-info:

DMA per-cpu:

cpu 0 hot: high 18, batch 3 used:1

cpu 0 cold: high 6, batch 1 used:0

DMA32 per-cpu: empty

Normal per-cpu: empty

HighMem per-cpu: empty

Free pages:        1144kB (0kB HighMem)

Active:5860 inactive:4959 dirty:0 writeback:0 unstable:0 free:286 slab:2569 mapp

ed:73 pagetables:160

DMA free:1132kB min:1052kB low:1312kB high:1576kB active:23440kB inactive:19836k

B present:69632kB pages_scanned:11796 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB page

s_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pag

es_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:

0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA: 13*4kB 3*8kB 0*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB

 0*4096kB 0*8192kB 0*16384kB = 1132kB

DMA32: empty

Normal: empty

HighMem: empty

Swap cache: add 0, delete 0, find 0/0, race 0+0

Free swap  = 0kB

Total swap = 0kB

Free swap:            0kB

17408 pages of RAM

398 free pages

2742 reserved pages

2569 slab pages

645 pages shared

0 pages swap cached

Out of Memory: Kill process 523 (system_server) score 2215 and children.

Out of memory: Killed process 523 (system_server).

 

一旦运行过程中出现上面的问题,那么再次上电开机以后,程序将无法启动。出现下面的问题:

 

IP-Config: No network devices available.

RAMDISK: Compressed image found at block 0

VFS: Mounted root (ext2 filesystem).

Freeing init memory: 176K

INIT: version 2.86 booting

0

Starting the hotplug events dispatcher: udevd.

Synthesizing the initial hotplug events...done.

Waiting for /dev to be fully populated...done.

0

JFFS2 notice: (454) read_dnode: node CRC failed on dnode at 0xbfdfe0: read 0xfff

fffff, calculated 0xebc0bf65

oom-killer: gfp_mask=0xd0, order=0

Mem-info:

DMA per-cpu:

cpu 0 hot: high 18, batch 3 used:4

cpu 0 cold: high 6, batch 1 used:5

DMA32 per-cpu: empty

Normal per-cpu: empty

HighMem per-cpu: empty

Free pages:        1152kB (0kB HighMem)

Active:5352 inactive:5085 dirty:0 writeback:0 unstable:0 free:288 slab:6786 mapp

ed:1 pagetables:21

DMA free:1152kB min:1144kB low:1428kB high:1716kB active:21408kB inactive:20340k

B present:81920kB pages_scanned:31978 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB page

s_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pag

es_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:

0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA: 2*4kB 1*8kB 1*16kB 1*32kB 1*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB

0*4096kB 0*8192kB 0*16384kB = 1152kB

DMA32: empty

Normal: empty

HighMem: empty

Swap cache: add 0, delete 0, find 0/0, race 0+0

Free swap  = 0kB

Total swap = 0kB

Free swap:            0kB

20480 pages of RAM

347 free pages

2736 reserved pages

6786 slab pages

52 pages shared

0 pages swap cached

Out of Memory: Kill process 215 (rcS) score 72 and children.

Out of memory: Killed process 451 (sh).

oom-killer: gfp_mask=0x201d2, order=0

Mem-info:

DMA per-cpu:

cpu 0 hot: high 18, batch 3 used:17

cpu 0 cold: high 6, batch 1 used:5

DMA32 per-cpu: empty

Normal per-cpu: empty

HighMem per-cpu: empty

Free pages:        1236kB (0kB HighMem)

Active:5260 inactive:5152 dirty:0 writeback:0 unstable:0 free:309 slab:6787 mapp

ed:1 pagetables:17

DMA free:1236kB min:1144kB low:1428kB high:1716kB active:20884kB inactive:20764k

B present:81920kB pages_scanned:37015 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB page

s_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pag

es_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:

0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA: 15*4kB 5*8kB 1*16kB 1*32kB 1*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB

 0*4096kB 0*8192kB 0*16384kB = 1236kB

DMA32: empty

Normal: empty

HighMem: empty

Swap cache: add 0, delete 0, find 0/0, race 0+0

Free swap  = 0kB

Total swap = 0kB

Free swap:            0kB

20480 pages of RAM

377 free pages

2736 reserved pages

6787 slab pages

52 pages shared

0 pages swap cached

Out of Memory: Kill process 214 (init) score 48 and children.

Out of memory: Killed process 215 (rcS).

oom-killer: gfp_mask=0xd0, order=0

Mem-info:

DMA per-cpu:

cpu 0 hot: high 18, batch 3 used:6

cpu 0 cold: high 6, batch 1 used:0

DMA32 per-cpu: empty

Normal per-cpu: empty

HighMem per-cpu: empty

Free pages:        1144kB (0kB HighMem)

Active:5339 inactive:5122 dirty:0 writeback:0 unstable:0 free:286 slab:6789 mapp

ed:70 pagetables:10

DMA free:1160kB min:1144kB low:1428kB high:1716kB active:21356kB inactive:20488k

B present:81920kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB page

s_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pag

es_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:

0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA: 0*4kB 3*8kB 1*16kB 1*32kB 1*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB

0*4096kB 0*8192kB 0*16384kB = 1160kB

DMA32: empty

Normal: empty

HighMem: empty

Swap cache: add 0, delete 0, find 0/0, race 0+0

Free swap  = 0kB

Total swap = 0kB

Free swap:            0kB

20480 pages of RAM

337 free pages

2736 reserved pages

6789 slab pages

120 pages shared

0 pages swap cached

Out of Memory: Kill process 454 (chmod) score 46 and children.

Out of memory: Killed process 454 (chmod).

INIT: Entering runlevel: 3

oom-killer: gfp_mask=0xd0, order=0

Mem-info:

DMA per-cpu:

cpu 0 hot: high 18, batch 3 used:2

cpu 0 cold: high 6, batch 1 used:5

DMA32 per-cpu: empty

Normal per-cpu: empty

HighMem per-cpu: empty

Free pages:        1152kB (0kB HighMem)

Active:5288 inactive:5164 dirty:0 writeback:0 unstable:0 free:288 slab:6802 mapp

ed:74 pagetables:10

DMA free:1152kB min:1144kB low:1428kB high:1716kB active:21252kB inactive:20556k

B present:81920kB pages_scanned:2346 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB page

s_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pag

es_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:

0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA: 2*4kB 1*8kB 1*16kB 1*32kB 1*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB

0*4096kB 0*8192kB 0*16384kB = 1152kB

DMA32: empty

Normal: empty

HighMem: empty

Swap cache: add 0, delete 0, find 0/0, race 0+0

Free swap  = 0kB

Total swap = 0kB

Free swap:            0kB

20480 pages of RAM

333 free pages

2736 reserved pages

6802 slab pages

122 pages shared

0 pages swap cached

 

我的启动脚本文件是这样的:

mount -t jffs2 /dev/mtdblock4 /mnt/flash

cd /mnt/flash

chmod 777 *

cp -rf /mnt/flash/* /root

cd /root

./MhInit

 

我发现,正常情况下mount,chmod的操作都是很快的,一旦出现上面的内存错误以后,运行到这里的时候都特别慢。运行mount -t jffs2 /dev/mtdblock4 /mnt/flash 需要30秒以上时间,有时候出现Empty flash at... , JFFS2 notice: (454) read_dnode: node CRC failed on dnode at 0xbfdfe0: read 0xffffffff, calculated 0xebc0bf65 之类的错误。运行到chmod 777 * 的时候,也非常的慢,而且出现上面的内存oom-killer错误,有时候在下面拷贝的时候出错。

在我的程序当中,使用mtdblock4作为用户分区,系统文件,日志文件,还有一些执行程序等放到了这个分区,程序执行过程中可能会随时对用户分区的文件进行读写。

如果是我程序的原因导致运行过程中的内存错误,那开机的时候怎么会出现的?难道是运行过程中flash新的坏块引起的?一旦出现这个内存错误无法开机,我把用户分区使用nand erase擦除一下,就又可以正常启动,看上去好像跟flash有关,但是怎么会mount和chmod的时候出现异常呢?nand flash坏块会影响到jffs2文件系统的稳定性吗?