2010-04-23 04:28:34 uclinux memeroy questions!!
steven O (AFGHANISTAN)
Message: 88809
hi :
when i write datas to usb storage device, the following oop message is printing. it seems that the kwapd is scheduled when the free meroy is too few. somebody can tell me how to solve it? and is there some bugs in the malloc mechanism of the 2.6.x version linux? thanks
usb 1-1: reset full speed USB device using isp116x-hcd and address 2
mdev: page allocation failure. order:9, mode:0x40d0
Hardware Trace:
0 Target : <0x00004788> { _dump_stack + 0x0 }
Source : <0x0002d1ee> { ___alloc_pages + 0x17e }
1 Target : <0x0002d1ee> { ___alloc_pages + 0x17e }
Source : <0x0000d70a> { _printk + 0x16 }
2 Target : <0x0000d706> { _printk + 0x12 }
Source : <0x0000d5bc> { _vprintk + 0x1b8 }
3 Target : <0x0000d5b0> { _vprintk + 0x1ac }
Source : <0xffa08dc8> { __common_int_entry + 0xd8 }
4 Target : <0xffa08d66> { __common_int_entry + 0x76 }
Source : <0xffa08b98> { _return_from_int + 0x58 }
5 Target : <0xffa08b98> { _return_from_int + 0x58 }
Source : <0xffa08b6e> { _return_from_int + 0x2e }
6 Target : <0xffa08b40> { _return_from_int + 0x0 }
Source : <0xffa08d62> { __common_int_entry + 0x72 }
7 Target : <0xffa08d60> { __common_int_entry + 0x70 }
Source : <0xffa084ae> { _asm_do_IRQ + 0x6a }
8 Target : <0xffa084a6> { _asm_do_IRQ + 0x62 }
Source : <0x000117f6> { __local_bh_enable + 0x3e }
9 Target : <0x000117b8> { __local_bh_enable + 0x0 }
Source : <0x00011900> { ___do_softirq + 0x94 }
10 Target : <0x000118f8> { ___do_softirq + 0x8c }
Source : <0x000118d8> { ___do_softirq + 0x6c }
11 Target : <0x000118cc> { ___do_softirq + 0x60 }
Source : <0x000119e0> { _tasklet_action + 0x7c }
12 Target : <0x000119da> { _tasklet_action + 0x76 }
Source : <0x000119b6> { _tasklet_action + 0x52 }
13 Target : <0x000119b4> { _tasklet_action + 0x50 }
Source : <0x0001b2c2> { ___rcu_process_callbacks + 0xb6 }
14 Target : <0x0001b2bc> { ___rcu_process_callbacks + 0xb0 }
Source : <0x0001b252> { ___rcu_process_callbacks + 0x46 }
15 Target : <0x0001b24e> { ___rcu_process_callbacks + 0x42 }
Source : <0x0001b2ea> { ___rcu_process_callbacks + 0xde }
Stack from 01c47d00:
0037b5c0 0002d1f2 00000000 00000001 000040d0 0037b74c 00000009 000040d0
00000000 00225924 00000000 000240d0 01c46000 00000000 00000000 00000077
0002d2c2 00104000 00104000 0318e3c0 00000000 00000002 00000000 00000000
00032e0a 00104000 00225920 00032f68 00103465 00000000 00017440 00000002
01c47da4 00655da0 00104fff 0019dd2c 00000000 002693b4 00000001 000541e0
0005e1ea 00000005 00017cf0 00648400 01c46000 00103465 00000000 00017440
Call Trace:
[<0001fee7>] _create_new_namespaces+0x97/0xbc
[<00003d2a>] _bfin_free_exception+0x1a/0x30
[<0000f4a8>] _do_wait+0x434/0x998
[<00097e41>] _smb_add_request+0x2bd/0x4cc
[<000200d2>] _srcu_read_lock+0x16/0x18
[<00104000>] _sr_read_tochdr+0x44/0xb4
[<00103465>] _sr_probe+0x455/0x4dc
[<00037092>] _vfs_read+0xc6/0xf4
[<0006b620>] _ext2_update_inode+0x4c/0x278
[<000200d2>] _srcu_read_lock+0x16/0x18
[<00080151>] _nfs_xdr_symlinkargs+0xcd/0x248
[<0001fff2>] _copy_namespaces+0x6/0xa0
[<000399a2>] _search_binary_handler+0x82/0x140
[<0003af1e>] _do_execve+0x1b2/0x1f0
[<00019dfa>] _____call_usermodehelper+0xb2/0xc0
[<00001686>] _kernel_thread_helper+0x6/0xc
Mem-info:
DMA per-cpu:
CPU 0: Hot: hi: 18, btch: 3 usd: 17 Cold: hi: 6, btch: 1 usd: 5
Active:39 inactive:822 dirty:12 writeback:807 unstable:0
free:9388 slab:822 mapped:0 pagetables:0 bounce:0
DMA free:37552kB min:928kB low:1160kB high:1392kB active:156kB inactive:3288kB present:53848kB pages_scanned:192 all_unreclaimable? no
lowmem_reserve[]: 0 0
DMA: 96*4kB 82*8kB 58*16kB 52*32kB 78*64kB 68*128kB 41*256kB 13*512kB 3*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB 0*32768kB = 37552kB
13568 pages of RAM
9439 free pages
771 reserved pages
853 pages shared
0 pages swap cached
Allocation of length 1064960 from process 245 failed
DMA per-cpu:
CPU 0: Hot: hi: 18, btch: 3 usd: 17 Cold: hi: 6, btch: 1 usd: 5
Active:39 inactive:822 dirty:12 writeback:807 unstable:0
free:9388 slab:822 mapped:0 pagetables:0 bounce:0
DMA free:37552kB min:928kB low:1160kB high:1392kB active:156kB inactive:3288kB present:53848kB pages_scanned:192 all_unreclaimable? no
lowmem_reserve[]: 0 0
DMA: 96*4kB 82*8kB 58*16kB 52*32kB 78*64kB 68*128kB 41*256kB 13*512kB 3*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB 0*32768kB = 37552kB
Unable to allocate RAM for process text/data, errno 12
QuoteReplyEditDelete
2010-04-23 11:18:18 Re: uclinux memeroy questions!!
Robin Getz (UNITED STATES)
Message: 88824
Steven:
Add more physical memory to your board - or determine what is causing the fragmentation - and fix that (application which calls malloc/free too often). You seem to have lots and lots and lots of small pages, but not big ones.
-Robin
QuoteReplyEditDelete
2010-04-24 05:25:38 Re: uclinux memeroy questions!!
steven O (AFGHANISTAN)
Message: 88858
thanks for your answer.
but i can't find where had called malloc/free often? my program just write file into the usb hard disk. looking the oops message, all the functions is belong to kernel. Is kswapd called in this case ? the process of my program was not killed, but the system process was killed.
Are some configurations in the kernel needed to config? thanks.
the attachment is my program file.
test.c
QuoteReplyEditDelete
2010-04-24 21:32:26 Re: uclinux memeroy questions!!
Mike Frysinger (UNITED STATES)
Message: 88862
doing a lot of filesystem operations will fragment memory over time. your choices are to install more memory, or dont launch new applications. mdev was launched in response to a usb event, so if you want that functionality, you'd have to disable mdev auto launching and integrate the event processing into your own main app via netlink.
QuoteReplyEditDelete
2010-04-28 05:15:11 Re: uclinux memeroy questions!!
steven O (AFGHANISTAN)
Message: 88991
thanks for your advices. the bug has be solved!