Re: memprof problem (backtrace)
- From: Allin Cottrell <cottrell wfu edu>
- To: gtk-app-devel-list gnome org
- Subject: Re: memprof problem (backtrace)
- Date: Wed, 26 Oct 2005 12:12:31 -0400 (EDT)
I think I've tracked down where the hang is occurring, using memprof
with glibc 2.3.5 on Linux 2.6.13.4 (though I don't undestand _why_
it's occurring).
The do_malloc function in memprof's libmemintercept calls
mi_call_with_backtrace(), which in turns calls the glibc function
backtrace(), and backtrace is not returning.
Below is a commented version of the code, in stack-frame.c: does
this suggest anything?
void
mi_call_with_backtrace (int to_skip,
void callback (int, void **, void *),
void *data)
{
int bufsiz = 128, count;
size_t sz = bufsiz * sizeof (void *);
void **buf;
again:
buf = alloca (sz);
fprintf(stderr, "mi_call_with_backtrace: "
" alloca(%d) called, buf = %p\n",
(int) sz, (void *) buf);
/* the line above produces sensible-looking results */
fprintf(stderr, " calling backtrace on buf\n");
/* the line above is printing OK */
count = backtrace (buf, bufsiz);
fprintf(stderr, " count = %d\n", count);
/* ... but we never get to here! */
if (count == bufsiz)
{
bufsiz = bufsiz * 2;
goto again;
}
callback (count - to_skip, buf + to_skip, data);
}
Allin Cottrell
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]