On Tue, Mar 6, 2018 at 11:25 AM, Matthew J Fletcher <ami...@gmail.com> wrote:
> Hi,
>
> I've been investigating an interesting but reproducible crash deep in the
> heap allocator, any help much appreciated.
>
>
> This is the callstack..
>
> _Heap_Is_prev_used() at heapimpl.h:510 0x700ebb8e
> _Heap_Is_used() at heapimpl.h:517 0x700ebb8a
> _Heap_Block_split() at heap.c:336 0x700ebb7c
> _Heap_Block_allocate_from_begin() at heap.c:371 0x700ebbf0
> _Heap_Block_allocate() at heap.c:461 0x700ebdb6
> _Heap_Allocate_aligned_with_boundary() at heapallocate.c:262 0x700ebf0e
> _Heap_Allocate() at heapimpl.h:137 0x700ea4a4
> _Region_Allocate_segment() at regionimpl.h:108 0x700ea4a4
> rtems_region_get_segment() at regiongetsegment.c:79 0x700ea4a4
>
>
> RTEMS_INLINE_ROUTINE bool _Heap_Is_used(
>   const Heap_Block *block
> )
> {
>   const Heap_Block *const next_block =
>     _Heap_Block_at( block, _Heap_Block_size( block ) );
>
>   return _Heap_Is_prev_used( next_block );
> }
>
> so this is the routine above the crash,. in the debugger i can see that
> 'block' is at a valid address, but 'next_block' is "optimized out" and gdb
> wont show it (rtems is already re-compiled with -0g)
>
You should be able to calculate next_block given that you know what
block is, that might help you.

>
> RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
> {
>   return block->size_and_flag & HEAP_PREV_BLOCK_USED;
> }
>
> i presume that in this crashing routine, block must be invalid.
>
> There is still 3.4mb left on the heap at this point (from the stats pointer
> information), its not like this is an early startup crash, from the
> Heap_Statistics;
>
> lifetime_allocated 788736
> lifetime_freed 40704
> size 4194048
> free_size 3445504
> min_free_size 3445504
> free_blocks 3
> max_free_blocks 5
> used_blocks 128
> max_search 4
> searches 289
> allocs 267
> failed_allocs 0
> frees 130
> resizes 0
>
>
> --
>
> regards
> ---
> Matthew J Fletcher
>
>
> _______________________________________________
> users mailing list
> users@rtems.org
> http://lists.rtems.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to