Binary package hint: unity-2d
Got the apport dialog that spread crashed. I manually unpacked the apport crash file found in /var/crash then ran gdb and installed all -dbg versions of the packages. Here is a good stacktrace:
Core was generated by `/usr/bin/unity-2d-spread'.
Program terminated with signal 6, Aborted.
#0 0x00725416 in __kernel_vsyscall ()
(gdb) bt
#0 0x00725416 in __kernel_vsyscall ()
#1 0x0271ce71 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2 0x0272034e in abort () at abort.c:92
#3 0x02715888 in __assert_fail (
assertion=0x4812acc "(((long) (event_sequence) - (long) (dpy->request)) <= 0)",
file=0x48128ef "../../src/xcb_io.c", line=221, function=0x4812bc4 "poll_for_event")
at assert.c:81
#4 0x0479ae5a in poll_for_event (dpy=0x8af3928) at ../../src/xcb_io.c:221
#5 0x0479b245 in poll_for_response (dpy=0x8af3928) at ../../src/xcb_io.c:235
#6 0x0479b7bf in _XEventsQueued (dpy=0x8af3928, mode=2) at ../../src/xcb_io.c:304
#7 0x0478c548 in XPending (dpy=0x8af3928) at ../../src/Pending.c:55
#8 0x0046cad4 in gdk_check_xpending (source=0x8b07ba8)
at /build/buildd/gtk+2.0-2.24.3/gdk/x11/gdkevents-x11.c:159
#9 gdk_event_check (source=0x8b07ba8)
at /build/buildd/gtk+2.0-2.24.3/gdk/x11/gdkevents-x11.c:2352
#10 0x07af071d in g_main_context_check (context=0x8b07c78, max_priority=2147483647,
fds=0x8d5c860, n_fds=11) at /build/buildd/glib2.0-2.28.4/./glib/gmain.c:2961
#11 0x07af103a in g_main_context_iterate (context=0x8b07c78, block=128981024, dispatch=1,
self=<value optimized out>) at /build/buildd/glib2.0-2.28.4/./glib/gmain.c:3088
#12 0x07af1524 in g_main_context_iteration (context=0x8b07c78, may_block=1)
at /build/buildd/glib2.0-2.28.4/./glib/gmain.c:3154
#13 0x0029253c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /usr/lib/libQtCore.so.4
#14 0x00d64775 in ?? () from /usr/lib/libQtGui.so.4
#15 0x00264289 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /usr/lib/libQtCore.so.4
#16 0x00264522 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /usr/lib/libQtCore.so.4
#17 0x00268ecc in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#18 0x00cae8e7 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#19 0x0804ced6 in main ()
(gdb)
From the stack trace it looks like QT ran another iteration of the event loop, and as part of that ran another iteration of the GTK event loop (which we use for icons, among other things).
This iteration crashed due to a miscommunication between GTK and X11 (via XLib via XCB).
GTK last call is to XPending, which just returns the number of pending events for the display.
I don't think this is caused by anything we do in the spread.
I think we should report this bug against either GTK or most likely against X11 or XCB.