swaywm / sway

i3-compatible Wayland compositor
https://swaywm.org
MIT License
14.41k stars 1.1k forks source link

Sway occasionally fails to start (suspected race condition with kanshi) #6863

Open gustafla opened 2 years ago

gustafla commented 2 years ago

Sway Version: sway version 1.7

Debug Log:

00:00:00.308 [ERROR] [wlr] [xwayland/server.c:443] Cannot find Xwayland binary "/usr/bin/Xwayland"
00:00:00.308 [ERROR] [sway/server.c:273] Failed to start Xwayland
info: main.c:420: version: 1.11.0 +pgo +ime +graphemes -assertions
info: main.c:427: arch: Linux x86_64/64-bit
info: main.c:439: locale: en_US.UTF-8
/home/gustafla/.config/sway/bg.sh: line 29: identify: command not found
info: config.c:2936: loading configuration from /home/gustafla/.config/foot/foot.ini
info: config.c:896: imported sub-configuration from /usr/share/foot/themes/solarized-light
/home/gustafla/.config/sway/bg.sh: line 30: jq: command not found
dbus-update-activation-environment: error: --all cannot be used with VAR or VAR=VAL arguments
info: fcft.c:314: fcft: 3.0.1 +graphemes +runs -assertions
info: fcft.c:324: fontconfig: 2.13.96
info: fcft.c:330: freetype: 2.11.1
info: fcft.c:794: /usr/share/fonts/liberation/LiberationMono-Regular.ttf: size=8.00pt/8px, dpi=75.00
Environment variable $DISPLAY not set, ignoring.
registry: adding output 41
registry: adding output 42
applying profile '<anonymous at line 5, col 9>'
applying profile output 'eDP-1' on connected head 'eDP-1'
applying profile output 'Hewlett Packard HP Z24nq CN46270RJN' on connected head 'DP-1'
calculated sun trajectory: dawn 08:00, sunrise 08:00, sunset 20:00, dusk 20:00
setting temperature to 6500 K
00:00:01.524 [ERROR] [wlr] [types/output/output.c:656] Basic output test failed for eDP-1
00:00:01.524 [ERROR] [sway/config/output.c:501] Failed to commit output eDP-1
00:00:01.524 [ERROR] [wlr] [backend/drm/atomic.c:34] connector DP-1: Atomic commit failed (pageflip): Device or resource busy
00:00:01.524 [ERROR] [sway/config/output.c:501] Failed to commit output DP-1
failed to apply configuration for profile '<anonymous at line 5, col 9>'
info: wayland.c:1283: eDP-1: 1920x1080+0x0@60Hz 0x05FA 13.92" scale=1 PPI=160x180 (physical) PPI=160x180 (logical), DPI=158.26
info: wayland.c:1283: DP-1: 2560x1440+1920x0@60Hz HP Z24nq 23.98" scale=1 PPI=128x130 (physical) PPI=128x130 (logical), DPI=122.50
info: server.c:490: accepting connections on /run/user/60222/foot-wayland-1.sock
info: main.c:637: running as server; launch terminals by running footclient
00:00:01.525 [ERROR] [wlr] [types/output/output.c:656] Basic output test failed for eDP-1
i3status: trying to auto-detect output_format setting
i3status: auto-detected "i3bar"
00:00:01.660 [ERROR] [wlr] [types/output/output.c:656] Basic output test failed for eDP-1
00:00:01.661 [ERROR] [sway/config/output.c:501] Failed to commit output eDP-1
sway: types/output/render.c:103: output_attach_back_buffer: Assertion `output->back_buffer == NULL' failed.
00:00:00.481 [ERROR] [common/ipc-client.c:87] Unable to receive IPC response
2022-03-03 11:27:55 - [swaybg-1.1/main.c:560] Missing a required Wayland interface
 err: wayland.c:1162: failed to read events from the Wayland socket: Broken pipe
 err: wayland.c:1646: failed to flush wayland socket: Broken pipe
info: main.c:670: goodbye
i3status: exiting due to signal.

Configuration File: My main sway config file And the included file output:

exec kanshi

Stack Trace:

#0  0x00006431330be34c in __pthread_kill_implementation () at /usr/lib/libc.so.6
#1  0x00006431330714b8 in raise () at /usr/lib/libc.so.6
#2  0x000064313305b534 in abort () at /usr/lib/libc.so.6
#3  0x000064313305b45c in _nl_load_domain.cold () at /usr/lib/libc.so.6
#4  0x000064313306a116 in  () at /usr/lib/libc.so.6
#5  0x0000643133314648 in  () at /usr/lib/libwlroots.so.10
#6  0x00006431333146a3 in wlr_output_attach_render () at /usr/lib/libwlroots.so.10
#7  0x0000643133334da2 in wlr_output_damage_attach_render () at /usr/lib/libwlroots.so.10
#8  0x00000f9738c89fbf in  ()
#9  0x00000f9738c8ac80 in  ()
#10 0x00006431333458fe in wlr_signal_emit_safe () at /usr/lib/libwlroots.so.10
#11 0x00006431333458fe in wlr_signal_emit_safe () at /usr/lib/libwlroots.so.10
#12 0x000064313339d0db in wl_event_loop_dispatch_idle () at /usr/lib/libwayland-server.so.0
#13 0x000064313339d239 in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
#14 0x000064313339ad37 in wl_display_run () at /usr/lib/libwayland-server.so.0
#15 0x00000f9738c77a4a in  ()
#16 0x000064313305c310 in __libc_start_call_main () at /usr/lib/libc.so.6
#17 0x000064313305c3c1 in __libc_start_main_impl () at /usr/lib/libc.so.6
#18 0x00000f9738c77e0e in  ()

Description:

When I launch sway, sometimes (<5% of the time?) it crashes very soon after startup. From reading the logs, to me it looks like it's trying to test/assert some properties about a display (eDP) which kanshi has already disabled. I'm not sure if this is sway's or kanshi's bug, but I believe sway should "lock" the displays from external influence when it's going to do assertions or configuration. Or buffer the API/IPC calls kanshi makes during the critical section. I don't know, I haven't read the sources of either program.

jokeyrhyme commented 2 years ago

I get similar behaviour and logs when I swayidle calls wlr-randr DP-1 --off in a multi-monitor setup (note that I'm using river, but this is a compositor that is also built upon wlroots, like sway

logs ``` root[34101]: ACPI group/action undefined: jack/lineout / LINEOUT root[34103]: ACPI group/action undefined: jack/videoout / VIDEOOUT kanshi[2532]: applying profile 'workingfromoffice32' root[34105]: ACPI group/action undefined: jack/lineout / LINEOUT river[2457]: error(wlroots): [types/output/output.c:656] Basic output test failed for DP-1 river[2457]: error(output_manager): failed to apply config to output DP-1 swayidle[34110]: failed to apply configuration root[34111]: ACPI group/action undefined: jack/videoout / VIDEOOUT river[2457]: error(wlroots): [types/output/output.c:656] Basic output test failed for DP-1 river[2457]: error(render): output commit failed for DP-1 river[2457]: river: types/output/render.c:103: output_attach_back_buffer: Assertion `output->back_buffer == NULL' failed. systemd[1]: Created slice Slice /system/systemd-coredump. systemd[1]: Started Process Core Dump (PID 34112/UID 0) ```
stack trace ``` Module linux-vdso.so.1 with build-id c44838b6f952044acc4a4965fe03ad60a34a6683 Module libnss_systemd.so.2 with build-id be2c0a0cad78bb62221fff5133304deaf6794edb Module libicudata.so.71 with build-id 4fef196388e678deb881978139e125e20ee2d94d Module libicuuc.so.71 with build-id 633fdc0c5385d916571f6140e7a978ad0630ef55 Module libxml2.so.2 with build-id 6b0ec2acdbc8f1a2255cc5e3e1258472cd99e272 Module libncursesw.so.6 with build-id b9917757481e6fa6097e2a1f31f5bb5eaf138c4e Module libedit.so.0 with build-id 4b0babfcad161c2ad0af6e59e2493258db23a331 Module libstdc++.so.6 with build-id 88ad4eff81a00c684abfe0f863e87434123d8943 Module libdrm_nouveau.so.2 with build-id af8afb2331ac08c52132102ecbdc6076a8eb4c6f Module libdrm_amdgpu.so.1 with build-id 8eb3977b830f3012d9ead7b4def5f4d2f38ec688 Module libelf.so.1 with build-id c09e357a1a3b061bf219bcfb243ca31b175e77fa Module libdrm_radeon.so.1 with build-id 43e0aecc70c4ce905ba35c948e1c9a5d999b14c0 Module libsensors.so.5 with build-id dc8b2c1c0d8525411aca188ea3cc3fb86d381d30 Module libz.so.1 with build-id fefe3219a96d682ec98fcfb78866b8594298b5a2 Module libLLVM-13.so with build-id 76d1fe97dbdca6d6891c6a1a7c06a388aa247154 Module iris_dri.so with build-id 2c924a3c23ae18ded3255d5b83fea9a8bf3d2af8 Module libxshmfence.so.1 with build-id 8876d9ccf620858795724ca24b9e567585a77cec Module libxcb-sync.so.1 with build-id dda14591103b01b1311906053bf1ca9e82ade35c Module libxcb-dri2.so.0 with build-id 2dd6e65129a809dab828a1d26215a3f7a363fcc8 Module libX11-xcb.so.1 with build-id f6beacd41cd16a23f53e5e56bb599e98f039d0d6 Module libglapi.so.0 with build-id b8a35e2049e102a7e69039443c0b3aacbbf4eaa6 Module libEGL_mesa.so.0 with build-id aed3c03444f48aed40bc9c94fc7f83170a51c9f7 Module libgpg-error.so.0 with build-id f9aaa96d5ddf6f6872051ed7abcdfe6bdaff9b1c Module libpthread.so.0 with build-id 7fa8b52fae071a370ba4ca32bf9490a30aff31c4 Module libgcrypt.so.20 with build-id 8bf3cb884124273640de797a3e77d86c98434ea4 Module libcap.so.2 with build-id 21b00ab76bb16fde56fd741f07233c78069f0579 Module liblz4.so.1 with build-id e63600ab23b2f6997f42fac2fa56e1f02ce159a1 Module libzstd.so.1 with build-id 3bccb8fe08e48d5ea135b1d0f99de0d771dd752f Module liblzma.so.5 with build-id 28b40c7af8098a66af6ee093b6986b91cad7694d Module libpcre.so.1 with build-id 845483dd0acba86de9f0313102bebbaf3ce52767 Module libsystemd.so.0 with build-id cdfc45d8f96e3af51b3d041c32f7899a93b86706 Module libXdmcp.so.6 with build-id 8ca0792d23c8b8b4c0864297512349292bea5955 Module libXau.so.6 with build-id 1c67764663e07bec24d8951e5fd93f4d165979ff Module libdl.so.2 with build-id bb9bd2657bfba9f60bd34d2050cc63a7eb024bc4 Module libGLdispatch.so.0 with build-id 501765b3a78d668860fa54229b18107473aeda4c Module libexpat.so.1 with build-id 113bb5a3e9ad856801bfcfc029102c9bdc13d67e Module libglib-2.0.so.0 with build-id e268e80e668ce871312cf50e9969f88b086e33f2 Module libgobject-2.0.so.0 with build-id 4337ec84b2f33ec39a95863d47bfca0a28afd488 Module libgudev-1.0.so.0 with build-id 460465b63a086d945124662363191903c0002793 Module libgcc_s.so.1 with build-id 5d817452a709ca3a213341555ddcf446ecee37fa Module libxcb-errors.so.0 with build-id 0d6ee255fc30b6a86856b9f1a96491f12a1cacaf Module libxcb-res.so.0 with build-id b825f66a75478fd00eeb4c57ecb0ac7792e00f5e Module libxcb-icccm.so.4 with build-id 73f1e12d76af383aa969a60279ed5ed922045f47 Module libxcb-composite.so.0 with build-id 94fff40466ef37eb5973997211aa68f9beb81d15 Module libseat.so.1 with build-id ed16d74b728b0c3534e0c822c7d8c57b7669c228 Module libwayland-client.so.0 with build-id 95e7368b400dd57e3db2a5c385de71c7dca08879 Module libxcb-xinput.so.0 with build-id 6403174c48f05f40cf7c168beb86f2886b9f09c1 Module libxcb-xfixes.so.0 with build-id a6b197ace5b9b59f913f5969eb419a88d1194f47 Module libxcb-shm.so.0 with build-id fb797f299a446f559a95afcc168227482cc800d1 Module libxcb-render-util.so.0 with build-id c64fb28ea20a320a9754273d9ea3af85f6f74b17 Module libxcb-render.so.0 with build-id a37bdb37744b508be9dd29fd9ccb9bb0170d43e5 Module libxcb-present.so.0 with build-id 68f5465258750e2397b1333b3ffc01ee33caa4e1 Module libxcb-dri3.so.0 with build-id 9407a2480e09dc5a1dd9d9a0652fa8d32b328c91 Module libxcb.so.1 with build-id 0d1ef11740a5daad2ee331e812a51aa6574af222 Module libvulkan.so.1 with build-id 9a68026d3ebb939eab0b6165c10596468560db5e Module libGLESv2.so.2 with build-id 60702bece6c583d41116a85e1d5b3c096a28d3d7 Module libEGL.so.1 with build-id 686c2e4036c01a3a72349ed0dd04f7c434af14ce Module libgbm.so.1 with build-id 33713af0b01128039d0ab0f952ca068f8b43f8f0 Module libdrm.so.2 with build-id 00816f0a71c7e4e388c10db6245dbb9c031732a9 Module ld-linux-x86-64.so.2 with build-id c09c6f50f6bcec73c64a0b4be77eadb8f7202410 Module libffi.so.8 with build-id f0a9586cf0f42d2b9971bd1065ca3a6b19f4a2c2 Module libwacom.so.9 with build-id dab3ab00bae4a88ba3bd0d2e9262a9d5bf59187b Module libm.so.6 with build-id 596b63a006a4386dcab30912d2b54a7a61827b07 Module libudev.so.1 with build-id 00aef0aeab17dca76ebdbe76e845712bf97b9d0c Module libmtdev.so.1 with build-id 0cea2a842ae9a0ef02a08477076caab0e5ac5e42 Module libc.so.6 with build-id 85766e9d8458b16e9c7ce6e07c712c02b8471dbc Module libwlroots.so.10 with build-id d20dfebb2e8d5f7225ccfc20719c801294502b60 Module libpixman-1.so.0 with build-id 341f793dcada3a48a306a793d265a517e3f2e7d6 Module libxkbcommon.so.0 with build-id 3a9338b2085f0af41217bc0a90ffcc941938a16e Module libwayland-server.so.0 with build-id 5526cec43774a83c7ab8c7ff820eea8b28880d51 Module libinput.so.10 with build-id 2dae1736f9a02020c3932f0ceb476474463a5c07 Module libevdev.so.2 with build-id 09eb82a0dfca98325f54b3918875cff09a5c1428 Module river without build-id. Stack trace of thread 2457: #0 0x00007f579068634c __pthread_kill_implementation (libc.so.6 + 0x8f34c) #1 0x00007f57906394b8 raise (libc.so.6 + 0x424b8) #2 0x00007f5790623534 abort (libc.so.6 + 0x2c534) #3 0x00007f579062345c __assert_fail_base.cold (libc.so.6 + 0x2c45c) #4 0x00007f5790632116 __assert_fail (libc.so.6 + 0x3b116) #5 0x00007f579085a648 n/a (libwlroots.so.10 + 0x57648) #6 0x00007f579085a6a3 wlr_output_attach_render (libwlroots.so.10 + 0x576a3) #7 0x00007f579087ada2 wlr_output_damage_attach_render (libwlroots.so.10 + 0x77da2) #8 0x0000000000253df8 floorl (river + 0x53df8) #9 0x00007ffefbb21290 n/a (n/a + 0x0) ELF object binary architecture: AMD x86-64 ```
catdevnull commented 2 years ago

This happens to me constantly, and also when plugging/unplugging displays.

blastrock commented 1 year ago

I switched to sway a few days a go, I got this same issue a few times when waking up from sleep or leaving idle mode after a dpms off. I do not use kanshi or any dynamic screen manager.

I don't know if it's related but I have a lot of errors like:

Sep 16 10:07:35 yuki /usr/libexec/gdm-wayland-session[6188]: 01:56:46.890 [ERROR] [wlr] [backend/drm/atomic.c:34] connector DP-4: Atomic commit failed (pageflip): Device or resource busy
Sep 16 10:07:35 yuki /usr/libexec/gdm-wayland-session[6188]: 01:56:46.890 [ERROR] [sway/config/output.c:501] Failed to commit output DP-4
Sep 16 10:07:35 yuki /usr/libexec/gdm-wayland-session[6188]: 01:56:46.890 [ERROR] [wlr] [backend/drm/atomic.c:34] connector eDP-1: Atomic commit failed (pageflip): Device or resource busy
Sep 16 10:07:35 yuki /usr/libexec/gdm-wayland-session[6188]: 01:56:46.890 [ERROR] [sway/config/output.c:501] Failed to commit output eDP-1

The relevant logs before crash:

Sep 16 10:31:39 yuki /usr/libexec/gdm-wayland-session[42922]: 00:00:03.088 [ERROR] [common/ipc-client.c:87] Unable to receive IPC response
Sep 16 10:31:42 yuki /usr/libexec/gdm-wayland-session[42927]: 00:00:03.067 [ERROR] [common/ipc-client.c:87] Unable to receive IPC response
Sep 16 10:31:49 yuki /usr/libexec/gdm-wayland-session[42975]: 42199
Sep 16 10:31:49 yuki /usr/libexec/gdm-wayland-session[42975]: 42214
Sep 16 10:31:49 yuki /usr/libexec/gdm-wayland-session[22852]: 2022-09-16 10:31:49 - [main.c:392] Destroying output DP-4 (Iiyama North America PL2730H 1153621211304)
Sep 16 10:31:49 yuki waybar[22857]: Invalid id 8 passed to g_bus_unwatch_name()
Sep 16 10:31:49 yuki /usr/libexec/gdm-wayland-session[22857]: [2022-09-16 10:31:49.809] [info] Bar removed from output: DP-4
Sep 16 10:31:49 yuki waybar[22857]: Dropped dispatcher message as the dispatcher no longer exists
Sep 16 10:31:50 yuki /usr/libexec/gdm-wayland-session[6188]: 02:21:01.238 [ERROR] [wlr] [types/output/output.c:656] Basic output test failed for eDP-1
Sep 16 10:31:50 yuki /usr/libexec/gdm-wayland-session[6188]: 02:21:01.238 [ERROR] [sway/config/output.c:501] Failed to commit output eDP-1
Sep 16 10:31:50 yuki /usr/libexec/gdm-wayland-session[22852]: 2022-09-16 10:31:50 - [main.c:340] Found config Iiyama North America PL2730H 1153621211304 for output DP-4 (Iiyama North America PL2730H 1153621211304)
Sep 16 10:31:50 yuki /usr/libexec/gdm-wayland-session[6188]: 02:21:01.332 [ERROR] [wlr] [types/output/output.c:656] Basic output test failed for eDP-1
Sep 16 10:31:50 yuki /usr/libexec/gdm-wayland-session[6188]: sway: types/output/render.c:103: output_attach_back_buffer: Assertion `output->back_buffer == NULL' failed.
Vladimir-csp commented 1 year ago

Perhaps it would be useful to have an option to disable output hotplug handling on sway's side if external tool like kanshi is used.

emersion commented 1 year ago

Yeah, that would be a nice feature.