There Xserver starts. <..> [ 3287.050] (II) config/udev: ignoring device /dev/tty7 without property ID_INPUT set [ 3287.050] (II) config/udev: ignoring device /dev/tty8 without property ID_INPUT set [ 3287.050] (II) config/udev: ignoring device /dev/tty9 without property ID_INPUT set Now it finished detecting devices. Input thread tries to acquire the lock. [ 3287.054] (II) inputh lock ... [ 3287.054] (II) inputh locked Input thread sees the attachments. [ 3287.054] (II) dev fd=19 state=0 [ 3287.054] (II) dev fd=20 state=0 [ 3287.054] (II) dev fd=21 state=0 [ 3287.054] (II) dev fd=22 state=0 [ 3287.054] (II) dev fd=23 state=0 [ 3287.054] (II) dev fd=24 state=0 There are 6 devices total. User does Ctrl-Alt-F1 Xserver (main thread in hw/xfree86/common/xf86Events.c, in xf86DisableDevicesForVTSwitch) for each device calls InputThreadUnregisterDev, which really just sets dev->state (under an input_lock), so that input thread sees that and does the proper detach. [ 3291.194] (II) InputThreadUnregisterDev(fd=19) ... [ 3291.194] (II) InputThreadUnregisterDev: found a device: fd=19 state=1 For first device, input thread sees the dev->state change. It tries to acquire the lock. [ 3291.194] (II) inputh lock ... [ 3291.208] (II) inputh locked With lock held, input thread detaches the device. [ 3291.208] (II) dev fd=19 state=2 The same goes for device 2. [ 3291.208] (II) InputThreadUnregisterDev(fd=20) ... [ 3291.208] (II) InputThreadUnregisterDev: found a device: fd=20 state=1 [ 3291.208] (II) inputh lock ... [ 3291.220] (II) inputh locked [ 3291.220] (II) dev fd=20 state=2 The same goes for device 3. [ 3291.220] (II) InputThreadUnregisterDev(fd=21) ... [ 3291.220] (II) InputThreadUnregisterDev: found a device: fd=21 state=1 [ 3291.220] (II) inputh lock ... [ 3291.232] (II) inputh locked [ 3291.232] (II) dev fd=21 state=2 The same goes for device 4. [ 3291.232] (II) InputThreadUnregisterDev(fd=22) ... [ 3291.232] (II) InputThreadUnregisterDev: found a device: fd=22 state=1 [ 3291.232] (II) inputh lock ... [ 3291.247] (II) inputh locked [ 3291.247] (II) dev fd=22 state=2 The same goes for device 5. [ 3291.247] (II) InputThreadUnregisterDev(fd=23) ... [ 3291.247] (II) InputThreadUnregisterDev: found a device: fd=23 state=1 [ 3291.247] (II) inputh lock ... [ 3291.259] (II) inputh locked [ 3291.259] (II) dev fd=23 state=2 The same goes for device 6 in the main thread. [ 3291.259] (II) InputThreadUnregisterDev(fd=24) ... [ 3291.259] (II) InputThreadUnregisterDev: found a device: fd=24 state=1 Now the last dev->state is set. Time for input thread to acquire the lock and detach the device. [ 3291.259] (II) inputh lock ... Input thread now waits on the lock. The lock, however, is held by the main thread. Where? In the xf86DisableDevicesForVTSwitch. What for? So that input thread suspends for while on another VT. What this is for? So that there is no accidental input processing by programming mistake. So input thread would not be able to process the events until VT is switched back. User does Ctrl-Alt-F7 Xserver re-initializes the monitor. [ 3292.388] (II) modeset(0): <..> <..> [ 3292.388] (II) modeset(0): <..> Xserver's main thread now attaches input devices. (By just setting the dev->state). [ 3292.501] (II) InputThreadRegisterDev(fd=19) ... [ 3292.501] (II) InputThreadRegisterDev(fd=20) ... [ 3292.501] (II) InputThreadRegisterDev(fd=21) ... [ 3292.501] (II) InputThreadRegisterDev(fd=22) ... [ 3292.501] (II) InputThreadRegisterDev(fd=23) ... It does this for first five devices. For sixth, it sees a matching dev (the unprocessed one, with dev->state == device_state_removed). And does not signal (by means of dev->state) the input thread to attach the device. [ 3292.501] (II) InputThreadRegisterDev(fd=24) ... [ 3292.501] (II) InputThreadRegisterDev: found a device: fd=24 state=2 The main thread is now done with all the six devices OS has. It releases input lock that was being held all the VT switch. Input thread acquires the long-awaited lock. [ 3292.502] (II) inputh locked Now input thread would process six dev->state-s. [ 3292.502] (II) dev fd=19 state=0 [ 3292.502] (II) dev fd=20 state=0 [ 3292.502] (II) dev fd=21 state=0 [ 3292.502] (II) dev fd=22 state=0 [ 3292.502] (II) dev fd=23 state=0 It sees five devices attached and one running. The sixth device does not get attached (by the input thread), hence the bug. Now timeout for Xserver expires, and it is sent a SIGTERM. [ 3306.673] (II) InputThreadUnregisterDev(fd=19) ... [ 3306.673] (II) InputThreadUnregisterDev: found a device: fd=19 state=1 [ 3306.674] (II) inputh lock ... [ 3306.684] (II) inputh locked [ 3306.684] (II) dev fd=19 state=2 [ 3306.684] (II) InputThreadUnregisterDev(fd=20) ... [ 3306.684] (II) InputThreadUnregisterDev: found a device: fd=20 state=1 [ 3306.684] (II) inputh lock ... [ 3306.696] (II) inputh locked [ 3306.696] (II) dev fd=20 state=2 [ 3306.696] (II) InputThreadUnregisterDev(fd=21) ... [ 3306.696] (II) InputThreadUnregisterDev: found a device: fd=21 state=1 [ 3306.696] (II) inputh lock ... [ 3306.708] (II) inputh locked [ 3306.708] (II) dev fd=21 state=2 [ 3306.708] (II) InputThreadUnregisterDev(fd=22) ... [ 3306.708] (II) InputThreadUnregisterDev: found a device: fd=22 state=1 [ 3306.708] (II) inputh lock ... [ 3306.720] (II) inputh locked [ 3306.720] (II) dev fd=22 state=2 [ 3306.720] (II) InputThreadUnregisterDev(fd=23) ... [ 3306.720] (II) InputThreadUnregisterDev: found a device: fd=23 state=1 [ 3306.720] (II) inputh lock ... [ 3306.732] (II) inputh locked [ 3306.732] (II) dev fd=23 state=2 [ 3306.732] (II) InputThreadUnregisterDev(fd=24) ... [ 3306.732] (II) InputThreadUnregisterDev: found a device: fd=24 state=1 [ 3306.732] (II) inputh lock ... [ 3306.744] (II) inputh locked [ 3306.744] (II) dev fd=24 state=2 [ 3306.744] (II) evdev: <..>: Close [ 3306.744] (II) UnloadModule: "evdev" [ 3306.744] (II) evdev: <..>: Close [ 3306.744] (II) UnloadModule: "evdev" [ 3306.744] (II) evdev: <..>: Close [ 3306.744] (II) UnloadModule: "evdev" [ 3306.744] (II) evdev: Power Button: Close [ 3306.744] (II) UnloadModule: "evdev" [ 3306.745] (II) evdev: Video Bus: Close [ 3306.745] (II) UnloadModule: "evdev" [ 3306.745] (II) evdev: Power Button: Close [ 3306.745] (II) UnloadModule: "evdev" [ 3306.767] (II) Server terminated successfully (0). Closing log file.