Skip to content

Compile failure with glibc >= 2.34 due to SIGSTKSZ in Catch #197

@sheepforce

Description

@sheepforce

PCMsolver cannot build with recent glibc version. The issue seems to be, that in glibc >= 2.34 SIGSTKSZ is not constant anymore. This leads to type errors in the Catch code:

In file included from /build/source/tests/unit_tests.cpp:25:
/build/source/external/Catch/catch.hpp:6470:41: error: array bound is not an integer constant before ']' token
 6470 |         static char altStackMem[SIGSTKSZ];
      |                                         ^
/build/source/external/Catch/catch.hpp: In constructor 'Catch::FatalConditionHandler::FatalConditionHandler()':
/build/source/external/Catch/catch.hpp:6489:30: error: 'altStackMem' was not declared in this scope
 6489 |             sigStack.ss_sp = altStackMem;
      |                              ^~~~~~~~~~~
/build/source/external/Catch/catch.hpp: At global scope:
/build/source/external/Catch/catch.hpp:6521:53: error: array bound is not an integer constant before ']' token
 6521 |     char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};
      |                                                     ^

Expected Behavior

PCMSolver should compile with recent Glibc versions.

Current Behavior

Glibc >= 2.34 breaks PCMSolver

Possible Solution

Update the catch code to be compatible with recent Glibc? (I am no C++ dev myself)

Steps to Reproduce (for bugs)

nix build nixpkgs/f35d4e3c73eaecfa5d1eabdcfd14d8047b440a15#pcmsolver --print-build-logs
or build on probably any other linux with glibc >= 2.34

Context

I am maintaining pcmsolver in NixOS and nixpkgs. The glibc incompatibility of PCMSolver unfortunately also breaks Psi4 and Dalton in Nixpkgs/NixOS.

The glibc change apparently also bit other people, e.g.:

Your Environment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions