[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
stackovf.test fails on Solaris 11/sparc64
From: |
Bruno Haible |
Subject: |
stackovf.test fails on Solaris 11/sparc64 |
Date: |
Sat, 15 May 2021 00:07:31 +0200 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-206-generic; KDE/5.18.0; x86_64; ; ) |
The newest m4 snapshots don't pass all their tests on Solaris 11.3/sparc64:
stackovf.test fails.
This happens also when GNU libsigsegv is installed and --with-libsigsegv-prefix
is given, because the c-stack.m4 autoconf test now insists in ignoring
GNU libsigsegv when it thinks that the Solaris heuristic will work.
But the Solaris heuristic does not work reliably: It works in the configure
test and in the test-c-stack* unit test. But it does not work in m4.
I've added a couple of printfs and get this output:
Checking ../../checks/stackovf.test
Stack soft limit set to 300K
Failure - m4 aborted unexpectedly
Output from m4:
cannot_be_stack_overflow1 = 0
cannot_be_stack_overflow2 = 0
pc=0x10001de44, sp+2047=0xffffffff7ffb5ee0, faulting_address=0x100204000,
stack_base=0xffffffff7ffb5000, stack_size=0x4b000
segv_handler code=1 fault=100204000 base=ffffffff7ffb5000 size=0x4b000
page=0x2000 signo=11
m4: internal error detected; please report this bug to <bug-m4@gnu.org>:
Segmentation fault
It's easy to reproduce: In a build tree, just run
$ echo 'define(a,a(a))a' | src/m
Clearly, the faulting_address variable's value is bogus.
There is an alternative heuristic implemented in the Solaris 11
function 'stack_violation' [1]. But this function does not help: m4
still crashes.
I won't spend any more time on fixing this Solaris-only code — when we
have code that works on all platforms in GNU libsigsegv.
Bruno
[1] https://docs.oracle.com/cd/E26502_01/html/E29034/stack-violation-3c.html
- stackovf.test fails on Solaris 11/sparc64,
Bruno Haible <=