(I'm forwarding this bug upstream on the behalf of another user, for the original downstream bug report please see: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/370851 ) Repro steps: 0. (using ubuntu 9.04 final; probably works on all xserver 1.6.0 systems though) 1. attach barcode reader hw to X of model [ref #1] 2. scan a barcode ==> immediate segv in xserver, return to GDM, fail. ref #1: the specific barcode reader hw model is: http://www.rakuten.co.jp/fksystem/702994/613735/ Here is the "bt full": Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb7a6d6d0 (LWP 4704)] updateSlaveDeviceCoords (master=0x995c258, pDev=0x99e87f8) at ../../dix/getevents.c:168 168 ../../dix/getevents.c: No such file or directory. in ../../dix/getevents.c (gdb) backtrace full #0 updateSlaveDeviceCoords (master=0x995c258, pDev=0x99e87f8) at ../../dix/getevents.c:168 scr = (ScreenPtr) 0x0 i = lastSlave = #1 0x080a0958 in GetKeyboardValuatorEvents (events=0x95ad238, pDev=0x99e87f8, type=2, key_code=13, first_valuator=0, num_valuators=0, valuators=0x0) at ../../dix/getevents.c:541 numEvents = ms = sym = 52 kbp = #2 0x080a0cda in GetKeyboardEvents (events=0x95ad238, pDev=0x99e87f8, type=2, key_code=13) at ../../dix/getevents.c:743 No locals. #3 0x080d817b in xf86PostKeyboardEvent (device=0x99e87f8, key_code=13, is_down=1) at ../../../../hw/xfree86/common/xf86Xinput.c:931 nevents = i = pointer = (DeviceIntPtr) 0x995be98 #4 0xb58893db in EvdevReadInput (pInfo=0x99b6de0) at ../../src/evdev.c:256 ev = {time = {tv_sec = 1241755265, tv_usec = 788288}, type = 1, code = 5, value = 1} len = value = 1 dx = 0 dy = 0 abs = 0 button = 0 pEvdev = (EvdevPtr) 0x99e7ce0 #5 0x080c7da7 in xf86SigioReadInput (fd=30, closure=0x99b6de0) at ../../../../hw/xfree86/common/xf86Events.c:311 errno_save = 11 sigstate = 1 #6 0x080b82cc in xf86SIGIO (sig=29) at ../../../../../hw/xfree86/os-support/linux/../shared/sigio.c:114 i = 1 ready = {fds_bits = {1073741824, 0 }} to = {tv_sec = 0, tv_usec = 0} save_errno = 11 r = 1 #7 No symbol table info available. #8 0xb80c6430 in __kernel_vsyscall () No symbol table info available. #9 0xb7d5e77d in ___newselect_nocancel () from /lib/tls/i686/cmov/libc.so.6 No locals. #10 0x081329f0 in WaitForSomething (pClientsReady=0x99b3398) at ../../os/WaitFor.c:228 i = waittime = {tv_sec = 59, tv_usec = 249118} wt = (struct timeval *) 0xbfbe3600 timeout = clientsReadable = {fds_bits = {0 }} clientsWritable = {fds_bits = {163428176, -1213807560, 163429268, 136208372, 163428200, 157825752, 157825752, 157950132, 2, 32, 2, -1210183692, -1210179264, 163431936, -1078053544, -1211157066, -1210179264, 163431936, 163431928, 136208372, 163431936, 163153512, -1078053528, 135499809, 163431936, 136208372, -1078053464, 134696004, 163431936, 23069101, -1078053464, 4096}} curclient = selecterr = 2264 nready = devicesReadable = {fds_bits = {163428176, -1235542028, -1078053720, -1235570038, 163428176, 163428176, -1078053720, 135499809, -1231418896, 157825752, 163428200, -1232039351, 163428176, -1231312192, -1211159436, 134688279, 162560600, 157830496, -1211159436, 136208372, 163429260, 157825752, -1078053640, 135788002, 163428176, 136274600, 163431936, -1210179264, 1, 32, -1078053576, -1213853672}} now = 429526 someReady = 0 #11 0x0808d2be in Dispatch () at ../../dix/dispatch.c:367 result = 0 client = (ClientPtr) 0x9b079d0 nready = -1 start_tick = 360 #12 0x080722ed in main (argc=10, argv=0xbfbe3754, envp=0x0) at ../../dix/main.c:397 i = alwaysCheckForInput = {0, 1}