Than you for the bug report and the patch, Alexandre.

I am uploading the new release shortly.

Best regards,                   Georges.

Alexandre Ghiti a écrit :
> Package: aseba
> Version: 1.6.99+dfsg
> Severity: normal
> Tags: patch
> User: ubuntu-de...@lists.ubuntu.com
> Usertags: origin-ubuntu kinetic ubuntu-patch
> 
> Dear Maintainer,
> 
> SIGSTKSZ is not constant anymore so altStackMem must be allocated
> dynamically: this patch implements what is done upstream.
> 
> In Ubuntu, the attached patch was applied to fix the FTBFS as can be
> seen in [1].
> 
> Not related but I updated the homepage link to directly point to aseba,
> it took me a few minutes to find it from the original link.
> 
> Thanks for considering the patch.
> 
> [1] 
> https://launchpad.net/~alexghiti/+archive/ubuntu/riscv/+sourcepub/13492679/+listing-archive-extra
> 
> -- System Information:
> Debian Release: bookworm/sid
>   APT prefers jammy-updates
>   APT policy: (500, 'jammy-updates'), (500, 'jammy-security'), (500, 'jammy')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
> 
> Kernel: Linux 5.15.0-27-generic (SMP w/16 CPU threads)
> Kernel taint flags: TAINT_WARN
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: 
> LC_ALL set to en_US.UTF-8), LANGUAGE not set
> Shell: /bin/sh linked to /usr/bin/dash
> Init: systemd (via /run/systemd/system)
> LSM: AppArmor: enabled

> diff -Nru aseba-1.6.99+dfsg/debian/control aseba-1.6.99+dfsg/debian/control
> --- aseba-1.6.99+dfsg/debian/control  2020-09-17 18:17:11.000000000 +0200
> +++ aseba-1.6.99+dfsg/debian/control  2022-05-03 16:24:08.000000000 +0200
> @@ -15,7 +15,7 @@
>  Standards-Version: 4.5.0
>  Vcs-Browser: https://salsa.debian.org/science-team/aseba.git
>  Vcs-Git: https://salsa.debian.org/science-team/aseba.git
> -Homepage: https://www.thymio.org/
> +Homepage: https://github.com/aseba-community/aseba
>  
>  Package: aseba
>  Architecture: any
> diff -Nru 
> aseba-1.6.99+dfsg/debian/patches/0001-third_party-catch2-Fix-non-constant-SIGSTKSZ.patch
>  
> aseba-1.6.99+dfsg/debian/patches/0001-third_party-catch2-Fix-non-constant-SIGSTKSZ.patch
> --- 
> aseba-1.6.99+dfsg/debian/patches/0001-third_party-catch2-Fix-non-constant-SIGSTKSZ.patch
>   1970-01-01 01:00:00.000000000 +0100
> +++ 
> aseba-1.6.99+dfsg/debian/patches/0001-third_party-catch2-Fix-non-constant-SIGSTKSZ.patch
>   2022-05-03 16:21:52.000000000 +0200
> @@ -0,0 +1,81 @@
> +From 830dbd151a5743629f3c6fb2827bb65bb6bca70d Mon Sep 17 00:00:00 2001
> +From: Alexandre Ghiti <alexandre.gh...@canonical.com>
> +Date: Tue, 3 May 2022 15:15:12 +0200
> +Subject: [PATCH] third_party: catch2: Fix non-constant SIGSTKSZ
> +
> +SIGSTKSZ is not constant anymore so altStackMem must be allocated
> +dynamically: this patch implements what is done upstream.
> +
> +Signed-off-by: Alexandre Ghiti <alexandre.gh...@canonical.com>
> +---
> + third_party/catch2/include/catch2/catch.hpp | 23 ++++++++++++++++++---
> + 1 file changed, 20 insertions(+), 3 deletions(-)
> +
> +diff --git a/third_party/catch2/include/catch2/catch.hpp 
> b/third_party/catch2/include/catch2/catch.hpp
> +index 081cb41..2de9330 100644
> +--- a/third_party/catch2/include/catch2/catch.hpp
> ++++ b/third_party/catch2/include/catch2/catch.hpp
> +@@ -4731,7 +4731,8 @@ namespace Catch {
> +         static bool isSet;
> +         static struct sigaction oldSigActions[];
> +         static stack_t oldSigStack;
> +-        static char altStackMem[];
> ++        static char* altStackMem;
> ++        static std::size_t altStackSize;
> + 
> +         static void handleSignal( int sig );
> + 
> +@@ -7226,6 +7227,11 @@ namespace {
> +     void reportFatal( char const * const message ) {
> +         
> Catch::getCurrentContext().getResultCapture()->handleFatalErrorCondition( 
> message );
> +     }
> ++
> ++    //! Minimal size Catch2 needs for its own fatal error handling.
> ++    //! Picked empirically, so it might not be sufficient on all
> ++    //! platforms, and for all configurations.
> ++    constexpr std::size_t minStackSizeForErrors = 32 * 1024;
> + }
> + 
> + #endif // signals/SEH handling
> +@@ -7318,10 +7324,16 @@ namespace Catch {
> +     }
> + 
> +     FatalConditionHandler::FatalConditionHandler() {
> ++        assert(!altStackMem && "Cannot initialize POSIX signal handler when 
> one already exists");
> ++        if (altStackSize == 0) {
> ++            altStackSize = std::max(static_cast<size_t>(SIGSTKSZ), 
> minStackSizeForErrors);
> ++        }
> ++        altStackMem = new char[altStackSize]();
> ++
> +         isSet = true;
> +         stack_t sigStack;
> +         sigStack.ss_sp = altStackMem;
> +-        sigStack.ss_size = SIGSTKSZ;
> ++        sigStack.ss_size = altStackSize;
> +         sigStack.ss_flags = 0;
> +         sigaltstack(&sigStack, &oldSigStack);
> +         struct sigaction sa = { };
> +@@ -7334,6 +7346,10 @@ namespace Catch {
> +     }
> + 
> +     FatalConditionHandler::~FatalConditionHandler() {
> ++        delete[] altStackMem;
> ++        // We signal that another instance can be constructed by zeroing
> ++        // out the pointer.
> ++        altStackMem = nullptr;
> +         reset();
> +     }
> + 
> +@@ -7352,7 +7368,8 @@ namespace Catch {
> +     bool FatalConditionHandler::isSet = false;
> +     struct sigaction 
> FatalConditionHandler::oldSigActions[sizeof(signalDefs)/sizeof(SignalDefs)] = 
> {};
> +     stack_t FatalConditionHandler::oldSigStack = {};
> +-    char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};
> ++    char* FatalConditionHandler::altStackMem = nullptr;
> ++    std::size_t FatalConditionHandler::altStackSize = 0;
> + 
> + } // namespace Catch
> + 
> +-- 
> +2.34.1
> +
> diff -Nru aseba-1.6.99+dfsg/debian/patches/series 
> aseba-1.6.99+dfsg/debian/patches/series
> --- aseba-1.6.99+dfsg/debian/patches/series   1970-01-01 01:00:00.000000000 
> +0100
> +++ aseba-1.6.99+dfsg/debian/patches/series   2022-05-03 16:22:39.000000000 
> +0200
> @@ -0,0 +1 @@
> +0001-third_party-catch2-Fix-non-constant-SIGSTKSZ.patch


-- 
Georges KHAZNADAR et Jocelyne FOURNIER
22 rue des mouettes, 59240 Dunkerque France.
Téléphone +33 (0)3 28 29 17 70

Attachment: signature.asc
Description: PGP signature

Reply via email to