Using the debug packages you provided in #3, I get a different traceback. It's consistent across crashes, except for a few values. Program received signal SIGUSR1, User defined signal 1. 0x00007f3a9ac43123 in select () from /lib/x86_64-linux-gnu/libc.so.6 #0 0x00007f3a9ac43123 in select () from /lib/x86_64-linux-gnu/libc.so.6 No symbol table info available. #1 0x000000000045d07b in WaitForSomething (pClientsReady=0x4223ef0) at ../../os/WaitFor.c:232 i = waittime = {tv_sec = 113, tv_usec = 785619} wt = 0x7fff3c80b140 timeout = clientsReadable = {fds_bits = {0 }} clientsWritable = {fds_bits = {37909264, 4358308, 16777220, 140734208454804, 0, 67767824, 0, 32, 69320416, 4527564, 70041344, 4583109, 140734208454960, 32, 0, 0}} selecterr = nready = 0 devicesReadable = {fds_bits = {16777220, 140734208454888, 70041344, 4763888, 70041344, 16777220, 1073741825, 70314624, 0, 0, 16, 0, 48, 140734208454800, 140734208454720, 66656480}} now = someReady = #2 0x0000000000434f42 in Dispatch () at ../../dix/dispatch.c:367 clientReady = 0x4223ef0 result = client = nready = icheck = 0x7f1430 start_tick = #3 0x0000000000421a7e in main (argc=6, argv=, envp=) at ../../dix/main.c:287 i = alwaysCheckForInput = {0, 1} Program received signal SIGSEGV, Segmentation fault. 0x00000000004455b5 in PlayReleasedEvents () at ../../dix/events.c:1188 in ../../dix/events.c Here's a diff from another run: -0x00007f9a453a2123 in select () from /lib/x86_64-linux-gnu/libc.so.6 +0x00007f3a9ac43123 in select () from /lib/x86_64-linux-gnu/libc.so.6 Program received signal SIGUSR1, User defined signal 1. -0x00007f9a453a2123 in select () from /lib/x86_64-linux-gnu/libc.so.6 -#0 0x00007f9a453a2123 in select () from /lib/x86_64-linux-gnu/libc.so.6 +0x00007f3a9ac43123 in select () from /lib/x86_64-linux-gnu/libc.so.6 +#0 0x00007f3a9ac43123 in select () from /lib/x86_64-linux-gnu/libc.so.6 No symbol table info available. -#1 0x000000000045d07b in WaitForSomething (pClientsReady=0x2999ef0) at ../../os/WaitFor.c:232 +#1 0x000000000045d07b in WaitForSomething (pClientsReady=0x4223ef0) at ../../os/WaitFor.c:232 i = - waittime = {tv_sec = 113, tv_usec = 244163} - wt = 0x7fffd55c06e0 + waittime = {tv_sec = 113, tv_usec = 785619} + wt = 0x7fff3c80b140 timeout = clientsReadable = {fds_bits = {0 }} - clientsWritable = {fds_bits = {12178192, 4358308, 16777220, 140736772965940, 0, 42036752, 0, 32, 44737920, 4527564, 44300576, 4583109, 140736772966096, 32, 0, 0}} + clientsWritable = {fds_bits = {37909264, 4358308, 16777220, 140734208454804, 0, 67767824, 0, 32, 69320416, 4527564, 70041344, 4583109, 140734208454960, 32, 0, 0}} selecterr = nready = 0 - devicesReadable = {fds_bits = {16777220, 140736772966024, 44300576, 4763888, 44300576, 16777220, 1073741825, 44409232, 0, 0, 16, 0, 48, 140736772965936, 140736772965856, 40925408}} + devicesReadable = {fds_bits = {16777220, 140734208454888, 70041344, 4763888, 70041344, 16777220, 1073741825, 70314624, 0, 0, 16, 0, 48, 140734208454800, 140734208454720, 66656480}} now = someReady = #2 0x0000000000434f42 in Dispatch () at ../../dix/dispatch.c:367 - clientReady = 0x2999ef0 + clientReady = 0x4223ef0 result = client = nready =