Detecting when heap is near exhaustion or exhausted?
OUTWATER
vac4050 at cae597.rsc.raytheon.com
Wed Jul 26 16:21:07 UTC 2000
All -
Forgot to ask on previous post:
Does RTEMS panic when the heap runs out? If not, is there some whay to perform a
runtime check to determine if the heap is near exhaustion?
Thanks,
keith
>
> All-
>
> The GDB command
>
> p *((Region_Control *)_Region_Information->local_table[1])->Memory->first
>
> was shown in the RTEMS Frequently Asked Questions Manual as a way to determine the
> amount of heap remaining.
>
> I'm debugging an application and I start with this much heap:
> $1 = {back_flag = 0x8d, front_flag = 0x40c, next = 0x3c6514, previous = 0x17bdf4}
> using the command in the FAQ.
>
> But doing this:
> p *((Region_Control *)_Region_Information->local_table[1])->Memory->last
>
> returns
> $2 = {back_flag = 0x1, front_flag = 0x23bdf8, next = 0x17bdf8, previous = 0x3cd798}
> which seems more like what I expect.
>
> When I run my application (tclsh), it crashes with this backtrace snippet:
> #0 0x400 in _uhoh ()
> #1 0x20100017 in ?? ()
> #2 0x96f80 in _API_extensions_Run_postswitch ()
> at ../../../../../../../rtems-4.5.0-beta3/c/src/exec/score/src/apiext.c:100
> #3 0x8e7ee in _Thread_Dispatch () at
> ../../../../../../../rtems-4.5.0-beta3/c/src/exec/score/src/threaddispatch.c:126
> #4 0x84776 in _Thread_Enable_dispatch () at
> ../../../../../../gen68360/lib/include/rtems/score/thread.inl:199
> #5 0x84696 in rtems_region_get_segment (id=604045313, size=8, option_set=1,
> timeout=0, segment=0x177548)
> at
> ../../../../../../../rtems-4.5.0-beta3/c/src/exec/rtems/src/regiongetsegment.c:84
> #6 0x7ef88 in malloc (size=8) at
> ../../../../../../rtems-4.5.0-beta3/c/src/lib/libc/malloc.c:160
> #7 0x6fcfa in TclpAlloc (nbytes=8) at ./../generic/tclAlloc.c:671
> #8 0x1793a in Tcl_Alloc (size=8) at ./../generic/tclCkalloc.c:813
>
>
> It seems that malloc is involved, so I try to get the heap size with:
> p *((Region_Control *)_Region_Information->local_table[1])->Memory->last
>
> and get:
> $4 = {back_flag = 1, front_flag = 2313828, next = 0x17bdf8, previous = 0x3b8f7c}
>
> Looks like there is still plenty of heap.
>
> Can anyone point out any flaws or errors in my thinking?
>
> Thanks!
>
> Keith
>
>
>
>
More information about the users
mailing list