Package: electric-fence
Version: 2.1.18
Severity: serious
Tags: patch
Hi.
Please apply the patch bellow to handle both SIGBUS and SIGSEGV faults
simultaneously on FreeBSD based architectures.
You might consider to catch both SIGBUS and SIGSEGV on all architectures.
Petr
--- a/eftest.c
+++ b/eftest.c
@@ -12,11 +12,10 @@
*/
#ifndef PAGE_PROTECTION_VIOLATED_SIGNAL
-#ifdef __FreeBSD_kernel__
-#define PAGE_PROTECTION_VIOLATED_SIGNAL SIGBUS
-#else
-#define PAGE_PROTECTION_VIOLATED_SIGNAL SIGSEGV
+#if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
+#define EXTRA_PAGE_PROTECTION_VIOLATED_SIGNAL SIGBUS
#endif
+#define PAGE_PROTECTION_VIOLATED_SIGNAL SIGSEGV
#endif
struct diagnostic {
@@ -44,6 +43,9 @@
)
{
signal(PAGE_PROTECTION_VIOLATED_SIGNAL, SIG_DFL);
+#ifdef EXTRA_PAGE_PROTECTION_VIOLATED_SIGNAL
+ signal(EXTRA_PAGE_PROTECTION_VIOLATED_SIGNAL, SIG_DFL);
+#endif
siglongjmp(env, 1);
}
@@ -53,10 +55,16 @@
if ( sigsetjmp(env,1) == 0 ) {
int status;
- signal(PAGE_PROTECTION_VIOLATED_SIGNAL
- ,segmentationFaultHandler);
+ signal(PAGE_PROTECTION_VIOLATED_SIGNAL,
segmentationFaultHandler);
+#ifdef EXTRA_PAGE_PROTECTION_VIOLATED_SIGNAL
+ signal(EXTRA_PAGE_PROTECTION_VIOLATED_SIGNAL,
segmentationFaultHandler);
+#endif
+
status = (*test)();
signal(PAGE_PROTECTION_VIOLATED_SIGNAL, SIG_DFL);
+#ifdef EXTRA_PAGE_PROTECTION_VIOLATED_SIGNAL
+ signal(EXTRA_PAGE_PROTECTION_VIOLATED_SIGNAL, SIG_DFL);
+#endif
return status;
}
else
--
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org