Closed DemiMarie closed 2 years ago
PipelineRetry
Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.1&build=2022022706-4.1&flavor=pull-requests
Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.1&build=2022021706-4.1&flavor=update
system_tests_basic_vm_qrexec_gui_ext4
self.assertEqual(clipboard_content, ... AssertionError: '' != 'test23'
system_tests_network_updates
TC_10_QvmTemplate_whonix-gw-16: test_000_template_list (failure)
AssertionError: libvirt event impl drain timeout
TC_11_QvmTemplateMgmtVM_fedora-34: test_010_template_install (failure)
AssertionError: libvirt event impl drain timeout
Compared to: https://openqa.qubes-os.org/tests/35157#dependencies
R4.0 build fails with No matching package to install: 'cargo >= 1.21'
R4.0 build fails with
No matching package to install: 'cargo >= 1.21'
Fixed
It turns out that RPM’s keyring and transaction functions are not thread-safe. This showed up as crashes in RPM’s atexit() handler when running the test suite, which were very difficult to debug. Fix the problem by wrapping all of these calls in a global lock. Performance should not be noticibly impacted, as the hot-path is the symmetric cryptography and that can still happen in parallel. rpmcanon is single-threaded and so is not affected.
Tested by running the test suite several times on a multi-core system. Without this patch a substantial fraction of runs will crash with SIGSEGV or SIGABRT. I cannot reproduce the crash with this patch applied.