[PATCH 0/6] Fix signal-unsafe logging

Chase Douglas chase.douglas at canonical.com
Fri Apr 6 13:04:06 PDT 2012


On 04/06/2012 12:36 PM, Bryce Harrington wrote:
> On Fri, Apr 06, 2012 at 12:00:50PM -0700, Chase Douglas wrote:
>> On 04/06/2012 11:25 AM, Chase Douglas wrote:
>>> Because corruption can occur, I suggest this be applied to the 1.12
>>> stable series as well. However, I don't know for sure that corruption is
>>> occurring, so it's not a clear cut candidate.
>>
>> So now that I have fixed this issue, I can't reproduce the crash I was
>> seeing before. Under valgrind I don't see any bugs, and under the normal
>> scenario I don't see crashes. The crash I was seeing before was
>> occurring when I put 10 touches on a magic trackpad simultaneously,
>> which would also have triggered the signal logging code paths fixed here.
>>
>> My best guess at this point is that the signal context logging really
>> was corrupting things in the process. If true, then this should
>> definitely be applied to the 1.12 stable branch.
>>
>> This is all preliminary, based on a few minutes of testing. I'll follow
>> up after more people have tested it out.
> 
> Testing failed on pad_to_int32 (I guess?)
> 
> Testing pad_to_int32
> Unlinking from front.
> [mi] Increasing EQ size to 512 to prevent dropped events.
> [mi] EQ overflowing.  Additional events will be discarded until existing
> events are processed.
> 
> Backtrace:
> 0: ./input (0x40000000+0x4e6c7) [0x4004e6c7]
> 1: ./input (mieqEnqueue+0x223) [0x40048653]
> ... etc. ...
> 5: ./input (0x40000000+0x14855) [0x40014855]
> [mi] EQ processing has resumed after 5969 dropped events.
> [mi] This may be caused my a misbehaving driver monopolizing the
> server's resources.
> PASS: input
> PASS: xtest
> PASS: list
> PASS: misc
> PASS: fixes
> PASS: xfree86
> /bin/bash: line 5: 14823 Segmentation fault      (core dumped)
> MALLOC_PERTURB_=15 ${dir}$tst
> FAIL: touch
> ========================================================================
> 1 of 8 tests failed
> 
> 
> Full output here (although stdout/stderr is a bit out of order):
>   http://paste.ubuntu.com/917885/

It's due to the touch tests not initializing the device name, and then
the logging functions trying to dereference the name. I'm guessing
*printf functions ignore NULL string arguments.

I have updated the tests in a commit in my local tree.

Thanks!

-- Chasae


More information about the xorg-devel mailing list