test_overrides_gdk:test_cursor() causes SIGTRAP under Xvfb
When running "python setup.py test" for pygobject, test_cursor() causes the Python interpreter to immediately crash with a SIGTRAP when run under Xvfb. According to the gdb backtrace, something is apparently causing an XError.
As near as I can tell, this is down to calling Gdk.Cursor(...) within a "capture_glib_deprecation_warnings() as warn:" block. Without the capture_lib_deprecation_warnings() setting, Gdk.Cursor() seems to work fine. And as one might guess, either case works fine if I run it under a real X server (at least SSH-forwarded). If I disable test_cursor(), all other tests pass/skip/xfail even under Xvfb.
I'm not sure it's such a big problem if it only occurs under Xvfb, but it does complicate CI testing.
This behavior occurs with both 3.30.4 and 3.31.2, with pycairo==1.16.3 or 1.18.0. For background, this is on aarch64 little-endian, Xvfb==1.20.3, glib==2.58.1, gobject-introspection==1.58.1, gtk==3.24.2, python==2.7.15, libX11==1.6.5.
The most interesting part of the backtrace:
0. 0x0000007fadf172a4 in raise (sig=5) at ../sysdeps/unix/sysv/linux/raise.c:50
1. 0x0000007fac1775a4 in g_log_writer_default () at /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0
2. 0x0000007fac1759a8 in g_log_structured_array () at /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0
3. 0x0000007fac176384 in g_log_structured_standard () at /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0
4. 0x0000007faaf7a4b8 in _gdk_x11_display_error_event (display=display@entry=0x21fb9090, error=error@entry=0x7fe23d0078) at gdkdisplay-x11.c:2769
5. 0x0000007faaf86e74 in gdk_x_error (xdisplay=0x21facc00, error=0x7fe23d0078) at gdkmain-x11.c:307
6. 0x0000007fab6345ec in _XError (dpy=dpy@entry=0x21facc00, rep=rep@entry=0x205f2020) at XlibInt.c:1434
7. 0x0000007fab6314fc in handle_error (dpy=0x21facc00, err=0x205f2020, in_XReply=<optimized out>) at xcb_io.c:199
8. 0x0000007fab6315b4 in handle_response (dpy=dpy@entry=0x21facc00, response=0x205f2020, in_XReply=in_XReply@entry=1) at xcb_io.c:311
9. 0x0000007fab6324ec in _XReply (dpy=dpy@entry=0x21facc00, rep=rep@entry=0x7fe23d0298, extra=extra@entry=0, discard=discard@entry=1) at xcb_io.c:621
10. 0x0000007fab61db08 in XInternAtom (dpy=dpy@entry=0x21facc00, name=name@entry=0x7faafd9630 "_NET_WORKAREA", onlyIfExists=onlyIfExists@entry=1) at IntAtom.c:181
11. 0x0000007faaf8a810 in gdk_x11_screen_get_work_area (screen=screen@entry=0x21fbe040, area=area@entry=0x7fe23d03d8) at gdkscreen-x11.c:258
12. 0x0000007faaf87624 in gdk_x11_monitor_get_workarea (monitor=<optimized out>, dest=0x7fe23d0438) at gdkmonitor-x11.c:78
13. 0x0000007faa35c880 in gtk_window_guess_default_size (window=window@entry=0x220a87a0, width=width@entry=0x7fe23d04d8, height=height@entry=0x7fe23d04dc) at gtkwindow.c:6494
14. 0x0000007faa3610e4 in gtk_window_compute_configure_request_size (height=0x7fe23d04dc, width=0x7fe23d04d8, flags=74, geometry=0x7fe23d0500, window=0x220a87a0) at gtkwindow.c:9369
15. 0x0000007faa3610e4 in gtk_window_compute_configure_request (window=window@entry=0x220a87a0, request=request@entry=0x7fe23d05b8, geometry=geometry@entry=0x0, flags=flags@entry=0x0) at gtkwindow.c:9551
16. 0x0000007faa365d28 in gtk_window_realize (widget=0x220a87a0) at gtkwindow.c:7364
17. 0x0000007fabeff208 in g_closure_invoke () at /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0
18. 0x0000007fabf126c8 in () at /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0
19. 0x0000007fabf1b2ec in g_signal_emit_valist () at /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0
20. 0x0000007fabf1b858 in g_signal_emit () at /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0
21. 0x0000007faa355624 in gtk_widget_realize (widget=0x220a87a0) at gtkwidget.c:5471
22. 0x0000007faa35578c in gtk_widget_realize (widget=0x20cb16c0) at gtkwidget.c:5465
23. 0x0000007fad052018 in () at /usr/lib/aarch64-linux-gnu/libffi.so.7
24. 0x0000007fad051718 in () at /usr/lib/aarch64-linux-gnu/libffi.so.7
25. 0x0000007fac2d3664 in pygi_invoke_c_callable (function_cache=0x20db0ac0, state=0x7fe23d0e20, py_args=<optimized out>, py_kwargs=<optimized out>) at gi/pygi-invoke.c:690
26. 0x0000007fac2c96ec in pygi_function_cache_invoke (function_cache=<optimized out>, py_args=py_args@entry=0x7fa76566d0, py_kwargs=py_kwargs@entry=0x0) at gi/pygi-cache.c:863
27. 0x0000007fac2d3dbc in pygi_callable_info_invoke (user_data=0x0, cache=<optimized out>, kwargs=0x0, py_args=0x7fa76566d0, info=<optimized out>) at gi/pygi-invoke.c:770
28. 0x0000007fac2d3dbc in _wrap_g_callable_info_invoke (self=<optimized out>, py_args=py_args@entry=0x7fa76566d0, kwargs=kwargs@entry=0x0) at gi/pygi-invoke.c:770
29. 0x0000007fac2cde98 in _callable_info_call (self=0x7fa7667260, args=0x7fadc6f050, kwargs=0x0) at gi/pygi-info.c:556
30. 0x0000007fadf8233c in PyObject_Call () at /usr/lib/aarch64-linux-gnu/libpython2.7.so.1.0