Nested sessions broken for months #12498
Replies: 3 comments 1 reply
-
|
changing void CWLSurfaceResource::frame(const Time::steady_tp& now) {
if (m_current.callbacks.empty())
return;
for (auto const& c : m_current.callbacks) {
c->send(now);
}
m_current.callbacks.clear();
}to void CWLSurfaceResource::frame(const Time::steady_tp& now) {
for (auto const& c : m_current.callbacks)
c->send(now);
m_current.callbacks.clear();
for (auto const& c : m_pending.callbacks)
c->send(now);
m_pending.callbacks.clear();
}fixes the bug. I doubt this is the true final fix, but hopefully it gives you an idea of what could be happening? (Maybe pending are never transfered to current? IDK No clue what this code does) |
Beta Was this translation helpful? Give feedback.
-
|
I'm just writing this for anyone who might be having the same weird issue: There was a separate but related bug where after stopping a nested session, if I tried bisecting all the way down to 0.48.0 and it was still happening. It wasn't happening in cachyos so I looked at the logs and saw that cachy was using the logind backend like this this: [LOG] [AQ] [libseat] [libseat/backend/seatd.c:64] Could not connect to socket /run/seatd.sock: No such file or directory
[LOG] [AQ] [libseat] [libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
[LOG] [AQ] [libseat] [libseat/libseat.c:73] Seat opened with backend 'logind'
[LOG] [AQ] drm: Enumerated device /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/drm/card0
[LOG] [AQ] libseat: Device /dev/dri/card0 supports kms
[LOG] [AQ] drm: Found 1 GPUsand the one that had the above mentioned bug was using the seatd backend: [LOG] [AQ] [libseat] [libseat/libseat.c:73] Seat opened with backend 'seatd'
[LOG] [AQ] [libseat] [libseat/backend/seatd.c:212] Enabling seat
[LOG] [AQ] drm: Enumerated device /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/drm/card0
[LOG] [AQ] libseat: Device /dev/dri/card0 supports kms
[LOG] [AQ] drm: Found 1 GPUsSo I just disabled the seatd backend, and forced hyprland to use the logind backend, and it no longer had this bug. (Currently updating aquamarine as suggested and will report back if both of these are fixed by that.) |
Beta Was this translation helpful? Give feedback.
-
|
Okay I can confirm updating Aquamarine solves the re-painting bug, but the seatd ctrl+c crash still occurs. Since forcing the logind backend to be used instead of the seatd works and doesn't crash on ctrl+c, I'm satisfied. And just because I have them anyways, here's the backtrace of the ctrl+c crash when seatd backend is chosen. (Feel free to ignore since almost no one is experiencing it and there is a workaround already). |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Nested sessions have been broken for months, making it very painful to debug plugins, and I finally got tired enough to bisect.
The nested session becomes unresponsive, they don't repaint except at random times, typing doesn't work, mouse movement doesn't work, and resizing the window only sometimes generates a new frame.
I posted a video on the Hyprland discord of what it looks like.
https://discord.com/channels/961691461554950145/1236850208411877387/1436175108099280944 (note I thought it was a seatd issue, but it wasn't, this commit was the issue)
The bad commit is: 5ba2d22
The good commit before it is: 5a20862
A clue of what the issue might be is the following weird behaviour:
bad commit running under bad commit fails.
good commit running under good commit works.
bad commit running under good commit works.
good commit running under bad commit fails.
good_commit_logs.txt
bad_commit_logs.txt
bad_commit_running_nested_under_good_commit.txt
good_commit_running_nested_under_bad_commit.txt
There was one other person on the discord who described the same problem. I tried fixing it myself but I don't understand what is or isn't supposed to happen in 5ba2d22 and can't really think of what the fix would be
Beta Was this translation helpful? Give feedback.
All reactions