os: Use ErrorFSigSafe from FatalError and it's friends
Backtrace logging etc. is already sigsafe, but the actual FatalError message in response is not yet, leading to amusing logs like this: (EE) Segmentation fault at address 0x0 (EE) BUG: triggered 'if (inSignalContext)' (EE) BUG: log.c:499 in LogVMessageVerb() (EE) Warning: attempting to log data in a signal unsafe manner while in signal context. Please update to check inSignalContext and/or use LogMessageVerbSigSafe() or ErrorFSigSafe(). The offending log format message is: Fatal server error: Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
d9848fb4b1
commit
042c6d861f
|
@ -889,7 +889,7 @@ glxDRILeaveVT(ScrnInfoPtr scrn)
|
||||||
__GLXDRIscreen *screen = (__GLXDRIscreen *)
|
__GLXDRIscreen *screen = (__GLXDRIscreen *)
|
||||||
glxGetScreen(xf86ScrnToScreen(scrn));
|
glxGetScreen(xf86ScrnToScreen(scrn));
|
||||||
|
|
||||||
LogMessage(X_INFO, "AIGLX: Suspending AIGLX clients for VT switch\n");
|
LogMessageVerbSigSafe(X_INFO, -1, "AIGLX: Suspending AIGLX clients for VT switch\n");
|
||||||
|
|
||||||
glxSuspendClients();
|
glxSuspendClients();
|
||||||
|
|
||||||
|
|
|
@ -835,7 +835,7 @@ glxDRILeaveVT(ScrnInfoPtr scrn)
|
||||||
__GLXDRIscreen *screen = (__GLXDRIscreen *)
|
__GLXDRIscreen *screen = (__GLXDRIscreen *)
|
||||||
glxGetScreen(xf86ScrnToScreen(scrn));
|
glxGetScreen(xf86ScrnToScreen(scrn));
|
||||||
|
|
||||||
LogMessage(X_INFO, "AIGLX: Suspending AIGLX clients for VT switch\n");
|
LogMessageVerbSigSafe(X_INFO, -1, "AIGLX: Suspending AIGLX clients for VT switch\n");
|
||||||
|
|
||||||
glxSuspendClients();
|
glxSuspendClients();
|
||||||
|
|
||||||
|
|
10
os/log.c
10
os/log.c
|
@ -250,7 +250,7 @@ void
|
||||||
LogClose(enum ExitCode error)
|
LogClose(enum ExitCode error)
|
||||||
{
|
{
|
||||||
if (logFile) {
|
if (logFile) {
|
||||||
ErrorF("Server terminated %s (%d). Closing log file.\n",
|
ErrorFSigSafe("Server terminated %s (%d). Closing log file.\n",
|
||||||
(error == EXIT_NO_ERROR) ? "successfully" : "with error", error);
|
(error == EXIT_NO_ERROR) ? "successfully" : "with error", error);
|
||||||
fclose(logFile);
|
fclose(logFile);
|
||||||
logFile = NULL;
|
logFile = NULL;
|
||||||
|
@ -878,9 +878,9 @@ FatalError(const char *f, ...)
|
||||||
static Bool beenhere = FALSE;
|
static Bool beenhere = FALSE;
|
||||||
|
|
||||||
if (beenhere)
|
if (beenhere)
|
||||||
ErrorF("\nFatalError re-entered, aborting\n");
|
ErrorFSigSafe("\nFatalError re-entered, aborting\n");
|
||||||
else
|
else
|
||||||
ErrorF("\nFatal server error:\n");
|
ErrorFSigSafe("\nFatal server error:\n");
|
||||||
|
|
||||||
va_start(args, f);
|
va_start(args, f);
|
||||||
|
|
||||||
|
@ -897,9 +897,9 @@ FatalError(const char *f, ...)
|
||||||
va_end(apple_args);
|
va_end(apple_args);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
VErrorF(f, args);
|
VErrorFSigSafe(f, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
ErrorF("\n");
|
ErrorFSigSafe("\n");
|
||||||
if (!beenhere)
|
if (!beenhere)
|
||||||
OsVendorFatalError(f, args2);
|
OsVendorFatalError(f, args2);
|
||||||
va_end(args2);
|
va_end(args2);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user