Re: wkspace failed allocations with heap protection enabled
On Wed, Apr 13, 2022 at 10:51 AM Matthew J Fletcher wrote: > Hi Joel, > > Works fine without debug, its the deferred free doing _Heap_Allocate with > the negative size thats causing it. > Glad that workaround gets you by it. Please do file a ticket though. :) --joel > > > On Wed, 13 Apr 2022 at 16:09, Joel Sherrill wrote: > >> This appears to be a bad side-effect of the way the deferred free is >> implemented >> when the memory protection/fence is enabled. This is turned on by >> enabling >> rtems debug. >> >> I'd recommend filing a ticket and assigning it to Sebastian for a real >> fix. >> >> In the meantime, see if building RTEMS without debug enabled helps. >> >> --joel >> >> On Wed, Apr 13, 2022 at 4:30 AM Matthew J Fletcher >> wrote: >> >>> Hi, >>> >>> Investigating the "Total number of failed allocations:" from the >>> wkspace cmd i see that; >>> >>> /* Statistics */ >>> ++stats->failed_allocs; >>> >>> Are incremented when _Heap_Allocate_aligned_with_boundary fails, however >>> it >>> seems this will routinely fail due to; >>> >>> _Heap_Protection_free_all_delayed_blocks seemingly on purpose creating an >>> impossibly large allocation. >>> >>> uintptr_t large = 0 >>> - (uintptr_t) HEAP_BLOCK_HEADER_SIZE >>> - (uintptr_t) HEAP_ALLOC_BONUS >>> - (uintptr_t) 1; >>> >>> void *p = _Heap_Allocate( heap, large ); >>> >>> This makes it difficult to place a breakpoint on failed_allocs to >>> investigate true low memory situations with heap protection enabled. >>> >>> >>> regards >>> --- >>> Matthew J Fletcher >>> ___ >>> users mailing list >>> users@rtems.org >>> http://lists.rtems.org/mailman/listinfo/users >>> >> > > -- > > regards > --- > Matthew J Fletcher > > ___ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users
Re: wkspace failed allocations with heap protection enabled
This appears to be a bad side-effect of the way the deferred free is implemented when the memory protection/fence is enabled. This is turned on by enabling rtems debug. I'd recommend filing a ticket and assigning it to Sebastian for a real fix. In the meantime, see if building RTEMS without debug enabled helps. --joel On Wed, Apr 13, 2022 at 4:30 AM Matthew J Fletcher wrote: > Hi, > > Investigating the "Total number of failed allocations:" from the > wkspace cmd i see that; > > /* Statistics */ > ++stats->failed_allocs; > > Are incremented when _Heap_Allocate_aligned_with_boundary fails, however it > seems this will routinely fail due to; > > _Heap_Protection_free_all_delayed_blocks seemingly on purpose creating an > impossibly large allocation. > > uintptr_t large = 0 > - (uintptr_t) HEAP_BLOCK_HEADER_SIZE > - (uintptr_t) HEAP_ALLOC_BONUS > - (uintptr_t) 1; > > void *p = _Heap_Allocate( heap, large ); > > This makes it difficult to place a breakpoint on failed_allocs to > investigate true low memory situations with heap protection enabled. > > > 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
wkspace failed allocations with heap protection enabled
Hi, Investigating the "Total number of failed allocations:" from the wkspace cmd i see that; /* Statistics */ ++stats->failed_allocs; Are incremented when _Heap_Allocate_aligned_with_boundary fails, however it seems this will routinely fail due to; _Heap_Protection_free_all_delayed_blocks seemingly on purpose creating an impossibly large allocation. uintptr_t large = 0 - (uintptr_t) HEAP_BLOCK_HEADER_SIZE - (uintptr_t) HEAP_ALLOC_BONUS - (uintptr_t) 1; void *p = _Heap_Allocate( heap, large ); This makes it difficult to place a breakpoint on failed_allocs to investigate true low memory situations with heap protection enabled. regards --- Matthew J Fletcher ___ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users