[Top][All Lists]

[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.


[1] https://docs.oracle.com/cd/E26502_01/html/E29034/stack-violation-3c.html

reply via email to

[Prev in Thread] Current Thread [Next in Thread]