On 05/10/2012 11:24 PM, Peter Hutterer wrote: > On Mon, Apr 16, 2012 at 11:14:28AM -0700, Chase Douglas wrote: >> Backtraces are often printed in signal context, such as when a segfault >> occurs. >> >> Signed-off-by: Chase Douglas <[email protected]> >> --- >> os/backtrace.c | 49 +++++++++++++++++++++++++++++-------------------- >> 1 files changed, 29 insertions(+), 20 deletions(-) >> >> diff --git a/os/backtrace.c b/os/backtrace.c >> index 81348f4..d41c3f3 100644 >> --- a/os/backtrace.c >> +++ b/os/backtrace.c >> @@ -45,29 +45,37 @@ xorg_backtrace(void) >> int size, i; >> Dl_info info; >> >> - ErrorF("\n"); >> - ErrorF("Backtrace:\n"); >> + ErrorSigSafe("\n"); >> + ErrorSigSafe("Backtrace:\n"); >> size = backtrace(array, 64); > > is backtrace() itself signal-safe? the man pages suggest not yet it appears > to have worked well so far.
I don't know. I think it is on some platforms. I think the loss of functionality here would be quite a burden. I propose assuming it is signal safe, and undoing things if we find it not to be the case. Running Xorg under valgrind and causing xorg_backtrace() to fire does not emit any warnings on my machine, unlike *printf. > This commit should also be moved forward - it should go in before the > BUG_WARN updates Ok. -- Chase _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
