[PATCH v2 05/14] Warn when attempting to log in a signal unsafe manner from signal context

Chase Douglas chase.douglas at canonical.com
Wed Apr 11 16:30:52 PDT 2012


On 04/11/2012 04:24 PM, Peter Hutterer wrote:
> On Mon, Apr 09, 2012 at 11:17:31AM -0700, Chase Douglas wrote:
>> Also, print out the offending message format. This will hopefully help
>> developers track down unsafe logging.
>>
>> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
>> ---
>>  os/log.c |   31 +++++++++++++++++++++++++++++++
>>  1 files changed, 31 insertions(+), 0 deletions(-)
>>
>> diff --git a/os/log.c b/os/log.c
>> index 2583fe8..8a59306 100644
>> --- a/os/log.c
>> +++ b/os/log.c
>> @@ -288,6 +288,21 @@ LogVWrite(int verb, const char *f, va_list args)
>>      int len = 0;
>>      static Bool newline = TRUE;
>>  
>> +    if (inSignalContext) {
>> +        static const char warning[] = "Warning: attempting to log data in a "
>> +                                      "signal unsafe manner while in signal "
>> +                                      "context. Please update to check "
>> +                                      "inSignalContext and/or use "
>> +                                      "LogMessageVerbSigSafe(). The offending "
>> +                                      "log format message is:\n";
>> +
>> +        write(logFileFd, warning, sizeof(warning) - 1);
>> +
>> +        write(logFileFd, f, strlen_sigsafe(f));
>> +
>> +        return;
>> +    }
>> +
> 
> can we use a BUG_WARN derivative (BUG_WARN_SIGSAFE?) here?

Yeah, that makes sense.

-- Chase


More information about the xorg-devel mailing list