bug-m4
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bus error


From: Eric Blake
Subject: Re: Bus error
Date: Sat, 06 Dec 2008 10:58:01 -0700
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081105 Thunderbird/2.0.0.18 Mnenhy/0.7.5.666

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[dropping bug-gnulib, adding m4-patches]

According to Bruno Haible on 12/6/2008 8:45 AM:
> Eric Blake wrote:
>> maybe swapping the order will help, where I install the
>> SIGBUS handler first, and then c_stack_action can optionally install an
>> alternate handler on platforms where it is needed for stack overflow?
> 
> Yes, I was going to propose this too.

I'm installing this on the stackovf branch (which I still need to merge
into both branch-1.6 and master).  I'm also debating whether to release m4
1.4.13 (it depends on how long it takes me to get m4 1.6 in nice shape);
but if I do end up releasing 1.4.13, this patch is on the list for
inclusion on branch-1.4.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkk6vSkACgkQ84KuGfSFAYBDcgCeOXmBpVawBbrW71yG1xTUrSAd
TTEAoM7ReoUIjGejRZBqMuuPWN8yNhar
=ATor
-----END PGP SIGNATURE-----
>From f66f95f60436fe3c8e805268338fbfb1087a385d Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Sat, 6 Dec 2008 10:53:22 -0700
Subject: [PATCH] Don't override signal handlers installed by c-stack.

* src/m4.c (main): Reorder installation of signal handlers, so we
don't trash a SIGBUS handler installed by c-stack.  Also provide a
SIGSEGV fallback, for platforms where c-stack combined with
libsigsegv uses something lower level than SIGSEGV.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog |    8 ++++++++
 src/m4.c  |   10 +++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f13b710..0dab381 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2008-12-06  Eric Blake  <address@hidden>
 
+       Don't override signal handlers installed by c-stack.
+       * src/m4.c (main): Reorder installation of signal handlers, so we
+       don't trash a SIGBUS handler installed by c-stack.  Also provide a
+       SIGSEGV fallback, for platforms where c-stack combined with
+       libsigsegv uses something lower level than SIGSEGV.
+
+2008-12-06  Eric Blake  <address@hidden>
+
        Upgrade to FDL 1.3, keep COPYING in repository.
        * Makefile.am (MAINTAINERCLEANFILES): Don't remove COPYING.
        * .cvsignore: Don't ignore it.
diff --git a/src/m4.c b/src/m4.c
index a24f82d..6031797 100644
--- a/src/m4.c
+++ b/src/m4.c
@@ -466,9 +466,10 @@ main (int argc, char *const *argv, char *const *envp)
 
   /* Stack overflow and program error handling.  Ignore failure to
      install a handler, since this is merely for improved output on
-     crash, and we should never crash ;).  */
-  if (c_stack_action (fault_handler) == 0)
-    nesting_limit = 0;
+     crash, and we should never crash ;).  We install SIGBUS and
+     SIGSEGV handlers prior to using the c-stack module; depending on
+     the platform, c-stack will then override none, SIGSEGV, or both
+     handlers.  */
   program_error_message
     = xasprintf (_("internal error detected; please report this bug to <%s>"),
                  PACKAGE_BUGREPORT);
@@ -483,10 +484,13 @@ main (int argc, char *const *argv, char *const *envp)
      to default signal behavior.  */
   act.sa_flags = SA_NODEFER | SA_RESETHAND;
   act.sa_handler = fault_handler;
+  sigaction (SIGSEGV, &act, NULL);
   sigaction (SIGABRT, &act, NULL);
   sigaction (SIGILL, &act, NULL);
   sigaction (SIGFPE, &act, NULL);
   sigaction (SIGBUS, &act, NULL);
+  if (c_stack_action (fault_handler) == 0)
+    nesting_limit = 0;
 
 #ifdef DEBUG_STKOVF
   /* Make it easier to test our fault handlers.  Exporting M4_CRASH=0
-- 
1.6.0.4


reply via email to

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