Skip to content

Conversation

ben-grande
Copy link
Contributor

@ben-grande ben-grande commented May 16, 2025

  • Autostarted applications don't show when preloading; and
  • Preloaded qubes paused before the session will have a working GUI when
    the session starts.

For: QubesOS/qubes-issues#1512
For: QubesOS/qubes-issues#9940
For: QubesOS/qubes-issues#9907
Requires: QubesOS/qubes-core-admin-client#359
Requires: #689

@qubesos-bot
Copy link

qubesos-bot commented Jun 8, 2025

OpenQA test summary

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

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_qwt_win10@hw13

    • windows_install: Failed (test died)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...
  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Explorer-new-...
  • system_tests_basic_vm_qrexec_gui_ext4

Failed tests

8 failures
  • system_tests_qwt_win10@hw13

    • windows_install: Failed (test died)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...
  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Explorer-new-...
  • system_tests_basic_vm_qrexec_gui_ext4

  • system_tests_kde_gui_interactive

    • gui_keyboard_layout: wait_serial (wait serial expected)
      # wait_serial expected: "echo -e '[Layout]\nLayoutList=us,de' | sud...

    • gui_keyboard_layout: Failed (test died)
      # Test died: command 'test "$(cd ~user;ls e1*)" = "$(qvm-run -p wor...

Fixed failures

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

11 fixed

Unstable tests

Performance Tests

Performance degradation:

6 performance degradations
  • debian-12-xfce_exec-data-duplex-root: 90.83 🔺 ( previous job: 70.01, degradation: 129.74%)
  • whonix-gateway-17_socket-root: 9.29 🔺 ( previous job: 7.89, degradation: 117.69%)
  • whonix-workstation-17_exec-data-duplex-root: 98.57 🔺 ( previous job: 86.00, degradation: 114.62%)
  • dom0_root_seq1m_q8t1_read 3:read_bandwidth_kb: 221545.00 :small_red_triangle: ( previous job: 289982.00, degradation: 76.40%)
  • dom0_varlibqubes_rnd4k_q32t1_write 3:write_bandwidth_kb: 5961.00 :small_red_triangle: ( previous job: 8874.00, degradation: 67.17%)
  • dom0_varlibqubes_rnd4k_q1t1_write 3:write_bandwidth_kb: 3764.00 :small_red_triangle: ( previous job: 4420.00, degradation: 85.16%)

Remaining performance tests:

66 tests
  • debian-12-xfce_exec: 8.33 🟢 ( previous job: 8.63, improvement: 96.54%)
  • debian-12-xfce_exec-root: 28.68 🟢 ( previous job: 29.44, improvement: 97.42%)
  • debian-12-xfce_socket: 8.19 🟢 ( previous job: 8.50, improvement: 96.32%)
  • debian-12-xfce_socket-root: 8.71 🔺 ( previous job: 8.31, degradation: 104.77%)
  • debian-12-xfce_exec-data-simplex: 67.31 🔺 ( previous job: 65.51, degradation: 102.75%)
  • debian-12-xfce_exec-data-duplex: 73.59 🔺 ( previous job: 73.55, degradation: 100.06%)
  • debian-12-xfce_socket-data-duplex: 154.32 🟢 ( previous job: 161.35, improvement: 95.64%)
  • fedora-42-xfce_exec: 9.09
  • fedora-42-xfce_exec-root: 61.09
  • fedora-42-xfce_socket: 8.42
  • fedora-42-xfce_socket-root: 8.25
  • fedora-42-xfce_exec-data-simplex: 76.47
  • fedora-42-xfce_exec-data-duplex: 77.03
  • fedora-42-xfce_exec-data-duplex-root: 99.06
  • fedora-42-xfce_socket-data-duplex: 130.39
  • whonix-gateway-17_exec: 6.65 🟢 ( previous job: 7.34, improvement: 90.55%)
  • whonix-gateway-17_exec-root: 39.06 🟢 ( previous job: 39.57, improvement: 98.70%)
  • whonix-gateway-17_socket: 8.50 🔺 ( previous job: 7.85, degradation: 108.18%)
  • whonix-gateway-17_exec-data-simplex: 80.12 🔺 ( previous job: 77.76, degradation: 103.04%)
  • whonix-gateway-17_exec-data-duplex: 76.17 🟢 ( previous job: 78.39, improvement: 97.18%)
  • whonix-gateway-17_exec-data-duplex-root: 92.70 🔺 ( previous job: 90.74, degradation: 102.16%)
  • whonix-gateway-17_socket-data-duplex: 169.29 🔺 ( previous job: 161.95, degradation: 104.53%)
  • whonix-workstation-17_exec: 8.01 🟢 ( previous job: 8.27, improvement: 96.74%)
  • whonix-workstation-17_exec-root: 53.37 🟢 ( previous job: 57.61, improvement: 92.64%)
  • whonix-workstation-17_socket: 8.92 🟢 ( previous job: 8.97, improvement: 99.51%)
  • whonix-workstation-17_socket-root: 8.56 🟢 ( previous job: 9.46, improvement: 90.50%)
  • whonix-workstation-17_exec-data-simplex: 72.79 🟢 ( previous job: 74.54, improvement: 97.65%)
  • whonix-workstation-17_exec-data-duplex: 77.27 🔺 ( previous job: 74.84, degradation: 103.24%)
  • whonix-workstation-17_socket-data-duplex: 165.43 🔺 ( previous job: 160.20, degradation: 103.27%)
  • dom0_root_seq1m_q8t1_write 3:write_bandwidth_kb: 275868.00 :green_circle: ( previous job: 101988.00, improvement: 270.49%)
  • dom0_root_seq1m_q1t1_read 3:read_bandwidth_kb: 102174.00 :green_circle: ( previous job: 14284.00, improvement: 715.30%)
  • dom0_root_seq1m_q1t1_write 3:write_bandwidth_kb: 99280.00 :green_circle: ( previous job: 32696.00, improvement: 303.65%)
  • dom0_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 102413.00 :green_circle: ( previous job: 17102.00, improvement: 598.84%)
  • dom0_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 5363.00 :green_circle: ( previous job: 1091.00, improvement: 491.57%)
  • dom0_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 10166.00 :small_red_triangle: ( previous job: 11086.00, degradation: 91.70%)
  • dom0_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 4133.00 :green_circle: ( previous job: 1840.00, improvement: 224.62%)
  • dom0_varlibqubes_seq1m_q8t1_read 3:read_bandwidth_kb: 366378.00 :green_circle: ( previous job: 289182.00, improvement: 126.69%)
  • dom0_varlibqubes_seq1m_q8t1_write 3:write_bandwidth_kb: 273280.00 :green_circle: ( previous job: 122848.00, improvement: 222.45%)
  • dom0_varlibqubes_seq1m_q1t1_read 3:read_bandwidth_kb: 429568.00 :small_red_triangle: ( previous job: 433654.00, degradation: 99.06%)
  • dom0_varlibqubes_seq1m_q1t1_write 3:write_bandwidth_kb: 169031.00 :green_circle: ( previous job: 167872.00, improvement: 100.69%)
  • dom0_varlibqubes_rnd4k_q32t1_read 3:read_bandwidth_kb: 107073.00 :small_red_triangle: ( previous job: 108760.00, degradation: 98.45%)
  • dom0_varlibqubes_rnd4k_q1t1_read 3:read_bandwidth_kb: 7820.00 :green_circle: ( previous job: 6356.00, improvement: 123.03%)
  • fedora-42-xfce_root_seq1m_q8t1_read 3:read_bandwidth_kb: 379781.00
  • fedora-42-xfce_root_seq1m_q8t1_write 3:write_bandwidth_kb: 150072.00
  • fedora-42-xfce_root_seq1m_q1t1_read 3:read_bandwidth_kb: 294461.00
  • fedora-42-xfce_root_seq1m_q1t1_write 3:write_bandwidth_kb: 68993.00
  • fedora-42-xfce_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 94527.00
  • fedora-42-xfce_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 2547.00
  • fedora-42-xfce_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 8459.00
  • fedora-42-xfce_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 1203.00
  • fedora-42-xfce_private_seq1m_q8t1_read 3:read_bandwidth_kb: 386643.00
  • fedora-42-xfce_private_seq1m_q8t1_write 3:write_bandwidth_kb: 201645.00
  • fedora-42-xfce_private_seq1m_q1t1_read 3:read_bandwidth_kb: 337054.00
  • fedora-42-xfce_private_seq1m_q1t1_write 3:write_bandwidth_kb: 62379.00
  • fedora-42-xfce_private_rnd4k_q32t1_read 3:read_bandwidth_kb: 87789.00
  • fedora-42-xfce_private_rnd4k_q32t1_write 3:write_bandwidth_kb: 2779.00
  • fedora-42-xfce_private_rnd4k_q1t1_read 3:read_bandwidth_kb: 8825.00
  • fedora-42-xfce_private_rnd4k_q1t1_write 3:write_bandwidth_kb: 1368.00
  • fedora-42-xfce_volatile_seq1m_q8t1_read 3:read_bandwidth_kb: 337705.00
  • fedora-42-xfce_volatile_seq1m_q8t1_write 3:write_bandwidth_kb: 131381.00
  • fedora-42-xfce_volatile_seq1m_q1t1_read 3:read_bandwidth_kb: 343570.00
  • fedora-42-xfce_volatile_seq1m_q1t1_write 3:write_bandwidth_kb: 24063.00
  • fedora-42-xfce_volatile_rnd4k_q32t1_read 3:read_bandwidth_kb: 83874.00
  • fedora-42-xfce_volatile_rnd4k_q32t1_write 3:write_bandwidth_kb: 2870.00
  • fedora-42-xfce_volatile_rnd4k_q1t1_read 3:read_bandwidth_kb: 8234.00
  • fedora-42-xfce_volatile_rnd4k_q1t1_write 3:write_bandwidth_kb: 1231.00

@ben-grande
Copy link
Contributor Author

Inclusion of QubesOS/qubes-core-agent-linux#571 is obligatory for all tests now. There was no version bump since QubesOS/qubes-core-agent-linux@8a5e873, therefore templates didn't have a package to upgrade.

@ben-grande
Copy link
Contributor Author

# test_013_dvm_run_preload_gui
# failure: 

# timestamp 2025-06-19T21:55:08.880827
Traceback (most recent call last):
  File "/usr/lib64/python3.13/contextlib.py", line 85, in inner
    return func(*args, **kwds)
  File "/usr/lib/python3.13/site-packages/qubes/tests/integ/dispvm.py", line 428, in test_013_dvm_run_preload_gui
    self.loop.run_until_complete(self._test_013_dvm_run_preload_gui())
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.13/asyncio/base_events.py", line 719, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/site-packages/qubes/tests/integ/dispvm.py", line 436, in _test_013_dvm_run_preload_gui
    await self.run_preload()
  File "/usr/lib/python3.13/site-packages/qubes/tests/integ/dispvm.py", line 352, in run_preload
    self.assertTrue(
    ~~~~~~~~~~~~~~~^
        self._test_event_was_handled(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            dispvm_name, "domain-feature-set:preload-dispvm-completed"
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        )
        ^
    )
    ^
AssertionError: None is not true

This is fixed.

@marmarek
Copy link
Member

marmarek commented Jun 20, 2025

system_tests_dispvm

* TC_20_DispVM_debian-12-xfce: [test_013_dvm_run_preload_gui](https://openqa.qubes-os.org/tests/144048#step/TC_20_DispVM_debian-12-xfce/4) (failure)
  `^... AssertionError: None is not true`

* TC_20_DispVM_fedora-42-xfce: [test_013_dvm_run_preload_gui](https://openqa.qubes-os.org/tests/144048#step/TC_20_DispVM_fedora-42-xfce/4) (failure)
  `^... AssertionError: None is not true`

Still an issue, some race condition probably (doesn't always happen).

@ben-grande ben-grande force-pushed the late-preload branch 3 times, most recently from d127ac6 to 6a3a547 Compare June 21, 2025 04:25
@ben-grande
Copy link
Contributor Author

Latest commits didn't fix the problem, just adding some debugging, but currently fails on more tests. Unfinished.

@marmarek
Copy link
Member

I tried restarting this job and it failed the same way again.

@ben-grande ben-grande force-pushed the late-preload branch 4 times, most recently from 243d157 to 71fcb72 Compare June 24, 2025 12:41
@ben-grande
Copy link
Contributor Author

The other errors appears to be only because that test failed, although it should not have impacted other tests.

return
preload_dispvm = self.disp_base.get_feat_preload()
preload_unfinished = preload_dispvm
for _ in range(60):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not very nice place to add handlers... If you are unlucky, some events may get fired before you manage to add handlers (for example domain-feature-set:preload-dispvm-in-progress as it's fired quite early). Maybe you could instead add registering those handlers in domain-add event? Something like:

def _register_handlers(self, vm):
    # all the vm.add_handler(...) calls

def _on_domain_add(self, app, event, vm):
    if (some condition checking if preloaded? or maybe do unconditionally?):
        self._register_handlers(vm)

async def wait_preload(...):
    self.app.add_handler("domain-add", self._on_domain_add)
    # and then call _register_handlers for already existing dispvms

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unconditionally?

Better, domain is added then it is marked as preloaded. For VMs that are irrelevant, the event checker won't run.

@ben-grande ben-grande force-pushed the late-preload branch 3 times, most recently from 00a81f7 to 7b6202a Compare June 25, 2025 07:20
@ben-grande
Copy link
Contributor Author

ben-grande commented Jun 25, 2025

Fixed by:

self._test_event_handler_remove(appvm, "domain-preload-dispvm-start")

before using the preload.

Which is included in this run https://openqa.qubes-os.org/tests/144600


async def run_preload_proc(self):
logger.info("start")
# TODO: ben: to marek: DEVNULL may work because differently than None,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm okay with DEVNULL too

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

- Autostarted applications don't show when preloading; and
- Preloaded qubes paused before the session will have a working GUI when
  the session starts.

For: QubesOS/qubes-issues#1512
For: QubesOS/qubes-issues#9940
For: QubesOS/qubes-issues#9907
Requires: QubesOS/qubes-core-admin-client#359
@marmarek marmarek merged commit 0e0441f into QubesOS:main Jun 26, 2025
2 of 5 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.

3 participants