Skip to content

Revert to simpler fix for not realized windows#244

Merged
marmarek merged 2 commits into
QubesOS:mainfrom
marmarek:revert-236
Aug 7, 2025
Merged

Revert to simpler fix for not realized windows#244
marmarek merged 2 commits into
QubesOS:mainfrom
marmarek:revert-236

Conversation

@marmarek
Copy link
Copy Markdown
Member

@marmarek marmarek commented Aug 5, 2025

The custom extension turned to be unreliable. Revert to a simpler fix which relies more on Xorg internals (very unlikely to change at this point).

Fixes QubesOS/qubes-issues#10119

marmarek and others added 2 commits August 5, 2025 13:53
This makes gui-agent startup unreliable, likely some race condition,
ending up with messages like:

    qubes-gui[715]: Ok, somebody connected.
    qubes-gui[715]: _qubes-video-ext is not available

Since the whole thing solves rather minor issue, revert it for now, to
apply a simpler workaround.

This reverts commit 0fc7bb1.

Fixes QubesOS/qubes-issues#10119
We rely on composite redirect mode of the X server to get per window
pixmaps. Those are setup/teared-down in compRealizeWindow/
compUnrealizeWindow (via compCheckRedirect).

So not realized windows don't have a per window pixmap. Sending grant
refs for them was always broken since we didn't send the offset into the
screen pixmap in those cases. But with the recent change to not allocate
grant refs for the screen pixmap this leads to a noticable error
message.

So don't try to send grant refs for not realized windows. This means
that the configure before mapping will not contiain grant refs.

We rely here very much on implementation details of the X server. In
particular we require that a damage event is generated after the windows
is realized. Note that the map event is generated before realization.
Additionally we require that no damage event is delivered between the
map notification the window being realized.

Based on experimentation and code reading that seems to hold (what
exactly triggers the first damage event after map depends on background
settings and cursor position). This matches also that we so far haven't
had problems even though this bug has been present for a long time.
@qubesos-bot
Copy link
Copy Markdown

qubesos-bot commented Aug 6, 2025

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025080616-4.3&flavor=templates

Test run included the following:

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025061004-4.3&flavor=update

  • system_tests_pvgrub_salt_storage

    • TC_40_PVGrub_debian-13-minimal: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-minimal: test_001_standalone_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-minimal: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-minimal: test_011_template_based_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_001_standalone_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_011_template_based_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_extra

    • TC_00_QVCTest_debian-13-minimal: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

    • TC_00_QVCTest_debian-13-minimal: test_020_webcam (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

Failed tests

10 failures
  • system_tests_pvgrub_salt_storage

    • TC_40_PVGrub_debian-13-minimal: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-minimal: test_001_standalone_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-minimal: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-minimal: test_011_template_based_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_001_standalone_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_40_PVGrub_debian-13-xfce: test_011_template_based_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_extra

    • TC_00_QVCTest_debian-13-minimal: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

    • TC_00_QVCTest_debian-13-minimal: test_020_webcam (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/142375#dependencies

9 fixed

Unstable tests

Details

Performance Tests

Performance degradation:

No issues

Remaining performance tests:

No remaining performance tests

@marmarek marmarek merged commit 7c30e20 into QubesOS:main Aug 7, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

gui-agent sometimes fails with "_qubes-video-ext is not available"

3 participants