Catch2
Catch2 copied to clipboard
XML Reporter doesn't output stderr / stdin when there is a segfault
Describe the bug No output when segfault during test
Expected behavior Output
Reproduction steps
TEST_CASE("test") {
std::cout << "Cout!" << std::endl;
std::cerr << "Cerr!" << std::endl;
// Generate a segfault
int *a = nullptr;
*a = 1;
}
Platform information:
- OS: Linux
- Compiler+version: GCC v13.2
- Catch version: v3.4.0
Additional context Similar to #1514
Are you running the binary standalone, or inside some IDE? By default Catch2 is not touching the streams, so they might show.
Note the might here, because the compiler is fully within its rights to just delete everything in the test case due to the code invoking UB.
I'm using Clion. They use the -r xml option which causes the Error:
➜ cmake-build-debug/tests -r xml -d yes --order lex test
<?xml version="1.0" encoding="UTF-8"?>
<Catch2TestRun name="tests" rng-seed="540031174" xml-format-version="3" catch2-version="3.4.0" filters=""test"">
<TestCase name="test" filename="/home/clementd/Documents/ENS/INF560/yaalpp/tests/test.cpp" line="228">
<FatalErrorCondition filename="/home/clementd/Documents/ENS/INF560/yaalpp/tests/test.cpp" line="228">
SIGSEGV - Segmentation violation signal
</FatalErrorCondition>
<OverallResult success="false" skips="0" durationInSeconds="7.4e-05"/>
</TestCase>
<OverallResults successes="0" failures="1" expectedFailures="0" skips="0"/>
<OverallResultsCases successes="0" failures="1" expectedFailures="0" skips="0"/>
</Catch2TestRun>Erreur de segmentation (core dumped)
Without -r xml:
cmake-build-debug/tests -d yes --order lex test
Filters: "test"
Randomness seeded to: 1029050377
Cout!
Cerr!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tests is a Catch2 v3.4.0 host application.
Run with -? for options
-------------------------------------------------------------------------------
test
-------------------------------------------------------------------------------
/home/clementd/Documents/ENS/INF560/yaalpp/tests/test.cpp:228
...............................................................................
/home/clementd/Documents/ENS/INF560/yaalpp/tests/test.cpp:228: FAILED:
due to a fatal error condition:
SIGSEGV - Segmentation violation signal
0.000 s: test
===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed
Erreur de segmentation (core dumped)
I tested on the devel branch and I have the same issue.