Hi Lewis, 2024-05-27 19:34 (UTC-0500), Lewis Donzis: > I've been wondering why we exclude memory allocated by eal_get_virtual_area() > from core dumps? (More specifically, it calls eal_mem_set_dump() to call > madvise() to disable core dumps from the allocated region.) > > On many occasions, when debugging after a crash, it would have been very > convenient to be able to see the contents of an mbuf or other object > allocated in contigmem space. And we often avoid using the rte memory > allocator just because of this. > > Is there any reason for this, or could it perhaps be a compile-time > configuration option not to call madvise()?
Memory reserved by eal_get_virtual_area() is not yet useful, but it is very large, so by excluding it from dumps, DPDK prevents dumps from including large zero-filled parts. It also makes sense to call eal_mem_set_dump(..., false) from eal_memalloc.c:free_seg(), because of --huge-unlink=never: in this mode (Linux-only), freed segments are not cleared, so if they were included into dump, it would be a lot of garbage data. Newly allocated hugepages are not included into dumps because this would make dumps very large by default. However, this could be an opt-in as a runtime option if need be.