xserver restarting with certain usb events
Adam Jackson
ajax at redhat.com
Wed Dec 7 19:02:48 UTC 2011
On 12/7/11 12:20 PM, Clyde E. Kunkel wrote:
> On 12/06/2011 12:35 PM, Adam Jackson wrote:
>> On 12/6/11 11:27 AM, Clyde E. Kunkel wrote:
>>
>>> [ 428.783] Server terminated successfully (0). Closing log file.
>>
>> This message is there for a reason. It means the X server is terminating
>> "normally", ie, because the session has gone away.
>>
>> Check in ~/.xsession-errors for relevant messages, or in dmesg for
>> segfaults.
>
> bunch of gnomes segfaulting causing X server to restart? Why would usb
> events cause these problems?
USB device plug -> new X input device -> apps query for new device
capabilities -> something goes wrong -> bang.
> [ 471.632799] gnome-settings-[2048]: segfault at 60 ip 00000037e9e1eb39
> sp 00007fff41d46320 error 4 in libgdk-3.so.0.304.0[37e9e00000+82000]
> [ 471.633389] nm-applet[2195]: segfault at 60 ip 00000037e9e1eb39 sp
> 00007fffeabda1f0 error 4 in libgdk-3.so.0.304.0[37e9e00000+82000]
> [ 471.633464] nautilus[2108]: segfault at 60 ip 00000037e9e1eb39 sp
> 00007fff99ae75c0 error 4 in libgdk-3.so.0.304.0[37e9e00000+82000]
Notice that the bit in [] at the end is always the same, as well as the
faulting ip address. Given when you said "current rawhide", you're
probably running gtk3-3.3.4-1.fc17, in which case:
% echo 0x1eb39 | eu-addr2line -e
usr/lib/debug/usr/lib64/libgdk-3.so.0.304.0.debug
/usr/src/debug/gtk+-3.3.4/gdk/gdkdevice.c:1325
(Magic number 0x1eb39 derived from the number after 'ip' minus the
similar-looking number inside the square brackets; one's the instruction
pointer, one's the base address of all code.)
So what's there?
% cat -n usr/src/debug/gtk+-3.3.4/gdk/gdkdevice.c | grep -A10 1320
1320 void
1321 _gdk_device_reset_axes (GdkDevice *device)
1322 {
1323 gint i;
1324
1325 for (i = device->axes->len - 1; i >= 0; i--)
1326 g_array_remove_index (device->axes, i);
1327
1328 g_object_notify (G_OBJECT (device), "n-axes");
1329 }
1330
So either device->axes or device is NULL. Would be trivial to paper
over by just checking for that (I think), but it's probable that some
invariant is being violated if we can ever get to that point.
- ajax
More information about the test
mailing list