fix mallinfo2 (#19381)
* fix mallinfo2 * make sure they are positive
Costa Tsaousis committed
Jan 12, 2025 at 17:24 UTC
f6f619d8937bb223133ceb89501eb2c74157c8ba
1 file changed
+5
-10
src/daemon/pulse/pulse-daemon-memory.c
+5
-10
@@ -496,19 +496,14 @@ void pulse_daemon_memory_do(bool extended) {
496
497
struct mallinfo2 mi = mallinfo2();
498
499
- // Memory used in mmapped regions
499
+ // size_t total = mi.uordblks;
500
size_t used_mmap = mi.hblkhd;
501
+ size_t used_arena = mi.arena;
502
502
- // Memory used in arena (non-mmapped allocations)
503
- // uordblks includes both arena and mmap allocations, so we subtract mmap
504
- size_t used_arena = (mi.uordblks > mi.hblkhd) ? mi.uordblks - mi.hblkhd : 0;
505
-
506
- // Releasable memory (can be released via malloc_trim())
503
+ size_t unused_total = mi.fordblks;
504
size_t unused_releasable = mi.keepcost;
508
-
509
- // Fragmentation (remaining free space that's not easily releasable)
510
- // This includes free chunks (fordblks) minus the releasable space
511
- size_t unused_fragments = (mi.fordblks > mi.keepcost) ? mi.fordblks - mi.keepcost : 0;
505
+ // size_t unused_fast = mi.fsmblks;
506
+ size_t unused_fragments = (unused_total > unused_releasable) ? unused_total - unused_releasable : 0;
507
508
rrddim_set_by_pointer(st_mallinfo, rd_unused_releasable, (collected_number)unused_releasable);
509
rrddim_set_by_pointer(st_mallinfo, rd_unused_fragments, (collected_number)unused_fragments);