Many tests segfault on 32-bit x86 in ops_set_projection ../gsk/gl/gskglrenderops.c:386
Reproduced with 4.0.3, but also seen with earlier versions.
On Debian i386 (i686-linux-gnu), running the tests on a headless machine with:
ASAN_OPTIONS=detect_leaks=0 \
xvfb-run -a -s "-screen 0 1024x768x24" \
dbus-run-session -- \
meson test -C _build --setup=x11 --suite=gsk --suite=gdk --suite=gtk
I'm finding that a lot of tests (180+) fail with a segfault.
Building with AddressSanitizer, something like this is common:
589/590 gtk:reftest / reftest window-default-size.ui ERROR 1.93s
--- command ---
20:38:31 GTK_A11Y='test' G_TEST_SRCDIR='/home/smcv/gtk-upstream-i386/testsuite/reftests' TEST_OUTPUT_SUBDIR='x11' G_ENABLE_DIAGNOSTIC='0' GIO_USE_VFS='local' GSK_RENDERER='opengl' REFTEST_MODULE_DIR='/home/smcv/gtk-upstream-i386/_build-asan/testsuite/reftests' GSETTINGS_SCHEMA_DIR='/home/smcv/gtk-upstream-i386/_build-asan/gtk' GIO_USE_VOLUME_MONITOR='unix' GTK_CSD='1' GDK_DEBUG='default-settings' GDK_BACKEND='x11' GSETTINGS_BACKEND='memory' G_TEST_BUILDDIR='/home/smcv/gtk-upstream-i386/_build-asan/testsuite/reftests' /home/smcv/gtk-upstream-i386/_build-asan/testsuite/reftests/gtk-reftest --tap -k -o /home/smcv/gtk-upstream-i386/_build-asan/testsuite/reftests/output /home/smcv/gtk-upstream-i386/testsuite/reftests/window-default-size.ui
--- stdout ---
# random seed: R02Sa60cae2d3d3833b927396ae117f9fdf4
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
1..1
# Start of home tests
# Start of smcv tests
# Start of gtk-upstream-i386 tests
# Start of testsuite tests
# Start of reftests tests
--- stderr ---
../gsk/gl/gskglrenderer.c:4528:3: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 a0 43 0b eb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderops.c:197:28: runtime error: member access within misaligned address 0xefe26058 for type 'struct RenderOpBuilder', which requires 16 byte alignment
0xefe26058: note: pointer points here
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderops.c:199:3: runtime error: member access within misaligned address 0xefe26058 for type 'struct RenderOpBuilder', which requires 16 byte alignment
0xefe26058: note: pointer points here
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderops.c:200:21: runtime error: member access within misaligned address 0xefe26058 for type 'struct RenderOpBuilder', which requires 16 byte alignment
0xefe26058: note: pointer points here
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:4529:29: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 a0 43 0b eb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:4535:35: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 a0 43 0b eb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:4537:35: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 a0 43 0b eb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:4538:35: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 a0 43 0b eb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:3545:11: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:3547:24: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:3548:15: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 00 00 00 00 00 00 00 00 40 f5 20 f0 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:3552:8: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
0xefe26038: note: pointer points here
00 00 00 00 20 5b 81 ef 01 00 00 00 00 00 00 00 00 00 00 00 40 f5 20 f0 00 00 00 00 00 00 00 00
^
../gsk/gl/gskglrenderer.c:3555:3: runtime error: member access within misaligned address 0xefe26038 for type 'struct GskGLRenderer', which requires 16 byte alignment
... more like that ...
==26369==ERROR: AddressSanitizer: SEGV on unknown address (pc 0xf5fc85a9 bp 0xffc33e98 sp 0xffc33e30 T0)
==26369==The signal is caused by a READ memory access.
==26369==Hint: this fault was caused by a dereference of a high value address (see register values below). Dissassemble the provided pc to learn which register was used.
#0 0xf5fc85a9 in ops_set_projection ../gsk/gl/gskglrenderops.c:386
#1 0xf5fa10a0 in gsk_gl_renderer_do_render ../gsk/gl/gskglrenderer.c:4225
#2 0xf5fa5202 in gsk_gl_renderer_render ../gsk/gl/gskglrenderer.c:4496
#3 0xf5e97a03 in gsk_renderer_render ../gsk/gskrenderer.c:442
#4 0xf57a9ec4 in gtk_widget_render ../gtk/gtkwidget.c:11522
#5 0xf57c74df in surface_render ../gtk/gtkwindow.c:4556
#6 0xf5c30ef4 in _gdk_marshal_BOOLEAN__BOXEDv gdk/gdkmarshalers.c:130
#7 0xf4214709 (/usr/lib/i386-linux-gnu/libgobject-2.0.so.0+0x10709)
#8 0xf422c076 in g_signal_emit_valist (/usr/lib/i386-linux-gnu/libgobject-2.0.so.0+0x28076)
#9 0xf422cdb4 in g_signal_emit (/usr/lib/i386-linux-gnu/libgobject-2.0.so.0+0x28db4)
#10 0xf5ce88ed in gdk_surface_process_updates_internal ../gdk/gdksurface.c:1330
#11 0xf5ce88ed in gdk_surface_paint_on_clock ../gdk/gdksurface.c:1417
#12 0xf4214709 (/usr/lib/i386-linux-gnu/libgobject-2.0.so.0+0x10709)
#13 0xf422cc2b in g_signal_emit_valist (/usr/lib/i386-linux-gnu/libgobject-2.0.so.0+0x28c2b)
#14 0xf422cdb4 in g_signal_emit (/usr/lib/i386-linux-gnu/libgobject-2.0.so.0+0x28db4)
#15 0xf5c99041 in _gdk_frame_clock_emit_paint ../gdk/gdkframeclock.c:704
#16 0xf5c9c9e1 in gdk_frame_clock_paint_idle ../gdk/gdkframeclockidle.c:602
#17 0xf42b33f0 (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x4f3f0)
#18 0xf42b27a3 in g_main_context_dispatch (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x4e7a3)
#19 0xf42b2b68 (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x4eb68)
#20 0xf42b2ec0 in g_main_loop_run (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x4eec0)
#21 0xf7a1f487 in snapshot_widget ../testsuite/reftests/reftest-snapshot.c:274
#22 0xf7a1f487 in reftest_snapshot_ui_file ../testsuite/reftests/reftest-snapshot.c:311
#23 0x5659fc89 in test_ui_file ../testsuite/reftests/gtk-reftest.c:304
#24 0xf42dac0a (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x76c0a)
#25 0xf42da9e9 (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x769e9)
#26 0xf42da9e9 (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x769e9)
#27 0xf42da9e9 (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x769e9)
#28 0xf42da9e9 (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x769e9)
#29 0xf42da9e9 (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x769e9)
#30 0xf42db108 in g_test_run_suite (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x77108)
#31 0xf42db12c in g_test_run (/usr/lib/i386-linux-gnu/libglib-2.0.so.0+0x7712c)
#32 0x5659eb12 in main ../testsuite/reftests/gtk-reftest.c:502
#33 0xf37e8e45 in __libc_start_main (/lib/i386-linux-gnu/libc.so.6+0x1ee45)
#34 0x5659eda0 in _start (/home/smcv/gtk-upstream-i386/_build-asan/testsuite/reftests/gtk-reftest+0x3da0)