This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Memory allocation failure
- From: David Brennan <eCos at brennanhome dot com>
- To: eCos Discussion List <ecos-discuss at sources dot redhat dot com>
- Date: Fri, 06 May 2005 06:57:19 -0700
- Subject: [ECOS] Memory allocation failure
I have created two different applications with the same eCos
configuration and essentially the same code base. One trivial
application which is missing most of the meat of the main application.
The trivial application runs fine. However when I try and start the real
application, it dies during my static constructors. I have traced the
problem down to a malloc call, but GDB eventually hangs while trying to
single step through there. It always hangs at this one particular
malloc, when constructing one particular instantiation of a class. Any
ideas? Is there a fixed number of pool elements which can be allocated
using dlmalloc?
Target is i386 VME based PC.
I have asserts turned on.
gdb output:
{my code here}
902 while( (p = (heapBlockHeaderT*) malloc(nSizeWithHeader)) ==
NULL )
(gdb) s
malloc (size=160)
at
/ecos-c/cygwin/opt/ecos/Applications/ecos/install/include/cyg/memalloc/dlmalloc.hxx:133
133 try_alloc( cyg_int32 size ) { return mypool.try_alloc( size ); }
(gdb) s
432 sched_lock++;
(gdb) n
251 CYG_ASSERTCLASS( this, "Bad this pointer");
(gdb)
358 {
(gdb)
403 if( this == NULL ) return false;
(gdb)
394 {
(gdb)
253 cyg_uint8 *ret = pool.try_alloc( size );
(gdb) p mypool
$1 = {pool = {arenabase = 0x26f830 "U\211å\203ì\b\203ì\bhÿÿ", arenasize
= 2559322, av_ = {
0x27118a, 0x273668, 0x274142, 0x277820, 0x27a0d0, 0x27b808,
0x27c34c, 0x27d278, 0x27e116,
0x27faa0, 0x28019a, 0x280434, 0x2819f0, 0x282528, 0x282c00,
0x28341e, 0x283590, 0x283fde,
0x284540, 0x2863e2, 0x286954, 0x287a6a, 0x287cf8, 0x2882c0,
0x2886d0, 0x28c59a, 0x28cb7e,
0x28cc44, 0x28ceda, 0x290a88, 0x2911dc, 0x291360, 0x2922f4,
0x29321a, 0x2935a4, 0x29613a,
0x2965be, 0x296844, 0x297348, 0x299fc4, 0x29b650, 0x29e0b4,
0x29e146, 0x29e680, 0x29eeba,
0x29fd86, 0x2a109c, 0x2a186c, 0x2a1ffa, 0x2a2b32, 0x2a54ac,
0x2a5a48, 0x2a8a5a, 0x2b90f0,
0x2e1eac, 0x2ade8c, 0x2c7eec, 0x2ccfa8, 0x2c1610, 0x2c1da0,
0x2c1684, 0x2df5b0, 0x2e31b0,
0x2ae3a4, 0x2c8dfc, 0x2ca95c, 0x2cafbc, 0x2ad124, 0x2bf3a8,
0x2bac14, 0x2c8604, 0x2e109c,
0x2bad20, 0x2bb3a4, 0x2bcb44, 0x2b7ee0, 0x208db2, 0x2097aa,
0x212b92, 0x22f2fa, 0x231ddc,
0x232262, 0x2652e0, 0x266466, 0x26b084, 0x26b8f8, 0x26f84a,
0x2711a4, 0x273682, 0x27415c,
0x27783a, 0x27a0ea, 0x27b822, 0x27c366, 0x27e130, 0x27faba,
0x2801b4, 0x281a0a, 0x282542,
0x282c1a, 0x283438, 0x2863fc, 0x287a84, 0x287d12, 0x2882da,
0x2886ea, 0x28c5b4, 0x28cb98,
0x28cc5e, 0x28cef4, 0x290aa2, 0x29137a, 0x29230e, 0x2935be,
0x296154, 0x2965d8, 0x297362,
0x299fde, 0x29b66a, 0x29e0ce, 0x29eed4, 0x29fda0, 0x2a10b6,
0x2a2014, 0x2a2b4c, 0x2a54c6,
0x2a5a62, 0x2a8a74, 0x2c7f04, 0x2c1628, 0x2c1db8, 0x2c169c,
0x2df5c8, 0x2e31c8, 0x2ae3bc,
0x2c8e14, 0x2ca974, 0x2cafd4, 0x2bf3c0, 0x2bac2c, 0x2e10b4,
0x2bb3bc, 0x2bcb5c, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x2dc2dc, 0x0, 0x39ad86, 0x0, 0x0, 0x0,
0x0, 0x0, 0x2cbe98, 0x0,
0x399d3a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e40f4, 0x0, 0x39c6d9, 0x0,
0x0, 0x0, 0x0, 0x0,
0x2ccfc0, 0x0, 0x39a1e4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2d8c1c, 0x0,
0x39abec, 0x0, 0x0, 0x0,
0x0, 0x0, 0x2d8be8, 0x39efa0, 0x39a61c, 0x0, 0x0, 0x0, 0x0, 0x0,
0x2d8be8, 0x39e960...}},
queue = {<Cyg_ThreadQueue_Implementation> = {<Cyg_CList_T<Cyg_Thread>>
= {<Cyg_CList> = {
head = 0x2ae3dc}, <No data fields>}, <No data fields>}, <No
data fields>}}
(gdb) s
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss