Catch2 icon indicating copy to clipboard operation
Catch2 copied to clipboard

XML Reporter doesn't output stderr / stdin when there is a segfault

Open Butanium opened this issue 1 year ago • 3 comments

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

Butanium avatar Feb 20 '24 13:02 Butanium

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.

horenmar avatar Feb 27 '24 16:02 horenmar

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="&quot;test&quot;">
  <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)

Butanium avatar Feb 29 '24 07:02 Butanium

I tested on the devel branch and I have the same issue.

Butanium avatar Feb 29 '24 08:02 Butanium