-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Catch2 fails to compile on Fedora Rawhide #2178
Comments
Humm, can't say I am happy that |
It's also broken catch 1 which uses SIGSTKSZE which is also now non-constant. |
I've pushed new builds of catch1 and catch for Fedora Rawhide now which hardwire the stack size as 32Kb until we have a better fix. |
This patch is about fixing a compilation error that we are seeing on Fedora Rawhide with glibc 2.33.9000, which makes MINSIGSTKSZ not be a constant value anymore. Thus, the sigStackSize variable that is declared constexpr cannot use that MINSIGSTKSZ as initializer anymore. So as suggested in the issue catchorg/Catch2#2178 filed against 'catchorg' for this purpose, I am hardwiring the initialization value of sigStackSize for now. * tests/lib/catch.hpp: Update to v2.13.4 and initialize sigStackSize to 32768 for now, as suggested by catchorg/Catch2#2178. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Skip tests to workaround a compilation error same as catchorg/Catch2#2178
Because new glibc has changed `MINSIGSTKSZ` to be a syscall instead of being constant, the signal posix handling needed changes, as it used the value in constexpr context, for deciding size of an array. It would be simple to fix it by having the handler determine the signal handling stack size and allocate the memory every time the handler is being installed, but that would add another allocation and a syscall every time a test case is entered. Instead, I split apart the idea of preparing fatal error handlers, and engaging them, so that the memory can be allocated only once and still be guarded by RAII. Also turns out that Catch2's use of `MINSIGSTKSZ` was wrong, and we should've been using `SIGSTKSZ` the whole time, which we use now. Closes #2178
Because new glibc has changed `MINSIGSTKSZ` to be a syscall instead of being constant, the signal posix handling needed changes, as it used the value in constexpr context, for deciding size of an array. It would be simple to fix it by having the handler determine the signal handling stack size and allocate the memory every time the handler is being installed, but that would add another allocation and a syscall every time a test case is entered. Instead, I split apart the idea of preparing fatal error handlers, and engaging them, so that the memory can be allocated only once and still be guarded by RAII. Also turns out that Catch2's use of `MINSIGSTKSZ` was wrong, and we should've been using `SIGSTKSZ` the whole time, which we use now. Closes #2178
Because new glibc has changed `MINSIGSTKSZ` to be a syscall instead of being constant, the signal posix handling needed changes, as it used the value in constexpr context, for deciding size of an array. It would be simple to fix it by having the handler determine the signal handling stack size and allocate the memory every time the handler is being installed, but that would add another allocation and a syscall every time a test case is entered. Instead, I split apart the idea of preparing fatal error handlers, and engaging them, so that the memory can be allocated only once and still be guarded by RAII. Also turns out that Catch2's use of `MINSIGSTKSZ` was wrong, and we should've been using `SIGSTKSZ` the whole time, which we use now. Closes #2178
Should be resolved in current commit on the v2.x branch. You will need to regenerate the single header to test it (use |
The fix works for me as well. Thanks! |
Closing as the fixed version has been released, and this won't autoclose since v2 is no longer main branch. |
Fixes compilation with new glibc on Fedora Rawhide. See: catchorg/Catch2#2178
Fixes compilation with new glibc on Fedora Rawhide. See: catchorg/Catch2#2178
Because new glibc has changed `MINSIGSTKSZ` to be a syscall instead of being constant, the signal posix handling needed changes, as it used the value in constexpr context, for deciding size of an array. It would be simple to fix it by having the handler determine the signal handling stack size and allocate the memory every time the handler is being installed, but that would add another allocation and a syscall every time a test case is entered. Instead, I split apart the idea of preparing fatal error handlers, and engaging them, so that the memory can be allocated only once and still be guarded by RAII. Also turns out that Catch2's use of `MINSIGSTKSZ` was wrong, and we should've been using `SIGSTKSZ` the whole time, which we use now. Closes #2178
Because new glibc has changed `MINSIGSTKSZ` to be a syscall instead of being constant, the signal posix handling needed changes, as it used the value in constexpr context, for deciding size of an array. It would be simple to fix it by having the handler determine the signal handling stack size and allocate the memory every time the handler is being installed, but that would add another allocation and a syscall every time a test case is entered. Instead, I split apart the idea of preparing fatal error handlers, and engaging them, so that the memory can be allocated only once and still be guarded by RAII. Also turns out that Catch2's use of `MINSIGSTKSZ` was wrong, and we should've been using `SIGSTKSZ` the whole time, which we use now. Closes #2178
see catchorg/Catch2#2178 Signed-off-by: Dennis Gilmore <dennis@ausil.us>
Based on this patch: woodard/libabigail@8ae8dcb Please refer to the catch issue #2178 for details catchorg/Catch2#2178 This might not work on all platforms Signed-off-by: Christian Ege <christian.ege@ifm.com>
Fixes catchorg/Catch2#2178 on Ubunto 22.04
The currently used version still suffers from the issue that apparently MINSIGSTKSZ is no longer a constant expression in newer glibc versions. Upstream bug report: catchorg/Catch2#2178
catch.hpp:10822:58: error: call to non-'constexpr' function 'long int sysconf(int)' followed by: catch.hpp:10881:45: error: size of array 'altStackMem' is not an integral constant-expression
catch.hpp:10822:58: error: call to non-'constexpr' function 'long int sysconf(int)' followed by: catch.hpp:10881:45: error: size of array 'altStackMem' is not an integral constant-expression
-TODO:Move dwarf versions testing to os-level/Dockerfile. This avoids having to rely on expiremental features of DWARF support for some gcc versions/DWARF version combinations. -Update Catch2 for Ubuntu22. catchorg/Catch2#2178
* -Write macro records correctly. Fixes #7 * -Cleanup * -Update unit testing for draco patterns. WIP. * -Update eclipse project * -Minimally functional target_symbol * -Do not store row id for symbol target updates * -Update github CI * -Docker config for CI * -Point submodules to github * -Cleanup * -Add symbols and encoding mappings. WIP. * -Add symbols and encoding mappings. WIP. * Writer DWARF5 ecodings to encodings table * -Add minimally functional encodings implementation. -TODO:Cleanup. * -Update Makefile * -Update gitignore * -Cleanup * -Remove Ubuntu18 from github actions since it is not available anymore. -https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-being-deprecated-and-will-be-removed-by-12-1-22/ * -Remove dead code * -Cleanup * -Cleanup * -Cleanup * -Include unit test code in format checks. -Format unit test code. * -Update unit tests * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Update docs * -Update unit tests for new schema. WIP. -TODO:Add function to follow target symbols to test typdef'd types. -TODO:Add unit tests for new macro and elf image features. * -Add followTargetSymbol. Useful for testing typedef'd types. -Update unit tests. * -Use CFE_ES_HousekeepingTlm_Payload for unit testing. * -Update docs * -Update docs * -Extract ELF image data from 64-bit targets properly. -Add ElfClass to ElfFile * -Update docs * -Update unit-test test files * -Remove libdwarf from unit test code test file * -Remove dead code * -Remove dead code * -Add 32-bit make recipes. -Add 32-bit unit tests. * -Update 32-bit unit testing. * -Update docs * -Remove dead code * -Update Logger unit tests -Remove dead code * -Update unit tests * -Update docs * -Cleanup * -Cleanup * -Cleanup * -Add macro unit test. -Update Dockerfile * -Create test files that comply with DWARF4 and DWARF5. Allows us to verify support of DWARF4 as more features are added in the future. * -Unit test DWARF4 and DWARF5. WIP. * -Add DWARF4 testing to Dockerfile * -Cleanup * -Update docs * -Update docs * -Update Catch 2 due to issue on Ubuntu22:catchorg/Catch2#2178 * -pathIndex handling for DWARF5. TODO:This changes for DWARF4, so add alternative for DWARF4. -Remove DisplayDie function for now as it blows up the stack with big c++ names inside DWARF. -TODO:Rewrite DisplayDie function -Add include to src/Artifact.h, needed for Ubuntu22. * -Handle DWARF dbg source files for DWARF4 and 5. -TODO:Figure out what to do about Ubuntu 20/22 behavior producing different DWARF src file line number info for the same DWARF version. * -Add group number as CLI argument. WIP. -Issues of interest:#36, #35 * -Group number argument. Useful for getting DWARF data from multiple COMBAT sections, like macros inside of unlinked ELF files. * -Add unit tests for macros across multiple COMDAT groups. * -Cleanup * -Update docs * -Update unit tests. * -Update Dockerfile for Ubuntu22 * -Update CI * -Update Dockerfiles for Ubuntu20 and Ubuntu22 * -Update Makefile * -Update CI * -Update CI * -Test DWARF version in unit tests * -Update docs * -Update docs * -Update docs * -Update docs. WIP. * -Update docs * -Cleanup * -Cleanup * -Update docs. -Remove DECL code from pointer types. Pointer types do not have DECL coords. * -Add unit tests for artifacts * -Cleanup * -Update test_file1 * -Remove dead code * -Update tests in Docker files * -Update docs * -Update docs * -Update docs * -Update unit tests * -Fix Field constructors * -Minimal testing for bitfields. WIP. * -Update Docker files -Update Makefile * -Add Ubuntu18 to CI. -Update docs * -Update docs * -Update docs * -Update docs * -Update docs * -Update clang_format_all * -Add format checks to Dockerfile.ubuntu20 * -Update clang_format_all * -Format code * -Cleanup * -Add error-checking for groupNumber * -Push coveralls report * -Update docs * -Update CI --------- Co-authored-by: Mathew Benson <mbenson@windhoverlabs.com>
* -Write macro records correctly. Fixes #7 * -Cleanup * -Update unit testing for draco patterns. WIP. * -Update eclipse project * -Minimally functional target_symbol * -Do not store row id for symbol target updates * -Update github CI * -Docker config for CI * -Point submodules to github * -Cleanup * -Add symbols and encoding mappings. WIP. * -Add symbols and encoding mappings. WIP. * Writer DWARF5 ecodings to encodings table * -Add minimally functional encodings implementation. -TODO:Cleanup. * -Update Makefile * -Update gitignore * -Cleanup * -Remove Ubuntu18 from github actions since it is not available anymore. -https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-being-deprecated-and-will-be-removed-by-12-1-22/ * -Remove dead code * -Cleanup * -Cleanup * -Cleanup * -Include unit test code in format checks. -Format unit test code. * -Update unit tests * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Configure coveralls.io for CI * -Update docs * -Update unit tests for new schema. WIP. -TODO:Add function to follow target symbols to test typdef'd types. -TODO:Add unit tests for new macro and elf image features. * -Add followTargetSymbol. Useful for testing typedef'd types. -Update unit tests. * -Use CFE_ES_HousekeepingTlm_Payload for unit testing. * -Update docs * -Update docs * -Extract ELF image data from 64-bit targets properly. -Add ElfClass to ElfFile * -Update docs * -Update unit-test test files * -Remove libdwarf from unit test code test file * -Remove dead code * -Remove dead code * -Add 32-bit make recipes. -Add 32-bit unit tests. * -Update 32-bit unit testing. * -Update docs * -Remove dead code * -Update Logger unit tests -Remove dead code * -Update unit tests * -Update docs * -Cleanup * -Cleanup * -Cleanup * -Add macro unit test. -Update Dockerfile * -Create test files that comply with DWARF4 and DWARF5. Allows us to verify support of DWARF4 as more features are added in the future. * -Unit test DWARF4 and DWARF5. WIP. * -Add DWARF4 testing to Dockerfile * -Cleanup * -Update docs * -Update docs * -Update Catch 2 due to issue on Ubuntu22:catchorg/Catch2#2178 * -pathIndex handling for DWARF5. TODO:This changes for DWARF4, so add alternative for DWARF4. -Remove DisplayDie function for now as it blows up the stack with big c++ names inside DWARF. -TODO:Rewrite DisplayDie function -Add include to src/Artifact.h, needed for Ubuntu22. * -Handle DWARF dbg source files for DWARF4 and 5. -TODO:Figure out what to do about Ubuntu 20/22 behavior producing different DWARF src file line number info for the same DWARF version. * -Add group number as CLI argument. WIP. -Issues of interest:#36, #35 * -Group number argument. Useful for getting DWARF data from multiple COMBAT sections, like macros inside of unlinked ELF files. * -Add unit tests for macros across multiple COMDAT groups. * -Cleanup * -Update docs * -Update unit tests. * -Update Dockerfile for Ubuntu22 * -Update CI * -Update Dockerfiles for Ubuntu20 and Ubuntu22 * -Update Makefile * -Update CI * -Update CI * -Test DWARF version in unit tests * -Update docs * -Update docs * -Update docs * -Update docs. WIP. * -Update docs * -Cleanup * -Cleanup * -Update docs. -Remove DECL code from pointer types. Pointer types do not have DECL coords. * -Add unit tests for artifacts * -Cleanup * -Update test_file1 * -Remove dead code * -Update tests in Docker files * -Update docs * -Update docs * -Update docs * -Update unit tests * -Add support for unions. WIP. * -Add support for unions. WIP. * -Update CI to build Ubuntu20 first. * -Update CI to build Ubuntu20 first. * -Format files * -Update union object used for unit tests * -Add user to docker dev configs * -Add support for unions. WIP. -Update unit tests for unions. WIP. * -Minimally functional union support. -TODO:Upgrade to C++17 and std::optional for union fields, which will be NULL (or empty). * -Remove dead code * -Upgrade to C++17. -Use optional for byte offset of fields. -When byte offset value is empty, write NULL to db. This allows to make a distinction between unions and structs. -TODO:Finish union unit testing. -TODO:Add union support documentation. * -Update docs * -Remove duplicate recipes from Makefile * -Handle default case in getdbgSourceFile * -Update unit testing for union support * -Update unit testing for union support * -Update docs * -Update docs * -Use std::optional for symbol encoding * -Add vscode config * -Add tests for padding. Fixes #21 * -Give root access to dev docker user * -Use std::optional for getdbgSourceFile * -Do not attempt to add padding for unions. -Add checks to padding function. * -Add warning message when field byte offsets do not exist * -Add warning message when field byte offsets do not exist * -Use git tag and latest commit as version value * -Log warning when there is no DW_AT_name attribute --------- Co-authored-by: Mathew Benson <mbenson@windhoverlabs.com>
Describe the bug
Tests that use Catch2 fail to compile on Fedora Rawhide.
Expected behavior
Tests that use Catch2 compile and execute without any problems on Fedora Rawhide.
Reproduction steps
Try to compile the factorial example from the Catch2 tutorial:
Platform information:
Additional context
This behaviour seems to be related to this change in
glibc
: https://sourceware.org/git/?p=glibc.git;a=commit;h=6c57d320484988e87e446e2e60ce42816bf51d53The text was updated successfully, but these errors were encountered: