wmww / gtk-layer-shell

A library to create panels and other desktop components for Wayland using the Layer Shell protocol
GNU General Public License v3.0
319 stars 16 forks source link

Test Failling when trying to package for voidlinux #130

Closed motorto closed 1 year ago

motorto commented 2 years ago

Tests 16 and 28 seem to fail when trying to build the 0.7 xbps for void-linux.

I think I have all the relevant logs down, if something is missing please tell me

Logs 0.7 ```text Log of Meson test suite run on 2022-07-23T13:24:13.584116 16/33 test-menu-popup FAIL 0.14s exit status 1 13:24:17 MALLOC_PERTURB_=72 /usr/bin/python3 /builddir/gtk-layer-shell-0.7.0/test/run-integration-test.py /builddir/gtk-layer-shell-0.7.0/build/test/test-menu-popup ----------------------------------- output ----------------------------------- ╭─────────────────┤ test-menu-popup stderr ├─────────────────┈ │ [3726496.890] -> wl_display@1.get_registry(new id wl_registry@2) │ [3726496.907] -> wl_display@1.sync(new id wl_callback@3) │ [3726497.054] wl_display@1.delete_id(3) │ [3726497.065] wl_registry@2.global(1, "wl_seat", 6) │ [3726497.072] wl_registry@2.global(2, "wl_output", 2) │ [3726497.079] -> wl_registry@2.bind(2, "wl_output", 2, new id [unknown]@4) │ [3726497.123] -> wl_display@1.sync(new id wl_callback@5) │ [3726497.129] wl_registry@2.global(3, "wl_shm", 1) │ [3726497.135] -> wl_registry@2.bind(3, "wl_shm", 1, new id [unknown]@6) │ [3726497.141] wl_registry@2.global(4, "wl_data_device_manager", 2) │ [3726497.147] -> wl_registry@2.bind(4, "wl_data_device_manager", 2, new id [unknown]@7) │ [3726497.153] wl_registry@2.global(5, "wl_compositor", 4) │ [3726497.159] -> wl_registry@2.bind(5, "wl_compositor", 3, new id [unknown]@8) │ [3726497.166] wl_registry@2.global(6, "wl_subcompositor", 1) │ [3726497.171] -> wl_registry@2.bind(6, "wl_subcompositor", 1, new id [unknown]@9) │ [3726497.177] wl_registry@2.global(7, "xdg_wm_base", 2) │ [3726497.183] wl_registry@2.global(8, "zwlr_layer_shell_v1", 4) │ [3726497.191] wl_callback@3.done(0) │ [3726497.220] -> wl_shm@6.create_pool(new id wl_shm_pool@3, fd 7, 4096) │ [3726497.299] -> wl_shm_pool@3.resize(8832) │ [3726497.325] -> wl_shm_pool@3.resize(18624) │ [3726497.343] -> wl_registry@2.bind(1, "wl_seat", 5, new id [unknown]@10) │ [3726500.876] -> wl_compositor@8.create_surface(new id wl_surface@11) │ [3726500.902] -> wl_data_device_manager@7.get_data_device(new id wl_data_device@12, wl_seat@10) │ [3726501.006] -> wl_compositor@8.create_surface(new id wl_surface@13) │ [3726501.016] -> wl_display@1.sync(new id wl_callback@14) │ [3726501.190] wl_display@1.delete_id(5) │ [3726501.199] wl_display@1.delete_id(14) │ [3726501.203] wl_output@4.done() │ [3726501.218] wl_callback@5.done(0) │ [3726501.223] wl_seat@10.capabilities(3) │ [3726501.229] -> wl_seat@10.get_pointer(new id wl_pointer@5) │ [3726501.248] -> wl_seat@10.get_keyboard(new id wl_keyboard@15) │ [3726501.264] wl_callback@14.done(0) │ [3726501.270] -> wl_registry@2.bind(7, "xdg_wm_base", 1, new id [unknown]@14) │ CHECK EXPECTATIONS COMPLETED │ EXPECT: zwlr_layer_shell_v1 .get_layer_surface │ EXPECT: xdg_wm_base .get_xdg_surface │ EXPECT: xdg_surface .get_popup │ EXPECT: xdg_popup .grab │ [3726531.194] -> wl_display@1.get_registry(new id wl_registry@16) │ [3726531.209] -> wl_display@1.sync(new id wl_callback@17) │ [3726531.353] wl_display@1.delete_id(17) │ [3726531.362] wl_registry@16.global(1, "wl_seat", 6) │ [3726531.374] wl_registry@16.global(2, "wl_output", 2) │ [3726531.379] wl_registry@16.global(3, "wl_shm", 1) │ [3726531.384] wl_registry@16.global(4, "wl_data_device_manager", 2) │ [3726531.389] wl_registry@16.global(5, "wl_compositor", 4) │ [3726531.394] wl_registry@16.global(6, "wl_subcompositor", 1) │ [3726531.399] wl_registry@16.global(7, "xdg_wm_base", 2) │ [3726531.404] -> wl_registry@16.bind(7, "xdg_wm_base", 2, new id [unknown]@18) │ [3726531.423] wl_registry@16.global(8, "zwlr_layer_shell_v1", 4) │ [3726531.429] -> wl_registry@16.bind(8, "zwlr_layer_shell_v1", 4, new id [unknown]@19) │ [3726531.434] wl_callback@17.done(0) │ │ (test-menu-popup:32288): Gdk-WARNING **: 13:24:17.298: Native Windows taller than 65535 pixels are not supported │ [3726537.296] -> wl_compositor@8.create_surface(new id wl_surface@17) │ │ ** (test-menu-popup:32288): WARNING **: 13:24:17.299: gtk-layer-shell v0.7.0 may not work on GTK v3.24.34. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md │ [3726537.372] -> wl_surface@17.set_buffer_scale(1) │ [3726537.458] -> wl_surface@17.attach(nil, 0, 0) │ [3726537.467] -> zwlr_layer_shell_v1@19.get_layer_surface(new id zwlr_layer_surface_v1@20, wl_surface@17, nil, 2, "gtk-layer-shell") │ [3726537.474] -> zwlr_layer_surface_v1@20.set_keyboard_interactivity(0) │ [3726537.479] -> zwlr_layer_surface_v1@20.set_exclusive_zone(0) │ [3726537.483] -> zwlr_layer_surface_v1@20.set_anchor(0) │ [3726537.487] -> zwlr_layer_surface_v1@20.set_margin(0, 0, 0, 0) │ [3726537.492] -> zwlr_layer_surface_v1@20.set_size(116, 1807118) │ [3726537.497] -> wl_surface@17.commit() │ [3726537.504] -> wl_display@1.sync(new id wl_callback@21) │ [3726537.692] wl_display@1.delete_id(21) │ [3726537.701] zwlr_layer_surface_v1@20.configure(1, 116, 1807118) │ [3726537.707] -> zwlr_layer_surface_v1@20.ack_configure(1) │ [3726537.727] wl_pointer@5.enter(2, wl_surface@17, 5.00000000, 5.00000000) │ [3726537.741] wl_pointer@5.frame() │ [3726537.788] -> wl_shm_pool@3.create_buffer(new id wl_buffer@22, 4032, 10, 16, 40, 0) │ [3726537.796] -> wl_pointer@5.set_cursor(2, wl_surface@13, 1, 1) │ [3726537.802] -> wl_surface@13.attach(wl_buffer@22, 0, 0) │ [3726537.807] -> wl_surface@13.set_buffer_scale(1) │ [3726537.812] -> wl_surface@13.damage(0, 0, 10, 16) │ [3726537.817] -> wl_surface@13.commit() │ [3726537.824] wl_pointer@5.button(3, 0, 272, 1) │ [3726537.832] wl_pointer@5.frame() │ [3726537.846] wl_callback@21.done(3) │ [3726538.384] -> wl_pointer@5.set_cursor(2, wl_surface@13, 1, 1) │ [3726538.394] -> wl_surface@13.attach(wl_buffer@22, 0, 0) │ [3726538.399] -> wl_surface@13.set_buffer_scale(1) │ [3726538.403] -> wl_surface@13.damage(0, 0, 10, 16) │ [3726538.413] -> wl_surface@13.commit() │ │ (test-menu-popup:32288): Gdk-WARNING **: 13:24:17.301: Native Windows taller than 65535 pixels are not supported │ [3726539.378] -> wl_compositor@8.create_surface(new id wl_surface@21) │ [3726539.405] -> wl_surface@21.set_buffer_scale(1) │ [3726539.466] -> wl_surface@21.set_buffer_scale(1) │ [3726539.779] -> wl_surface@21.set_buffer_scale(1) │ [3726539.862] -> wl_surface@21.attach(nil, 0, 0) │ [3726539.871] -> xdg_wm_base@18.create_positioner(new id xdg_positioner@23) │ [3726539.876] -> xdg_positioner@23.set_size(152, 24) │ [3726539.880] -> xdg_positioner@23.set_anchor_rect(0, 0, 116, 1807118) │ [3726539.885] -> xdg_positioner@23.set_offset(0, 0) │ [3726539.892] -> xdg_positioner@23.set_anchor(6) │ [3726539.896] -> xdg_positioner@23.set_gravity(8) │ [3726539.900] -> xdg_positioner@23.set_constraint_adjustment(59) │ [3726539.904] -> xdg_wm_base@18.get_xdg_surface(new id xdg_surface@24, wl_surface@21) │ [3726539.909] -> xdg_surface@24.get_popup(new id xdg_popup@25, nil, xdg_positioner@23) │ [3726539.914] -> zwlr_layer_surface_v1@20.get_popup(xdg_popup@25) │ [3726539.918] -> xdg_positioner@23.destroy() │ [3726539.925] -> xdg_popup@25.grab(wl_seat@10, 3) │ [3726539.930] -> xdg_surface@24.set_window_geometry(6, 5, 152, 24) │ [3726539.937] -> wl_surface@21.commit() │ [3726539.942] -> wl_display@1.sync(new id wl_callback@26) │ [3726540.135] wl_display@1.delete_id(23) │ [3726540.142] wl_display@1.delete_id(26) │ [3726540.146] xdg_popup@25.configure(0, 0, 100, 100) │ [3726540.156] xdg_surface@24.configure(4) │ [3726540.161] -> xdg_surface@24.ack_configure(4) │ [3726540.166] wl_callback@26.done(4) │ [3726540.784] -> xdg_surface@24.set_window_geometry(6, 5, 152, 24) │ [3726540.813] -> wl_surface@17.set_buffer_scale(1) │ [3726540.852] -> wl_shm@6.create_pool(new id wl_shm_pool@26, fd 8, 23616) │ [3726540.863] -> wl_shm_pool@26.create_buffer(new id wl_buffer@23, 0, 164, 36, 656, 0) │ [3726541.146] -> wl_surface@21.attach(wl_buffer@23, 0, 0) │ [3726541.155] -> wl_surface@21.set_buffer_scale(1) │ [3726541.160] -> wl_surface@21.damage(0, 0, 164, 36) │ [3726541.166] -> wl_compositor@8.create_region(new id wl_region@27) │ [3726541.171] -> wl_region@27.add(6, 5, 152, 24) │ [3726541.176] -> wl_surface@21.set_input_region(wl_region@27) │ [3726541.181] -> wl_region@27.destroy() │ [3726541.194] -> wl_surface@21.frame(new id wl_callback@28) │ [3726541.200] -> wl_surface@21.commit() │ [3726541.265] -> zwlr_layer_surface_v1@20.set_size(116, 1807008) │ [3726541.293] -> wl_shm@6.create_pool(new id wl_shm_pool@29, fd 8, 838451712) │ [3726541.304] -> wl_shm_pool@29.create_buffer(new id wl_buffer@30, 0, 116, 1807008, 464, 0) │ │ (test-menu-popup:32288): Gdk-CRITICAL **: 13:24:17.303: ../gdk/wayland/gdkdisplay-wayland.c:1399: Unable to create Cairo image surface: invalid value (typically too big) for the size of the input (surface, pattern, etc.) ╰────────────────────────────────────────────────────────────┈ stdout empty, exit code: -11 test-menu-popup failed (return code -11) ------------------------------------------------------------------------------ 28/33 test-create-subsurface FAIL 0.14s exit status 1 13:24:18 MALLOC_PERTURB_=28 /usr/bin/python3 /builddir/gtk-layer-shell-0.7.0/test/run-integration-test.py /builddir/gtk-layer-shell-0.7.0/build/test/test-create-subsurface ----------------------------------- output ----------------------------------- ╭──────────────┤ test-create-subsurface stderr ├─────────────┈ │ [3728004.816] -> wl_display@1.get_registry(new id wl_registry@2) │ [3728004.834] -> wl_display@1.sync(new id wl_callback@3) │ [3728004.982] wl_display@1.delete_id(3) │ [3728004.995] wl_registry@2.global(1, "wl_seat", 6) │ [3728005.003] wl_registry@2.global(2, "wl_output", 2) │ [3728005.010] -> wl_registry@2.bind(2, "wl_output", 2, new id [unknown]@4) │ [3728005.061] -> wl_display@1.sync(new id wl_callback@5) │ [3728005.068] wl_registry@2.global(3, "wl_shm", 1) │ [3728005.073] -> wl_registry@2.bind(3, "wl_shm", 1, new id [unknown]@6) │ [3728005.079] wl_registry@2.global(4, "wl_data_device_manager", 2) │ [3728005.085] -> wl_registry@2.bind(4, "wl_data_device_manager", 2, new id [unknown]@7) │ [3728005.090] wl_registry@2.global(5, "wl_compositor", 4) │ [3728005.097] -> wl_registry@2.bind(5, "wl_compositor", 3, new id [unknown]@8) │ [3728005.104] wl_registry@2.global(6, "wl_subcompositor", 1) │ [3728005.110] -> wl_registry@2.bind(6, "wl_subcompositor", 1, new id [unknown]@9) │ [3728005.116] wl_registry@2.global(7, "xdg_wm_base", 2) │ [3728005.123] wl_registry@2.global(8, "zwlr_layer_shell_v1", 4) │ [3728005.130] wl_callback@3.done(0) │ [3728005.158] -> wl_shm@6.create_pool(new id wl_shm_pool@3, fd 7, 4096) │ [3728005.236] -> wl_shm_pool@3.resize(8832) │ [3728005.262] -> wl_shm_pool@3.resize(18624) │ [3728005.280] -> wl_registry@2.bind(1, "wl_seat", 5, new id [unknown]@10) │ [3728008.776] -> wl_compositor@8.create_surface(new id wl_surface@11) │ [3728008.801] -> wl_data_device_manager@7.get_data_device(new id wl_data_device@12, wl_seat@10) │ [3728008.907] -> wl_compositor@8.create_surface(new id wl_surface@13) │ [3728008.916] -> wl_display@1.sync(new id wl_callback@14) │ [3728009.098] wl_display@1.delete_id(5) │ [3728009.108] wl_display@1.delete_id(14) │ [3728009.112] wl_output@4.done() │ [3728009.128] wl_callback@5.done(0) │ [3728009.134] wl_seat@10.capabilities(3) │ [3728009.139] -> wl_seat@10.get_pointer(new id wl_pointer@5) │ [3728009.162] -> wl_seat@10.get_keyboard(new id wl_keyboard@15) │ [3728009.180] wl_callback@14.done(0) │ [3728009.186] -> wl_registry@2.bind(7, "xdg_wm_base", 1, new id [unknown]@14) │ CHECK EXPECTATIONS COMPLETED │ EXPECT: wl_subcompositor .get_subsurface │ EXPECT: wl_subsurface .set_position -20 30 │ [3728034.859] -> wl_display@1.get_registry(new id wl_registry@16) │ [3728034.873] -> wl_display@1.sync(new id wl_callback@17) │ [3728035.062] wl_display@1.delete_id(17) │ [3728035.071] wl_registry@16.global(1, "wl_seat", 6) │ [3728035.083] wl_registry@16.global(2, "wl_output", 2) │ [3728035.089] wl_registry@16.global(3, "wl_shm", 1) │ [3728035.094] wl_registry@16.global(4, "wl_data_device_manager", 2) │ [3728035.099] wl_registry@16.global(5, "wl_compositor", 4) │ [3728035.104] wl_registry@16.global(6, "wl_subcompositor", 1) │ [3728035.109] wl_registry@16.global(7, "xdg_wm_base", 2) │ [3728035.114] -> wl_registry@16.bind(7, "xdg_wm_base", 2, new id [unknown]@18) │ [3728035.135] wl_registry@16.global(8, "zwlr_layer_shell_v1", 4) │ [3728035.139] -> wl_registry@16.bind(8, "zwlr_layer_shell_v1", 4, new id [unknown]@19) │ [3728035.145] wl_callback@17.done(0) │ [3728040.380] -> wl_compositor@8.create_surface(new id wl_surface@17) │ │ ** (test-create-subsurface:32450): WARNING **: 13:24:18.802: gtk-layer-shell v0.7.0 may not work on GTK v3.24.34. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md │ [3728040.553] -> wl_surface@17.attach(nil, 0, 0) │ [3728040.570] -> zwlr_layer_shell_v1@19.get_layer_surface(new id zwlr_layer_surface_v1@20, wl_surface@17, nil, 2, "gtk-layer-shell") │ [3728040.579] -> zwlr_layer_surface_v1@20.set_keyboard_interactivity(0) │ [3728040.583] -> zwlr_layer_surface_v1@20.set_exclusive_zone(0) │ [3728040.587] -> zwlr_layer_surface_v1@20.set_anchor(0) │ [3728040.593] -> zwlr_layer_surface_v1@20.set_margin(0, 0, 0, 0) │ [3728040.597] -> zwlr_layer_surface_v1@20.set_size(184, 39) │ [3728040.603] -> wl_surface@17.commit() │ [3728040.608] -> wl_display@1.sync(new id wl_callback@21) │ [3728040.821] wl_display@1.delete_id(21) │ [3728040.831] zwlr_layer_surface_v1@20.configure(1, 184, 39) │ [3728040.837] -> zwlr_layer_surface_v1@20.ack_configure(1) │ [3728040.844] wl_pointer@5.enter(2, wl_surface@17, 5.00000000, 5.00000000) │ [3728040.856] wl_pointer@5.frame() │ [3728040.914] -> wl_shm_pool@3.create_buffer(new id wl_buffer@22, 4032, 10, 16, 40, 0) │ [3728040.922] -> wl_pointer@5.set_cursor(2, wl_surface@13, 1, 1) │ [3728040.927] -> wl_surface@13.attach(wl_buffer@22, 0, 0) │ [3728040.932] -> wl_surface@13.set_buffer_scale(1) │ [3728040.936] -> wl_surface@13.damage(0, 0, 10, 16) │ [3728040.941] -> wl_surface@13.commit() │ [3728040.948] wl_pointer@5.button(3, 0, 272, 1) │ [3728040.956] wl_pointer@5.frame() │ [3728040.968] wl_callback@21.done(3) │ │ (test-create-subsurface:32450): Gdk-WARNING **: 13:24:18.803: Native Windows taller than 65535 pixels are not supported │ [3728041.596] -> wl_compositor@8.create_surface(new id wl_surface@21) │ [3728041.634] -> wl_surface@21.set_buffer_scale(1) │ [3728041.665] -> wl_subcompositor@9.get_subsurface(new id wl_subsurface@23, wl_surface@21, wl_surface@17) │ [3728041.676] -> wl_subsurface@23.set_position(-20, 30) │ [3728042.175] -> wl_shm@6.create_pool(new id wl_shm_pool@24, fd 8, 28704) │ [3728042.189] -> wl_shm_pool@24.create_buffer(new id wl_buffer@25, 0, 184, 39, 736, 0) │ [3728042.326] -> wl_surface@17.attach(wl_buffer@25, 0, 0) │ [3728042.334] -> wl_surface@17.set_buffer_scale(1) │ [3728042.339] -> wl_surface@17.damage(0, 0, 184, 39) │ [3728042.345] -> wl_compositor@8.create_region(new id wl_region@26) │ [3728042.350] -> wl_region@26.add(0, 0, 184, 39) │ [3728042.355] -> wl_surface@17.set_opaque_region(wl_region@26) │ [3728042.359] -> wl_region@26.destroy() │ [3728042.366] -> wl_surface@17.set_input_region(nil) │ [3728042.377] -> wl_surface@17.frame(new id wl_callback@27) │ [3728042.382] -> wl_surface@17.commit() │ [3728042.388] -> wl_subsurface@23.set_desync() │ [3728042.422] -> wl_shm@6.create_pool(new id wl_shm_pool@28, fd 9, 621801600) │ [3728042.432] -> wl_shm_pool@28.create_buffer(new id wl_buffer@29, 0, 100, 1554504, 400, 0) │ │ (test-create-subsurface:32450): Gdk-CRITICAL **: 13:24:18.804: ../gdk/wayland/gdkdisplay-wayland.c:1399: Unable to create Cairo image surface: invalid value (typically too big) for the size of the input (surface, pattern, etc.) ╰────────────────────────────────────────────────────────────┈ stdout empty, exit code: -11 test-create-subsurface failed (return code -11) ------------------------------------------------------------------------------ ```
wmww commented 2 years ago

Is this a new failure? Did it used to work?

Assuming it did, do you know if the failure was triggered by an update to gtk-layer-shell, gtk or something else?

motorto commented 2 years ago

Yes it used to work, I have tried compiling 0.6 with the current version of the dependencies and the same tests fail 16/28 so it might the update of a dependency that introduce this failure.

Logs 0.6 ```text 16/33 test-menu-popup FAIL 0.22s exit status 1 09:43:53 MALLOC_PERTURB_=4 /usr/bin/python3 /builddir/gtk-layer-shell-0.6.0/test/run-integration-test.py /builddir/gtk-layer-shell-0.6.0/build/test/test-menu-popup ----------------------------------- output ----------------------------------- ╭─────────────────┤ test-menu-popup stderr ├─────────────────┈ │ [ 594689.709] -> wl_display@1.get_registry(new id wl_registry@2) │ [ 594689.767] -> wl_display@1.sync(new id wl_callback@3) │ [ 594689.985] wl_display@1.delete_id(3) │ [ 594690.008] wl_registry@2.global(1, "wl_seat", 6) │ [ 594690.030] wl_registry@2.global(2, "wl_output", 2) │ [ 594690.046] -> wl_registry@2.bind(2, "wl_output", 2, new id [unknown]@4) │ [ 594690.137] -> wl_display@1.sync(new id wl_callback@5) │ [ 594690.158] wl_registry@2.global(3, "wl_shm", 1) │ [ 594690.178] -> wl_registry@2.bind(3, "wl_shm", 1, new id [unknown]@6) │ [ 594690.195] wl_registry@2.global(4, "wl_data_device_manager", 2) │ [ 594690.211] -> wl_registry@2.bind(4, "wl_data_device_manager", 2, new id [unknown]@7) │ [ 594690.231] wl_registry@2.global(5, "wl_compositor", 4) │ [ 594690.247] -> wl_registry@2.bind(5, "wl_compositor", 3, new id [unknown]@8) │ [ 594690.270] wl_registry@2.global(6, "wl_subcompositor", 1) │ [ 594690.287] -> wl_registry@2.bind(6, "wl_subcompositor", 1, new id [unknown]@9) │ [ 594690.303] wl_registry@2.global(7, "xdg_wm_base", 2) │ [ 594690.322] wl_registry@2.global(8, "zwlr_layer_shell_v1", 4) │ [ 594690.342] wl_callback@3.done(0) │ [ 594690.399] -> wl_shm@6.create_pool(new id wl_shm_pool@3, fd 7, 4096) │ [ 594690.555] -> wl_shm_pool@3.resize(8832) │ [ 594690.608] -> wl_shm_pool@3.resize(18624) │ [ 594690.646] -> wl_registry@2.bind(1, "wl_seat", 5, new id [unknown]@10) │ [ 594696.617] -> wl_compositor@8.create_surface(new id wl_surface@11) │ [ 594696.688] -> wl_data_device_manager@7.get_data_device(new id wl_data_device@12, wl_seat@10) │ [ 594696.890] -> wl_compositor@8.create_surface(new id wl_surface@13) │ [ 594696.918] -> wl_display@1.sync(new id wl_callback@14) │ [ 594697.161] wl_display@1.delete_id(5) │ [ 594697.185] wl_display@1.delete_id(14) │ [ 594697.202] wl_output@4.done() │ [ 594697.229] wl_callback@5.done(0) │ [ 594697.246] wl_seat@10.capabilities(3) │ [ 594697.263] -> wl_seat@10.get_pointer(new id wl_pointer@5) │ [ 594697.298] -> wl_seat@10.get_keyboard(new id wl_keyboard@15) │ [ 594697.332] wl_callback@14.done(0) │ [ 594697.354] -> wl_registry@2.bind(7, "xdg_wm_base", 1, new id [unknown]@14) │ CHECK EXPECTATIONS COMPLETED │ EXPECT: zwlr_layer_shell_v1 .get_layer_surface │ EXPECT: xdg_wm_base .get_xdg_surface │ EXPECT: xdg_surface .get_popup │ EXPECT: xdg_popup .grab │ [ 594734.267] -> wl_display@1.get_registry(new id wl_registry@16) │ [ 594734.288] -> wl_display@1.sync(new id wl_callback@17) │ [ 594734.475] wl_display@1.delete_id(17) │ [ 594734.484] wl_registry@16.global(1, "wl_seat", 6) │ [ 594734.498] wl_registry@16.global(2, "wl_output", 2) │ [ 594734.507] wl_registry@16.global(3, "wl_shm", 1) │ [ 594734.512] wl_registry@16.global(4, "wl_data_device_manager", 2) │ [ 594734.518] wl_registry@16.global(5, "wl_compositor", 4) │ [ 594734.527] wl_registry@16.global(6, "wl_subcompositor", 1) │ [ 594734.535] wl_registry@16.global(7, "xdg_wm_base", 2) │ [ 594734.542] -> wl_registry@16.bind(7, "xdg_wm_base", 2, new id [unknown]@18) │ [ 594734.553] wl_registry@16.global(8, "zwlr_layer_shell_v1", 4) │ [ 594734.560] -> wl_registry@16.bind(8, "zwlr_layer_shell_v1", 4, new id [unknown]@19) │ [ 594734.571] wl_callback@17.done(0) │ │ (test-menu-popup:5733): Gdk-WARNING **: 09:43:53.606: Native Windows taller than 65535 pixels are not supported │ [ 594741.824] -> wl_compositor@8.create_surface(new id wl_surface@17) │ │ ** (test-menu-popup:5733): WARNING **: 09:43:53.606: gtk-layer-shell v0.6.0 may not work on GTK v3.24.34. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md │ [ 594741.913] -> wl_surface@17.set_buffer_scale(1) │ [ 594742.016] -> wl_surface@17.attach(nil, 0, 0) │ [ 594742.027] -> zwlr_layer_shell_v1@19.get_layer_surface(new id zwlr_layer_surface_v1@20, wl_surface@17, nil, 2, "gtk-layer-shell") │ [ 594742.036] -> zwlr_layer_surface_v1@20.set_keyboard_interactivity(0) │ [ 594742.042] -> zwlr_layer_surface_v1@20.set_exclusive_zone(0) │ [ 594742.047] -> zwlr_layer_surface_v1@20.set_anchor(0) │ [ 594742.065] -> zwlr_layer_surface_v1@20.set_margin(0, 0, 0, 0) │ [ 594742.072] -> zwlr_layer_surface_v1@20.set_size(116, 2084310) │ [ 594742.078] -> wl_surface@17.commit() │ [ 594742.086] -> wl_display@1.sync(new id wl_callback@21) │ [ 594742.290] wl_display@1.delete_id(21) │ [ 594742.303] zwlr_layer_surface_v1@20.configure(1, 116, 2084310) │ [ 594742.312] -> zwlr_layer_surface_v1@20.ack_configure(1) │ [ 594742.321] wl_pointer@5.enter(2, wl_surface@17, 5.00000000, 5.00000000) │ [ 594742.339] wl_pointer@5.frame() │ [ 594742.406] -> wl_shm_pool@3.create_buffer(new id wl_buffer@22, 4032, 10, 16, 40, 0) │ [ 594742.419] -> wl_pointer@5.set_cursor(2, wl_surface@13, 1, 1) │ [ 594742.429] -> wl_surface@13.attach(wl_buffer@22, 0, 0) │ [ 594742.437] -> wl_surface@13.set_buffer_scale(1) │ [ 594742.445] -> wl_surface@13.damage(0, 0, 10, 16) │ [ 594742.453] -> wl_surface@13.commit() │ [ 594742.462] wl_pointer@5.button(3, 0, 272, 1) │ [ 594742.474] wl_pointer@5.frame() │ [ 594742.490] wl_callback@21.done(3) │ [ 594743.446] -> wl_pointer@5.set_cursor(2, wl_surface@13, 1, 1) │ [ 594743.462] -> wl_surface@13.attach(wl_buffer@22, 0, 0) │ [ 594743.471] -> wl_surface@13.set_buffer_scale(1) │ [ 594743.479] -> wl_surface@13.damage(0, 0, 10, 16) │ [ 594743.487] -> wl_surface@13.commit() │ │ (test-menu-popup:5733): Gdk-WARNING **: 09:43:53.609: Native Windows taller than 65535 pixels are not supported │ [ 594745.094] -> wl_compositor@8.create_surface(new id wl_surface@21) │ [ 594745.119] -> wl_surface@21.set_buffer_scale(1) │ [ 594745.163] -> wl_surface@21.set_buffer_scale(1) │ [ 594745.466] -> wl_surface@21.set_buffer_scale(1) │ [ 594745.544] -> wl_surface@21.attach(nil, 0, 0) │ [ 594745.552] -> xdg_wm_base@18.create_positioner(new id xdg_positioner@23) │ [ 594745.557] -> xdg_positioner@23.set_size(152, 24) │ [ 594745.561] -> xdg_positioner@23.set_anchor_rect(0, 0, 116, 2084310) │ [ 594745.564] -> xdg_positioner@23.set_offset(0, 0) │ [ 594745.567] -> xdg_positioner@23.set_anchor(6) │ [ 594745.570] -> xdg_positioner@23.set_gravity(8) │ [ 594745.573] -> xdg_positioner@23.set_constraint_adjustment(59) │ [ 594745.576] -> xdg_wm_base@18.get_xdg_surface(new id xdg_surface@24, wl_surface@21) │ [ 594745.580] -> xdg_surface@24.get_popup(new id xdg_popup@25, nil, xdg_positioner@23) │ [ 594745.584] -> zwlr_layer_surface_v1@20.get_popup(xdg_popup@25) │ [ 594745.588] -> xdg_positioner@23.destroy() │ [ 594745.597] -> xdg_popup@25.grab(wl_seat@10, 3) │ [ 594745.601] -> xdg_surface@24.set_window_geometry(6, 5, 152, 24) │ [ 594745.605] -> wl_surface@21.commit() │ [ 594745.609] -> wl_display@1.sync(new id wl_callback@26) │ [ 594745.849] wl_display@1.delete_id(23) │ [ 594745.857] wl_display@1.delete_id(26) │ [ 594745.862] xdg_popup@25.configure(0, 0, 100, 100) │ [ 594745.873] xdg_surface@24.configure(4) │ [ 594745.879] -> xdg_surface@24.ack_configure(4) │ [ 594745.884] wl_callback@26.done(4) │ [ 594746.558] -> xdg_surface@24.set_window_geometry(6, 5, 152, 24) │ [ 594746.584] -> wl_surface@17.set_buffer_scale(1) │ [ 594746.628] -> wl_shm@6.create_pool(new id wl_shm_pool@26, fd 8, 23616) │ [ 594746.644] -> wl_shm_pool@26.create_buffer(new id wl_buffer@23, 0, 164, 36, 656, 0) │ [ 594747.049] -> wl_surface@21.attach(wl_buffer@23, 0, 0) │ [ 594747.071] -> wl_surface@21.set_buffer_scale(1) │ [ 594747.076] -> wl_surface@21.damage(0, 0, 164, 36) │ [ 594747.080] -> wl_compositor@8.create_region(new id wl_region@27) │ [ 594747.084] -> wl_region@27.add(6, 5, 152, 24) │ [ 594747.088] -> wl_surface@21.set_input_region(wl_region@27) │ [ 594747.092] -> wl_region@27.destroy() │ [ 594747.102] -> wl_surface@21.frame(new id wl_callback@28) │ [ 594747.107] -> wl_surface@21.commit() │ [ 594747.195] -> zwlr_layer_surface_v1@20.set_size(116, 2084172) │ [ 594747.272] -> wl_shm@6.create_pool(new id wl_shm_pool@29, fd 8, 967055808) │ [ 594747.282] -> wl_shm_pool@29.create_buffer(new id wl_buffer@30, 0, 116, 2084172, 464, 0) │ │ (test-menu-popup:5733): Gdk-CRITICAL **: 09:43:53.612: ../gdk/wayland/gdkdisplay-wayland.c:1399: Unable to create Cairo image surface: invalid value (typically too big) for the size of the input (surface, pattern, etc.) ╰────────────────────────────────────────────────────────────┈ stdout empty, exit code: -11 test-menu-popup failed (return code -11) 28/33 test-create-subsurface FAIL 0.15s exit status 1 09:43:55 MALLOC_PERTURB_=47 /usr/bin/python3 /builddir/gtk-layer-shell-0.6.0/test/run-integration-test.py /builddir/gtk-layer-shell-0.6.0/build/test/test-create-subsurface ----------------------------------- output ----------------------------------- ╭──────────────┤ test-create-subsurface stderr ├─────────────┈ │ [ 596372.920] -> wl_display@1.get_registry(new id wl_registry@2) │ [ 596372.939] -> wl_display@1.sync(new id wl_callback@3) │ [ 596373.244] wl_display@1.delete_id(3) │ [ 596373.257] wl_registry@2.global(1, "wl_seat", 6) │ [ 596373.263] wl_registry@2.global(2, "wl_output", 2) │ [ 596373.268] -> wl_registry@2.bind(2, "wl_output", 2, new id [unknown]@4) │ [ 596373.321] -> wl_display@1.sync(new id wl_callback@5) │ [ 596373.327] wl_registry@2.global(3, "wl_shm", 1) │ [ 596373.331] -> wl_registry@2.bind(3, "wl_shm", 1, new id [unknown]@6) │ [ 596373.335] wl_registry@2.global(4, "wl_data_device_manager", 2) │ [ 596373.339] -> wl_registry@2.bind(4, "wl_data_device_manager", 2, new id [unknown]@7) │ [ 596373.343] wl_registry@2.global(5, "wl_compositor", 4) │ [ 596373.346] -> wl_registry@2.bind(5, "wl_compositor", 3, new id [unknown]@8) │ [ 596373.350] wl_registry@2.global(6, "wl_subcompositor", 1) │ [ 596373.354] -> wl_registry@2.bind(6, "wl_subcompositor", 1, new id [unknown]@9) │ [ 596373.358] wl_registry@2.global(7, "xdg_wm_base", 2) │ [ 596373.361] wl_registry@2.global(8, "zwlr_layer_shell_v1", 4) │ [ 596373.366] wl_callback@3.done(0) │ [ 596373.396] -> wl_shm@6.create_pool(new id wl_shm_pool@3, fd 7, 4096) │ [ 596373.509] -> wl_shm_pool@3.resize(8832) │ [ 596373.537] -> wl_shm_pool@3.resize(18624) │ [ 596373.553] -> wl_registry@2.bind(1, "wl_seat", 5, new id [unknown]@10) │ [ 596377.249] -> wl_compositor@8.create_surface(new id wl_surface@11) │ [ 596377.271] -> wl_data_device_manager@7.get_data_device(new id wl_data_device@12, wl_seat@10) │ [ 596377.374] -> wl_compositor@8.create_surface(new id wl_surface@13) │ [ 596377.381] -> wl_display@1.sync(new id wl_callback@14) │ [ 596377.695] wl_display@1.delete_id(5) │ [ 596377.705] wl_display@1.delete_id(14) │ [ 596377.709] wl_output@4.done() │ [ 596377.721] wl_callback@5.done(0) │ [ 596377.726] wl_seat@10.capabilities(3) │ [ 596377.730] -> wl_seat@10.get_pointer(new id wl_pointer@5) │ [ 596377.749] -> wl_seat@10.get_keyboard(new id wl_keyboard@15) │ [ 596377.762] wl_callback@14.done(0) │ [ 596377.767] -> wl_registry@2.bind(7, "xdg_wm_base", 1, new id [unknown]@14) │ CHECK EXPECTATIONS COMPLETED │ EXPECT: wl_subcompositor .get_subsurface │ EXPECT: wl_subsurface .set_position -20 30 │ [ 596403.779] -> wl_display@1.get_registry(new id wl_registry@16) │ [ 596403.798] -> wl_display@1.sync(new id wl_callback@17) │ [ 596404.048] wl_display@1.delete_id(17) │ [ 596404.069] wl_registry@16.global(1, "wl_seat", 6) │ [ 596404.080] wl_registry@16.global(2, "wl_output", 2) │ [ 596404.085] wl_registry@16.global(3, "wl_shm", 1) │ [ 596404.088] wl_registry@16.global(4, "wl_data_device_manager", 2) │ [ 596404.091] wl_registry@16.global(5, "wl_compositor", 4) │ [ 596404.095] wl_registry@16.global(6, "wl_subcompositor", 1) │ [ 596404.098] wl_registry@16.global(7, "xdg_wm_base", 2) │ [ 596404.102] -> wl_registry@16.bind(7, "xdg_wm_base", 2, new id [unknown]@18) │ [ 596404.108] wl_registry@16.global(8, "zwlr_layer_shell_v1", 4) │ [ 596404.112] -> wl_registry@16.bind(8, "zwlr_layer_shell_v1", 4, new id [unknown]@19) │ [ 596404.115] wl_callback@17.done(0) │ [ 596409.770] -> wl_compositor@8.create_surface(new id wl_surface@17) │ │ ** (test-create-subsurface:5889): WARNING **: 09:43:55.274: gtk-layer-shell v0.6.0 may not work on GTK v3.24.34. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md │ [ 596409.949] -> wl_surface@17.attach(nil, 0, 0) │ [ 596409.959] -> zwlr_layer_shell_v1@19.get_layer_surface(new id zwlr_layer_surface_v1@20, wl_surface@17, nil, 2, "gtk-layer-shell") │ [ 596409.965] -> zwlr_layer_surface_v1@20.set_keyboard_interactivity(0) │ [ 596409.970] -> zwlr_layer_surface_v1@20.set_exclusive_zone(0) │ [ 596409.973] -> zwlr_layer_surface_v1@20.set_anchor(0) │ [ 596409.976] -> zwlr_layer_surface_v1@20.set_margin(0, 0, 0, 0) │ [ 596409.980] -> zwlr_layer_surface_v1@20.set_size(184, 39) │ [ 596409.984] -> wl_surface@17.commit() │ [ 596409.989] -> wl_display@1.sync(new id wl_callback@21) │ [ 596410.158] wl_display@1.delete_id(21) │ [ 596410.166] zwlr_layer_surface_v1@20.configure(1, 184, 39) │ [ 596410.170] -> zwlr_layer_surface_v1@20.ack_configure(1) │ [ 596410.175] wl_pointer@5.enter(2, wl_surface@17, 5.00000000, 5.00000000) │ [ 596410.184] wl_pointer@5.frame() │ [ 596410.244] -> wl_shm_pool@3.create_buffer(new id wl_buffer@22, 4032, 10, 16, 40, 0) │ [ 596410.268] -> wl_pointer@5.set_cursor(2, wl_surface@13, 1, 1) │ [ 596410.275] -> wl_surface@13.attach(wl_buffer@22, 0, 0) │ [ 596410.297] -> wl_surface@13.set_buffer_scale(1) │ [ 596410.301] -> wl_surface@13.damage(0, 0, 10, 16) │ [ 596410.305] -> wl_surface@13.commit() │ [ 596410.310] wl_pointer@5.button(3, 0, 272, 1) │ [ 596410.318] wl_pointer@5.frame() │ [ 596410.326] wl_callback@21.done(3) │ │ (test-create-subsurface:5889): Gdk-WARNING **: 09:43:55.275: Native Windows taller than 65535 pixels are not supported │ [ 596411.005] -> wl_compositor@8.create_surface(new id wl_surface@21) │ [ 596411.048] -> wl_surface@21.set_buffer_scale(1) │ [ 596411.117] -> wl_subcompositor@9.get_subsurface(new id wl_subsurface@23, wl_surface@21, wl_surface@17) │ [ 596411.126] -> wl_subsurface@23.set_position(-20, 30) │ [ 596411.720] -> wl_shm@6.create_pool(new id wl_shm_pool@24, fd 8, 28704) │ [ 596411.740] -> wl_shm_pool@24.create_buffer(new id wl_buffer@25, 0, 184, 39, 736, 0) │ [ 596411.917] -> wl_surface@17.attach(wl_buffer@25, 0, 0) │ [ 596411.927] -> wl_surface@17.set_buffer_scale(1) │ [ 596411.933] -> wl_surface@17.damage(0, 0, 184, 39) │ [ 596411.941] -> wl_compositor@8.create_region(new id wl_region@26) │ [ 596411.947] -> wl_region@26.add(0, 0, 184, 39) │ [ 596411.967] -> wl_surface@17.set_opaque_region(wl_region@26) │ [ 596411.973] -> wl_region@26.destroy() │ [ 596411.978] -> wl_surface@17.set_input_region(nil) │ [ 596411.990] -> wl_surface@17.frame(new id wl_callback@27) │ [ 596411.995] -> wl_surface@17.commit() │ [ 596412.001] -> wl_subsurface@23.set_desync() │ [ 596412.034] -> wl_shm@6.create_pool(new id wl_shm_pool@28, fd 9, 555167200) │ [ 596412.044] -> wl_shm_pool@28.create_buffer(new id wl_buffer@29, 0, 100, 1387918, 400, 0) │ │ (test-create-subsurface:5889): Gdk-CRITICAL **: 09:43:55.276: ../gdk/wayland/gdkdisplay-wayland.c:1399: Unable to create Cairo image surface: invalid value (typically too big) for the size of the input (surface, pattern, etc.) ╰────────────────────────────────────────────────────────────┈ stdout empty, exit code: -11 test-create-subsurface failed (return code -11) ```

So the current package versions of void are:

wmww commented 2 years ago

It does appear to be an issue with how we access private GTK data structures, this causing trouble is not surprising, though it's worked unexpectedly smoothly for the lifespan of the project.

Can you try with the new gtk-3-24-34 branch? The changes in GTK 3.24.34 shouldn't effect anything so I haven't rushed a release, but it's worth a shot.

I tried on Arch (also has GTK 3.24.34), and the tests pass on 0.7.0, master and also with that branch.

If Maybe there's some Alpine-specific GTK patches that effect one of the structs we access? I did look in Alpine's GTK packaging and didn't see anything though. Maybe different compiler flags than GTK are leading to different packing of the structs? Maybe it has something to do with musl? Somehow?

wmww commented 2 years ago

After testing that branch, the next thing to do is probably to build various versions of GTK from source and run gtk-layer-shell with them. If only old versions work, we can bisect in on what in GTK broke us. If they all work we can investigate how the GTK from the repository is different. If none of them work, we might be able to add checks to GTK to see what's going on.

Not saying you have to be the one to do it. I'll probably do it eventually, but I can't prioritize setting up an alpine VM right now.

wmww commented 2 years ago

If someone else does want to play with it, this script might be useful:

#!/bin/bash

# BASH safe mode
set -eo pipefail

# Set up needed environment variables
ROOT="$PWD"
TRIPLET=$(gcc -dumpmachine)
INSTALL="$ROOT/install"
export DESTDIR="$INSTALL"
export GTK_IM_MODULE_FILE="$INSTALL/immodules.cache"
export GTK_PATH="$INSTALL/usr/local/lib/$TRIPLET/gtk-3.0/"
BIN_PATH="$INSTALL/usr/local/bin/"
export PATH="$BIN_PATH:$PATH"
export LD_LIBRARY_PATH="$INSTALL/usr/local/lib/:$INSTALL/usr/local/lib/$TRIPLET/:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$INSTALL/usr/local/lib/pkgconfig/:$INSTALL/usr/local/lib/$TRIPLET/pkgconfig:$PKG_CONFIG_PATH"

# Create "install" directory to install GTK into
mkdir -p "$INSTALL"

# Clone GTK if needed
if test ! -d "gtk"; then
    git clone "https://gitlab.gnome.org/GNOME/gtk.git"
fi
cd gtk
# If a command line arg is given, treat it as a GTK branch or tag and check it out
if ! test -z "$1"; then
    git checkout "$1"
fi
# Build and "install" GTK (to our local install directory)
if test ! -d "build"; then
    meson "build" --prefix "$INSTALL/usr/local"
fi
ninja -C "build"
ninja -C "build" install
cd "$ROOT"

# Clone and build gtk-layer-shell if needed
if test ! -d "gtk-layer-shell"; then
    git clone "https://github.com/wmww/gtk-layer-shell.git"
fi
cd gtk-layer-shell
if test ! -d "build"; then
    meson "build" --prefix "$INSTALL/usr/local" -Dtests=true -Dexamples=true -Ddocs=true
fi
ninja -C "build"
cd "$ROOT"

# Run the gtk-layer-shell tests
ninja -C "gtk-layer-shell/build" test

It clones gtk and/or gtk-layer-shell into the current directory as needed, builds gtk, "installs" gtk into a install directory in the current directory, build's gtk-layer-shell with the new gtk and runs the layer shell tests. It can be given a gtk branch or tag as a command line argument, so for examples:

./script.sh 3.24.32

runs the layer shell tests against GTK 3.24.32. It does not manage build dependencies.

motorto commented 2 years ago

Will try the branch tomorrow .

To note that I am using glibc.

Void Linux doesn't build gtk-layer-sell with any patch see and gtk3 as also 0 patches applied (see )

I can definitely help, from what interval of gtk3 releases would like me to try ?

wmww commented 2 years ago
motorto commented 2 years ago

Assuming that you script given works (missing a $ in line 28) it seems to compile fine with gtk 3.24.34. and it passes all the tests ! Which makes me think that there is a problem on the template that I need to figure it out. Thanks for help (fell free to close the issue)

called the script as ./script.sh 3.24.34

wmww commented 2 years ago

missing a $ in line 28

Of course the one line I edit after testing it is wrong, lol (fixed)

paper42 commented 2 years ago

Compiling gtk-layer-shell and running tests manually seems to work fine, the issue is only happening in our build system - a chroot with a base void system and a only required dependencies installed.

wmww commented 2 years ago

If someone could get me a copy of GTK and gtk-layer-shell that don't work together and both have debug symbols, I might be able to gather some clues from GDB.

wmww commented 2 years ago

note to self (and others if interested): a good starting place is to diff the output of

gdb libgtk-layer-shell.so -ex 'set pagination off' -ex 'ptype /o struct _GdkWindowImplWayland_v3_24_25' -ex q

and

gdb libgdk-3.so -ex 'set pagination off' -ex 'ptype /o GdkWindowImplWayland' -ex q

This will dump the offsets of all the members of one of the main structs gtk-layer-shell digs into. On a working combination of libraries, they will be identical except for the very top and the offsets will all match. If they come up as identical on broken libraries, try that but with other structs.

paper42 commented 2 years ago

If someone could get me a copy of GTK and gtk-layer-shell that don't work together and both have debug symbols, I might be able to gather some clues from GDB.

I am pretty sure it's not (only) because of the gtk version, but because of the environment. Both the host void system (where tests pass) and the chroot (where they don't pass) have the same versions of packages. The same gtk-layer-shell -> gtk version combination works in one environment, but doesn't in the other.

Tests in the build chroot used to work with 0.6 (but now even 0.6 fails with similar error messages), I will try to bisect which package update caused this.

wmww commented 2 years ago

Is it the environment where the tests are run or the environment where the libraries are built? My personal suspicion would be the latter. Same GTK and gtk-layer-shell source code might be getting built with a particular compiler, options, etc that's causing them to not work together. The effects of that might be detectable in GDB.

wmww commented 2 years ago

Specifically this is because gtk-layer-shell drills into private GTK structs that it has it's own copies of. If anything is slightly different between it and GTK it's copies might not compiled the same way as GTK's, and it will end up screwing up internal GTK state (this is I suspect what's going on).

wmww commented 1 year ago

Closing due to inactivity, feel free to re-open if still a problem