diff options
Diffstat (limited to 'os')
-rw-r--r-- | os/backtrace.c | 7 | ||||
-rw-r--r-- | os/osinit.c | 2 | ||||
-rw-r--r-- | os/xdmcp.c | 7 |
3 files changed, 14 insertions, 2 deletions
diff --git a/os/backtrace.c b/os/backtrace.c index fcc8274e4..c11552125 100644 --- a/os/backtrace.c +++ b/os/backtrace.c @@ -369,6 +369,13 @@ xorg_backtrace(void) return; } +/* Cygwin-specific reporter script which uses exec_wrapper */ +void +xorg_crashreport(void) +{ + return xorg_backtrace_exec_wrapper(BINDIR "/xorg-crashreport"); +} + #endif #endif #endif diff --git a/os/osinit.c b/os/osinit.c index 2791b53f2..c59b94bed 100644 --- a/os/osinit.c +++ b/os/osinit.c @@ -144,6 +144,8 @@ OsSigHandler(int signo) /* log, cleanup, and abort */ xorg_backtrace(); + xorg_crashreport(); + FatalError("Caught signal %d (%s). Server aborting\n", signo, strsignal(signo)); } diff --git a/os/xdmcp.c b/os/xdmcp.c index 99616d94b..c5204adfb 100644 --- a/os/xdmcp.c +++ b/os/xdmcp.c @@ -1409,8 +1409,11 @@ recv_alive_msg(unsigned length) static void XdmcpFatal(const char *type, ARRAY8Ptr status) { - FatalError("XDMCP fatal error: %s %*.*s\n", type, - status->length, status->length, status->data); + char *text = malloc(status->length + 1); + strncpy(text, status->data, status->length); + text[status->length] = 0; + FatalError("XDMCP fatal error: %s %s\n", type, text); + free(text); } static void |