[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug-libsigsegv] Re: sigsegv on s390 only giving start address of page i
From: |
Christoph Egger |
Subject: |
[bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler |
Date: |
Fri, 11 Mar 2011 17:46:21 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Bruno Haible <address@hidden> writes:
> When you wrote to <address@hidden> you didn't remove
> the "antispam" words from the address.
Jep normally I copy&paste from the website and don't loko at the result
but expect it to just work
>> Now I'm wondering of software depending on libsigsegv won't work on s390
>> or maybe the correct page is still enough information for dependencies
>> like clisp to work -- in that case a "fix" would be rather easy.
>
> clisp (and probably other software too) will compile and work also when
> the installed <sigsegv.h> file does not define HAVE_SIGSEGV_RECOVERY or
> HAVE_STACK_OVERFLOW_RECOVERY. But the functionality will be a bit degraded.
> For clisp, it means that generational GC will not be compiled into clisp
> if HAVE_SIGSEGV_RECOVERY is not defined, and endless recursions may cause
> a crash if HAVE_STACK_OVERFLOW_RECOVERY is not defined.
OK that'll "work" untill we (maybe) get a better kernel. I guess it's
preferred to just accepting a inexact address? Considering how to best
build a fixed package. The 2 patches I'd consider attached. I'd prefer
the first one at the moment.
Regards
Christoph
--- libsigsegv-2.9.orig/configure.ac
+++ libsigsegv-2.9/configure.ac
@@ -869,6 +872,9 @@ AC_CACHE_CHECK([if the system supports catching stack
overflow],
;;
esac
fi
+ case "$host_cpu" in
+ *s390*) sv_cv_have_stack_overflow_recovery=no ;;
+ esac
if test $sv_cv_have_stack_overflow_recovery = maybe; then
if test -n "$CFG_FAULT"; then
AC_EGREP_CPP([xyzzy], [
--- a/m4/fault.m4
+++ b/m4/fault.m4
@@ -51,7 +51,7 @@ void sigsegv_handler ($5)
handler_called++;
if (handler_called == 10)
exit (4);
- if (fault_address != (void*)(page + 0x678))
+ if (fault_address != (void*)(page + 0x678) && fault_address != (void*)(page))
exit (3);
if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
exit (2);
diff --git a/tests/sigsegv1.c b/tests/sigsegv1.c
index ce00642..4bbe4da 100644
--- a/tests/sigsegv1.c
+++ b/tests/sigsegv1.c
@@ -37,7 +37,7 @@ handler (void *fault_address, int serious)
handler_called++;
if (handler_called > 10)
abort ();
- if (fault_address != (void *)(page + 0x678))
+ if (fault_address != (void *)(page + 0x678) && fault_address != page)
abort ();
if (mprotect ((void *) page, 0x4000, PROT_READ_WRITE) == 0)
return 1;
diff --git a/tests/sigsegv3.c b/tests/sigsegv3.c
index 1ea0ec4..da03f64 100644
--- a/tests/sigsegv3.c
+++ b/tests/sigsegv3.c
@@ -56,7 +56,7 @@ handler (void *fault_address, int serious)
handler_called++;
if (handler_called > 10)
abort ();
- if (fault_address != (void *)(page + 0x678 + 8 * pass))
+ if (fault_address != (void *)(page + 0x678 + 8 * pass) && fault_address !=
page)
abort ();
pass++;
printf ("Stack overflow %d caught.\n", pass);
--
9FED 5C6C E206 B70A 5857 70CA 9655 22B9 D49A E731
Debian Developer | Lisp Hacker | CaCert Assurer
A. Because it breaks the logical sequence of discussion
Q. Why is top posting bad?
- [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, (continued)
- [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Heiko Carstens, 2011/03/14
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Bruno Haible, 2011/03/14
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Heiko Carstens, 2011/03/14
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Christian Borntraeger, 2011/03/14
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Bruno Haible, 2011/03/14
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Martin Schwidefsky, 2011/03/15
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Bruno Haible, 2011/03/15
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Christian Borntraeger, 2011/03/15
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Eric Blake, 2011/03/15
- Re: [bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler, Bruno Haible, 2011/03/15
[bug-libsigsegv] Re: sigsegv on s390 only giving start address of page in segv handler,
Christoph Egger <=