from Hacker News

Show HN: Heap Explorer

by bkallus on 2/6/25, 4:54 AM with 5 comments

I wrote a little LD_PRELOAD library that makes it easy to inspect and interact with a running program's glibc heap.

It's fun to pause processes, free a bunch of their allocations, then resume them. Most of the time, the processes continue as though nothing happened, but sometimes they do interesting things :)

  • by dzaima on 2/7/25, 9:05 AM

    Would be nice to mention how to determine those *_OFFSET constants. For reference, on my linux mint (glibc 2.39) system this gives them:

        gdb /lib/x86_64-linux-gnu/libc.so.6 -ex 'p &main_arena' -ex 'p malloc'
    
    Also, can attach to an existing process via:

        sudo gdb -p <PID_OF_PROCESS> -ex 'call (void*) dlopen("/path/to/libheap_explorer.so", 2)' -ex 'p explore_heap()'
  • by jamesy0ung on 2/7/25, 9:42 AM

    If you are using a Mac, heapster is a different but also interesting tool for learning about what goes on inside the heap

    https://blackwinghq.com/blog/posts/playing-with-libmalloc/

  • by heinrichhartman on 2/6/25, 10:20 PM

    Can you modify this to listen to a signal (e.g. SIGUSR) instead, for triggering the REPL?