https://bugs.kde.org/show_bug.cgi?id=468575

--- Comment #60 from Mark Wielaard <m...@klomp.org> ---
(In reply to Mark Wielaard from comment #55) 
> nestedfns fails with:
> 
> +Process terminating with default action of signal 11 (SIGSEGV)
> + Bad permissions for mapped region at address 0x........
> +   at 0x........: ???
> +   by 0x........: call_func (nestedfns.c:14)
> +   by 0x........: test1 (nestedfns.c:23)
> +   by 0x........: main (nestedfns.c:37)
> +
> 
> Not sure this simply means (noexecstack) nested functions simply don't work
> on riscv?

This isn't riscv specific. It also fails on other arches.
Seems to be caused by:

commit c5552fe28b8d89ed5a92cc736fa00d7e336a3f2c
Author: Paul Floyd <pjfl...@wanadoo.fr>
Date:   Fri Dec 6 21:24:50 2024 +0100

    regtest: fix a warning building none/tests/nestedfns on some platforms

diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am
index 53a6e1f6bc95..fa0128d3a8e4 100644
--- a/none/tests/Makefile.am
+++ b/none/tests/Makefile.am
@@ -335,6 +335,7 @@ endif

 if HAVE_NESTED_FUNCTIONS
    check_PROGRAMS += nestedfns
+   nestedfns_LDFLAGS = -Wl,-z,noexecstack
 endif

 # This doesn't appear to be compilable on Darwin.

So this sets noexecstack for the nestedfns exec.
But as the comment at the top of nestedfns says:

/* This is a test program from Lee Kindness which used to fail on V
   because gcc implements the nested function mumbo jumbo using self
   modifying code on the stack, at least on x86 and amd64.  It now
   works transparently because by default V now generates
   self-checking translations for translations taken from stack-like
   segments.
*/

And indeed even on amd64-linux this program now crashes even when not run under
valgrind:

Program received signal SIGSEGV, Segmentation fault.
0x00007fffffffd9d0 in ?? ()
(gdb) where
#0  0x00007fffffffd9d0 in ?? ()
#1  0x0000000000401138 in call_func (sel=0x7fffffffd9d0) at nestedfns.c:14
#2  0x0000000000401196 in test1 () at nestedfns.c:23
#3  0x000000000040120b in main (argc=1, argv=0x7fffffffdb48) at nestedfns.c:37

And that is indeed the sel function stub on the stack...

Paul, what was the warning? And can we just accept that warning?
Reverting this seems to make the test work again as expected.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to