Anshika Gupta commented: https://gitlab.rtems.org/rtems/programs/gsoc/-/issues/41#note_143587 @gedare @chris Yuh, I could locate that call of `_Heap_Get_Information()` and could see that it is calling `_Heap_Protection_free_all_delayed_blocks()`. I rebuilt the zynqmp_qemu with` RTEMS_DEBUG = True` which **enabled the Heap_Protection** and changed my hello.c code such that I initially allocated memory and then freed it and printed the `delayed_free_block_count` which was equal to **5**. After calling malloc_info once, the **delayed_free_block_count decreased to 0** showing that malloc_info() is freeing the delayed blocks which I think recreates the issue of "malloc_info changes the state of the heap". Could you please confirm whether this counts as recreating the issue and should I start writing the proposal for this project? My Output ``` anshikagupta@Anshikas-MacBook-Pro hello % qemu-system-aarch64 \ -machine xlnx-zcu102 \ -m 1024 \ -nographic \ -no-reboot \ -kernel build/aarch64-rtems7-zynqmp_qemu/hello.exe HEAP_PROTECTION is ENABLED delayed_free_block_count = 5 Stats after first malloc_info Heap Information Free blocks : 1 Free largest : 1071307712 bytes Free total : 1071307712 bytes Used blocks : 14 Used largest : 8384 bytes Used total : 20640 bytes Heap Statistics Lifetime alloc : 26160 bytes Lifetime freed : 5520 bytes Current free : 1071307712 bytes Free blocks stat : 1 Used blocks stat : 14 delayed_free_block_count = 0 Stats after second malloc info Heap Information Free blocks : 1 Free largest : 1071307712 bytes Free total : 1071307712 bytes Used blocks : 14 Used largest : 8384 bytes Used total : 20640 bytes Heap Statistics Lifetime alloc : 26160 bytes Lifetime freed : 5520 bytes Current free : 1071307712 bytes Free blocks stat : 1 Used blocks stat : 14 delayed_free_block_count = 0 [ RTEMS shutdown ] RTEMS version: 7.0.0.e5eaa824202a3760d508012b13b9df45c43e670c RTEMS tools: 15.2.0 20250808 (RTEMS 7, RSB 424f142d70c97ca4e498e58d666d798c9de4a264, Newlib 038afec1) executing thread ID: 0x0a010001 executing thread name: UI1 ``` The hello.c code I used ``` #include <rtems/confdefs.h> #include <rtems/malloc.h> #include <rtems/libcsupport.h> #include <rtems/score/heapinfo.h> #include <rtems/score/heapimpl.h> static void print_info(Heap_Information_block *info) { printf("Heap Information\n"); printf(" Free blocks : %zu\n", info->Free.number); printf(" Free largest : %zu bytes\n", info->Free.largest); printf(" Free total : %zu bytes\n", info->Free.total); printf(" Used blocks : %zu\n", info->Used.number); printf(" Used largest : %zu bytes\n", info->Used.largest); printf(" Used total : %zu bytes\n", info->Used.total); printf("Heap Statistics\n"); printf(" Lifetime alloc : %llu bytes\n", info->Stats.lifetime_allocated); printf(" Lifetime freed : %llu bytes\n", info->Stats.lifetime_freed); printf(" Current free : %zu bytes\n", info->Stats.free_size); printf(" Free blocks stat : %u\n", info->Stats.free_blocks); printf(" Used blocks stat : %u\n", info->Stats.used_blocks); } #ifdef HEAP_PROTECTION static void print_delayed() { printf("delayed_free_block_count = %d\n", RTEMS_Malloc_Heap->Protection.delayed_free_block_count); } #endif rtems_task Init(rtems_task_argument ignored) { #ifdef HEAP_PROTECTION printf("HEAP_PROTECTION is ENABLED\n"); #else printf("HEAP_PROTECTION is NOT ENABLED\n"); #endif void *ptrs[5]; Heap_Information_block before; Heap_Information_block after; for (int i = 0; i < 5; i++) { ptrs[i] = malloc(1024); } for (int i = 0; i < 5; i++) { free(ptrs[i]); } #ifdef HEAP_PROTECTION print_delayed(); #endif malloc_info(&before); printf("Stats after first malloc_info\n"); print_info(&before); #ifdef HEAP_PROTECTION print_delayed(); #endif malloc_info(&after); printf("Stats after second malloc info\n"); print_info(&after); #ifdef HEAP_PROTECTION print_delayed(); #endif exit(0); } ``` -- View it on GitLab: https://gitlab.rtems.org/rtems/programs/gsoc/-/issues/41#note_143587 You're receiving this email because of your account on gitlab.rtems.org.
_______________________________________________ bugs mailing list [email protected] http://lists.rtems.org/mailman/listinfo/bugs
