https://bugzilla.novell.com/show_bug.cgi?id=716074 https://bugzilla.novell.com/show_bug.cgi?id=716074#c0 Summary: Xvnc crashes when running "xinput list" Classification: openSUSE Product: openSUSE 11.4 Version: Final Platform: All OS/Version: openSUSE 11.4 Status: NEW Severity: Critical Priority: P5 - None Component: X.Org AssignedTo: bnc-team-xorg-bugs@forge.provo.novell.com ReportedBy: marko.veelma@gmail.com QAContact: xorg-maintainer-bugs@forge.provo.novell.com Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 In Xorg itself xinput list works fine but when running in Xvnc it crashes every time #0 0xb72a65a0 in __strlen_sse2 () from /lib/libc.so.6 #1 0x0817dc6a in SizeDeviceInfo (dev=0x845e988) at xiquerydevice.c:204 #2 0x0817e3f8 in ProcXIQueryDevice (client=0x872fc60) at xiquerydevice.c:98 #3 0x081723a7 in ProcIDispatch (client=0x872fc60) at extinit.c:416 #4 0x080b55b7 in Dispatch () at dispatch.c:432 #5 0x080a2ed5 in main (argc=14, argv=0xbf9ef904, envp=0xbf9ef940) SizeDeviceInfo() reads dev->name length. In this case dev->name is NULL xiquerydevice.c lines around 98 are: 94 for (dev = inputInfo.devices; dev; dev = dev->next, i++) 95 { 96 skip[i] = ShouldSkipDevice(client, stuff->deviceid, dev); 97 if (!skip[i]) 98 len += SizeDeviceInfo(dev); 99 } Somehow two last entries in inputInfo.devices list has missing name: (gdb) p *dev $29 = {public = {devicePrivate = 0x0, processInputProc = 0x816c710 <ProcessOtherEvent>, realInputProc = 0x816c710 <ProcessOtherEvent>, enqueueInputProc = 0x80bb280 <EnqueueEvent>, on = 1}, next = 0x862f278, startup = 1, deviceProc = 0x8069b00 <rfbKeybdProc>, inited = 1, enabled = 1, coreEvents = 1, deviceGrab = {grabTime = {months = 0, milliseconds = 1903094146}, fromPassiveGrab = 0, implicitGrab = 0, activeGrab = {next = 0x0, resource = 0, device = 0x0, window = 0x0, ownerEvents = 0, keyboardMode = 0, pointerMode = 0, grabtype = GRABTYPE_CORE, type = 0 '\000', modifiersDetail = {exact = 0, pMask = 0x0}, modifierDevice = 0x0, detail = {exact = 0, pMask = 0x0}, confineTo = 0x0, cursor = 0x0, eventMask = 0, deviceMask = 0, xi2mask = { "\000\000" <repeats 42 times>}}, grab = 0x0, activatingKey = 0 '\000', ActivateGrab = 0x80c35b0 <ActivateKeyboardGrab>, DeactivateGrab = 0x80c33a0 <DeactivateKeyboardGrab>, sync = {frozen = 0, state = 0, other = 0x0, event = 0x0}}, type = 0, xinput_type = 0, name = 0x0, id = 6, key = 0x862f668, valuator = 0x0, button = 0x0, ^^^^^^^^^^^ focus = 0x863cee8, proximity = 0x0, absolute = 0x0, kbdfeed = 0x862f6d8, ptrfeed = 0x0, intfeed = 0x0, stringfeed = 0x0, bell = 0x0, leds = 0x0, xkb_interest = 0x0, config_info = 0x0, unused_classes = 0x0, saved_master_id = 0, devPrivates = 0x862f22c, unwrapProc = 0, spriteInfo = 0x862f210, u = {master = 0x861e8c0, lastSlave = 0x861e8c0}, last = {valuators = {0 <repeats 36 times>}, remainder = { 0 <repeats 36 times>}, numValuators = 0, slave = 0x0}, properties = { properties = 0x862aa20, handlers = 0x862f260}, transform = {m = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}}, xtest_master_id = 0} (gdb) p *dev->next $30 = {public = {devicePrivate = 0x0, processInputProc = 0x816c710 <ProcessOtherEvent>, realInputProc = 0x816c710 <ProcessOtherEvent>, enqueueInputProc = 0x80bb280 <EnqueueEvent>, on = 1}, next = 0x0, startup = 1, deviceProc = 0x8069990 <rfbMouseProc>, inited = 1, enabled = 1, coreEvents = 1, deviceGrab = {grabTime = {months = 0, milliseconds = 1903094146}, fromPassiveGrab = 0, implicitGrab = 0, activeGrab = {next = 0x0, resource = 0, device = 0x0, window = 0x0, ownerEvents = 0, keyboardMode = 0, pointerMode = 0, grabtype = GRABTYPE_CORE, type = 0 '\000', modifiersDetail = {exact = 0, pMask = 0x0}, modifierDevice = 0x0, detail = {exact = 0, pMask = 0x0}, confineTo = 0x0, cursor = 0x0, eventMask = 0, deviceMask = 0, xi2mask = { "\000\000" <repeats 42 times>}}, grab = 0x0, activatingKey = 0 '\000', ActivateGrab = 0x80c35b0 <ActivateKeyboardGrab>, DeactivateGrab = 0x80c33a0 <DeactivateKeyboardGrab>, sync = {frozen = 0, state = 0, other = 0x0, event = 0x0}}, type = 0, xinput_type = 0, name = 0x0, id = 7, key = 0x0, valuator = 0x863d468, button = 0x863cf10, ^^^^^^^^^^^ focus = 0x0, proximity = 0x0, absolute = 0x0, kbdfeed = 0x0, ptrfeed = 0x863d890, intfeed = 0x0, stringfeed = 0x0, bell = 0x0, leds = 0x0, xkb_interest = 0x0, config_info = 0x0, unused_classes = 0x0, saved_master_id = 0, devPrivates = 0x862f58c, unwrapProc = 0, spriteInfo = 0x862f570, u = {master = 0x861e5a0, lastSlave = 0x861e5a0}, last = {valuators = {0 <repeats 36 times>}, remainder = { 0 <repeats 36 times>}, numValuators = 2, slave = 0x0}, properties = { properties = 0x863d848, handlers = 0x863d878}, transform = {m = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}}, xtest_master_id = 0} I don't have any idea when these entries has been added to the list. I can try to find it out but as I'm not very familiar with Xorg it could take time.. I tested it in two differenmt platforms xorg-x11-Xvnc-7.6_1.9.3-162.2.i586 xorg-x11-Xvnc-7.6_1.9.3-157.12.x86_64 Reproducible: Always Steps to Reproduce: 1. open one terminal and run: Xvnc :2 2. open another terminal and run: DISPLAY=:2.0 xinput list Actual Results: Xvnc crashed by SEGFAULT Expected Results: get list of input devices I also opened bug in FreeDesktop bugzilla but they don't work with VNC and I can't figure out from where VNC paches come https://bugs.freedesktop.org/show_bug.cgi?id=40627 -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.