diff options
author | neal <neal> | 2008-07-04 08:55:52 +0000 |
---|---|---|
committer | neal <neal> | 2008-07-04 08:55:52 +0000 |
commit | dbe6fd98d3e073fce2225680bb67cd8313a5dbf5 (patch) | |
tree | 7e06e9e07a1566f8b079d838d6e921a45f7b5b4d | |
parent | 241960676bb662addd5f0a14117ae20283bf85f5 (diff) |
2008-07-04 Neal H. Walfield <neal@gnu.org>
* _exit.c (_exit): Print a backtrace.
-rw-r--r-- | libc-parts/ChangeLog | 4 | ||||
-rw-r--r-- | libc-parts/_exit.c | 11 |
2 files changed, 15 insertions, 0 deletions
diff --git a/libc-parts/ChangeLog b/libc-parts/ChangeLog index cddab46..1965ec3 100644 --- a/libc-parts/ChangeLog +++ b/libc-parts/ChangeLog @@ -1,3 +1,7 @@ +2008-07-04 Neal H. Walfield <neal@gnu.org> + + * _exit.c (_exit): Print a backtrace. + 2008-07-01 Neal H. Walfield <neal@gnu.org> * process-spawn.c (process_spawn): Separate arguments with a NUL, diff --git a/libc-parts/_exit.c b/libc-parts/_exit.c index ac32e4f..2bec189 100644 --- a/libc-parts/_exit.c +++ b/libc-parts/_exit.c @@ -33,6 +33,17 @@ _exit (int ret) asm ("int $3"); # endif #else + extern int backtrace (void **array, int size); + + void *a[10]; + int count = backtrace (a, sizeof (a) / sizeof (a[0])); + int i; + s_printf ("_exit called from: "); + for (i = 0; i < count; i ++) + s_printf ("%p ", a[i]); + s_printf ("\n"); + + extern struct hurd_startup_data *__hurd_startup_data; /* We try to kill the activity and, if that fails, the main |