#include "lib.h"
#include "array.h"
+#include "backtrace-string.h"
#include "llist.h"
#include "time-util.h"
#include "istream-private.h"
struct ioloop *ioloop = *_ioloop;
struct timeout *const *to_idx;
struct priorityq_item *item;
+ bool leaks = FALSE;
*_ioloop = NULL;
else
i_warning("%s", error);
io_remove(&_io);
+ leaks = TRUE;
}
i_assert(ioloop->io_pending_count == 0);
else
i_warning("%s", error);
timeout_free(to);
+ leaks = TRUE;
}
array_free(&ioloop->timeouts_new);
else
i_warning("%s", error);
timeout_free(to);
+ leaks = TRUE;
}
priorityq_deinit(&ioloop->timeouts);
else
i_warning("%s", error);
io_wait_timer_remove(&timer);
+ leaks = TRUE;
+ }
+
+ if (leaks) {
+ const char *backtrace;
+ if (backtrace_get(&backtrace) == 0)
+ i_warning("Raw backtrace for leaks: %s", backtrace);
}
if (ioloop->handler_context != NULL)