-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
swww is freezing mid-transition on some monitors until restarted #348
Comments
This seems related to #326! I can observe the same strange overlapping issue with the frozen images on my monitors. If I try to use Here's what I did:
Here are the logs I got throughout this process: More journalctl logs
|
Same here... It seems to not want to work on my primary monitor (ultra widescreen) and for every subsequent transition it fails, it seems to increase the buffer count and size. Additionally, when it fails and you quit swww it generates a bunch of broken pipe errors. 0ms [INFO] (main) Forced usage of wl_shm format: Xrgb
0ms [INFO] (main) Selected wl_shm format: Xrgb
62ms [INFO] (transition) BumpPool with: 1 buffers. Size: 24000Kb
71ms [INFO] (transition) BumpPool with: 1 buffers. Size: 14400Kb
71ms [INFO] (transition) BumpPool with: 1 buffers. Size: 14400Kb
3421ms [INFO] (transition) BumpPool with: 1 buffers. Size: 14400Kb
3421ms [INFO] (transition) BumpPool with: 1 buffers. Size: 24000Kb
3421ms [INFO] (transition) BumpPool with: 1 buffers. Size: 14400Kb
3454ms [INFO] (transition) BumpPool with: 2 buffers. Size: 28800Kb
3454ms [INFO] (transition) BumpPool with: 2 buffers. Size: 48000Kb
3464ms [INFO] (transition) BumpPool with: 2 buffers. Size: 28800Kb
58409ms [INFO] (transition) BumpPool with: 1 buffers. Size: 48000Kb
58442ms [INFO] (transition) BumpPool with: 2 buffers. Size: 48000Kb
60866ms [INFO] (transition) BumpPool with: 1 buffers. Size: 28800Kb
60866ms [INFO] (transition) BumpPool with: 1 buffers. Size: 48000Kb
60866ms [INFO] (transition) BumpPool with: 1 buffers. Size: 28800Kb
60899ms [INFO] (transition) BumpPool with: 2 buffers. Size: 28800Kb
60899ms [INFO] (transition) BumpPool with: 2 buffers. Size: 48000Kb
60907ms [INFO] (transition) BumpPool with: 2 buffers. Size: 28800Kb
65047ms [INFO] (transition) BumpPool with: 1 buffers. Size: 48000Kb
65081ms [INFO] (transition) BumpPool with: 2 buffers. Size: 48000Kb
125395ms [INFO] (transition) BumpPool with: 3 buffers. Size: 72000Kb
135874ms [INFO] (transition) BumpPool with: 4 buffers. Size: 96000Kb
139090ms [INFO] (transition) BumpPool with: 5 buffers. Size: 120000Kb
143029ms [INFO] (transition) BumpPool with: 6 buffers. Size: 144000Kb
146262ms [INFO] (transition) BumpPool with: 7 buffers. Size: 168000Kb
174521ms [INFO] (clear) BumpPool with: 8 buffers. Size: 192000Kb
180794ms [INFO] (transition) BumpPool with: 9 buffers. Size: 216000Kb
190586ms [INFO] (clear) BumpPool with: 3 buffers. Size: 43200Kb
190594ms [INFO] (clear) BumpPool with: 3 buffers. Size: 43200Kb
190602ms [INFO] (clear) BumpPool with: 10 buffers. Size: 240000Kb
191081ms [INFO] (clear) BumpPool with: 4 buffers. Size: 57600Kb
191089ms [INFO] (clear) BumpPool with: 4 buffers. Size: 57600Kb
191096ms [INFO] (clear) BumpPool with: 11 buffers. Size: 264000Kb
191306ms [INFO] (clear) BumpPool with: 5 buffers. Size: 72000Kb
191314ms [INFO] (clear) BumpPool with: 5 buffers. Size: 72000Kb
191322ms [INFO] (clear) BumpPool with: 12 buffers. Size: 288000Kb
191486ms [INFO] (clear) BumpPool with: 6 buffers. Size: 86400Kb
191494ms [INFO] (clear) BumpPool with: 6 buffers. Size: 86400Kb
191502ms [INFO] (clear) BumpPool with: 13 buffers. Size: 312000Kb
^C 202580ms [INFO] (transition) BumpPool with: 7 buffers. Size: 100800Kb
202581ms [INFO] (transition) BumpPool with: 14 buffers. Size: 336000Kb
202591ms [INFO] (transition) BumpPool with: 7 buffers. Size: 100800Kb
thread 'thread 'transitiontransition' panicked at ' panicked at daemon/src/wallpaper.rsdaemon/src/wallpaper.rs::464464::7070:
:
called `Result::unwrap()` on an `Err` value: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }called `Result::unwrap()` on an `Err` value: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'thread 'animation spawneranimation spawner' panicked at ' panicked at daemon/src/animations/mod.rsdaemon/src/animations/mod.rs::8383::1717:
:
a scoped thread panickeda scoped thread panicked
thread 'transition' panicked at daemon/src/wayland/bump_pool.rs:147:87:
called `Result::unwrap()` on an `Err` value: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
thread 'transition' panicked at daemon/src/wallpaper.rs:440:45:
called `Result::unwrap()` on an `Err` value: PoisonError { .. }
thread 'clear' panicked at daemon/src/wallpaper.rs:440:45:
called `Result::unwrap()` on an `Err` value: PoisonError { .. }
thread 'animation spawner' panicked at daemon/src/animations/mod.rs:83:17:
thread 'a scoped thread panickedtransition
' panicked at daemon/src/wallpaper.rs:440:45:
called `Result::unwrap()` on an `Err` value: PoisonError { .. }
thread 'transitionthread '' panicked at animation spawnerdaemon/src/wallpaper.rs' panicked at :daemon/src/animations/mod.rs440::8345::
17called `Result::unwrap()` on an `Err` value: PoisonError { .. }:
a scoped thread panicked
thread 'transition' panicked at daemon/src/wallpaper.rsthread ':animation spawner440' panicked at :daemon/src/animations/mod.rs45::
83called `Result::unwrap()` on an `Err` value: PoisonError { .. }:
17:
a scoped thread panicked
thread 'transition' panicked at daemon/src/wallpaper.rs:440:thread '45animation spawner:
' panicked at called `Result::unwrap()` on an `Err` value: PoisonError { .. }daemon/src/animations/mod.rs
:83:17:
a scoped thread panicked
thread 'clear' panicked at thread 'daemon/src/wallpaper.rsanimation spawner:' panicked at 440daemon/src/animations/mod.rs::4583:
:called `Result::unwrap()` on an `Err` value: PoisonError { .. }17
:
a scoped thread panicked
thread 'thread 'transitionclear' panicked at ' panicked at daemon/src/wallpaper.rsdaemon/src/wallpaper.rs::464440::7045:
:
called `Result::unwrap()` on an `Err` value: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }called `Result::unwrap()` on an `Err` value: PoisonError { .. }
thread 'clear' panicked at daemon/src/wallpaper.rs:440:45:
called `Result::unwrap()` on an `Err` value: PoisonError { .. }thread '
animation spawner' panicked at daemon/src/animations/mod.rs:83:17:
thread 'a scoped thread panickedclear
' panicked at daemon/src/wallpaper.rs:440:45:
called `Result::unwrap()` on an `Err` value: PoisonError { .. }
202607ms [ERROR] (main) error destroying wl_surface: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202607ms [ERROR] (main) error destroying wp_viewport: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202607ms [ERROR] (main) error destroying wp_fractional_scale_v1: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202607ms [ERROR] (main) error destroying zwlr_layer_surface_v1: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202608ms [ERROR] (main) failed to destroy wl_shm_pool: Broken pipe (os error 32)
202621ms [ERROR] (main) error destroying wl_surface: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202621ms [ERROR] (main) error destroying wp_viewport: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202621ms [ERROR] (main) error destroying wp_fractional_scale_v1: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202621ms [ERROR] (main) error destroying zwlr_layer_surface_v1: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202622ms [ERROR] (main) failed to destroy wl_shm_pool: Broken pipe (os error 32)
202635ms [ERROR] (main) error destroying wl_surface: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) error destroying wp_viewport: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) error destroying wp_fractional_scale_v1: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) error destroying zwlr_layer_surface_v1: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202635ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202636ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202636ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202636ms [ERROR] (main) failed to destroy wl_buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
202636ms [ERROR] (main) failed to destroy wl_shm_pool: Broken pipe (os error 32)
202680ms [INFO] (main) Removed socket at "/run/user/1000/swww-wayland-1.socket"
202680ms [INFO] (main) Goodbye! Seems to happen very frequently. |
This seems to be a problem when using multiple monitors of different resolution. I appears we may be building the shared memory pool wrong when this happens. |
@LGFae Actually, img change sucked half way even if I'm using only one monitor some time. And I noticed that if I'm running swww img manually on a terminal, it's more likely to work fine. But when I do the same in a shell script, a wallpaper change is like a roll of the dice.🙁 So IDK if it's a multi monitor issue. |
As of |
I still have the issue as of the latest version on arch git (0.9.5.r172.g0db3f4e-1). My behavior seems to slightly differ but seems somewhat related. My BumpPool buffer slowly and somewhat inconsistently until eventually crashing because of memory. When I run swww by itself (and not within a script), it seems to transition mostly fine while still climbing in memory. However when brought into a script, it starts to freeze mid-transition. This mostly seems to occur when doing somewhat heavy operations after invoking swww. In my case, it was swww -> wallust (pywal, but more powerful) -> reload hyprland. When I commented out wallust and the reloading of hyprland, transitions worked. When I added a ~2s sleep before moving on, that also helped with transitions. the BumpPool buffer kept on rising, however. I also have a dual monitor setup with different resolutions. On my laptop, it is up to date and it does not appear to have this issue. So maybe it does have something to do with that, as stated in an earlier post. What is strange is that this only started occurring rather recently. I did an oopsie and blew up my linux, so I had to reinstall it from scratch. I don't remember being THAT out of date with swww, as the last time I did a system upgrade was less than 2 weeks ago. So that implies that something changed from those two weeks ago, or I set something up incorrectly compared to my previous system; and that incorrect setup is doing weird things with swww. |
|
swww version: swww 0.9.5-masterV2
wm: Hyprland 0.41.2+918d834
I have three monitors: my main 1440p monitor, and two 1080p monitors, one on each side of the main monitor. swww-daemon is setup as a user systemd service on my system.
I also have a timer to change the wallpaper every hour, and occasionally, swww will get stuck mid-transition on my two side monitors, but never my center monitor. And once it is stuck, further calls to
swww img
do not "unstuck" the side monitors. But the center monitor will still work and change wallpapers just fine.So, my two side monitors will be stuck mid-transition indefinitely until I restart
swww-daemon
.I'm not getting any apparent errors while
swww-daemon
is alive, but I noticed there are a ton of errors I get when the daemon exits. Here are the logs I gathered just before entering the command to stopswww-daemon
:journalctl --user-unit swww-daemon.service --follow
The text was updated successfully, but these errors were encountered: