Details
-
Bug
-
Resolution: Duplicate
-
P1: Critical
-
None
-
6.5
-
None
Description
In repeated failures to integrate a trivial change to qt3d, I've twice seen crashes at the end of tst_qresourcemanager; once as a segfault, the other as an assertion failure:
PASS : tst_QResourceManager::cleanupTestCase() ASSERT: "element" in file /home/qt/work/qt/qtbase/src/testlib/qtestjunitstreamer.cpp, line 113 Received signal 6 (SIGABRT) [Non-test] function time: 8ms, total time: 58548ms
(That last line's [Non-test] means that, by the time the assert triggered, the last of our test functions had returned. The message is produced by QTest's signal handler before attempting to generate a backtrace; which, sadly, does not work under QEMU.)
The assertion is in the JUnit XML test streamer, QTestJUnitStreamer::output() verifying it has been passed a non-NULL element; which would explain the segfault if the other failure was built with assertions disabled, so simply went on to dereference that.
That seems like it must have been called by QJUnitTestLogger::stopLogging(); which would be called (only) by QTest::qCleanup(), which is called either by QTest::qExec() just before returning or by QTest::qRun() on catching an exception, before re-throwing (which its caller, qExec() doesn't catch, so it'll bypass its qCleanup() call).
Attachments
Issue Links
- duplicates
-
QTBUG-107693 tst_QResourceManager received signal 11 (SIGSEGV) with Ubuntu 22.04 QEMU
-
- Closed
-