| 340 | } |
| 341 | |
| 342 | static void dump_leak_backtrace(const uintptr_t *bt, |
| 343 | void PRINTF_FMT(1,2) |
| 344 | (*print)(const char *fmt, ...)) |
| 345 | { |
| 346 | if (!bt) |
| 347 | return; |
| 348 | |
| 349 | /* First one serves as counter. */ |
| 350 | print(" backtrace:"); |
| 351 | for (size_t i = 1; i < bt[0]; i++) { |
| 352 | backtrace_pcinfo(backtrace_state, |
| 353 | bt[i], dump_syminfo, |
| 354 | NULL, print); |
| 355 | } |
| 356 | } |
| 357 | |
| 358 | bool dump_memleak(struct htable *memtable, |
| 359 | void PRINTF_FMT(1,2) (*print)(const char *fmt, ...)) |