This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Trap SIGBUS when Configure checks for va_copy (#18148)
authorH.Merijn Brand <perl5@tux.freedom.nl>
Tue, 22 Sep 2020 11:17:11 +0000 (13:17 +0200)
committerH.Merijn Brand <perl5@tux.freedom.nl>
Tue, 22 Sep 2020 11:17:11 +0000 (13:17 +0200)
On several systems the attempt to determine if we &quot;need va_copy() or
similar&quot; results in a SIGBUS instead of a SIGSEGV because the fault
happens pointing at an io device address.

While reviewing accounting logs during the OpenBSD system build, bluhm@
noticed a core dump and deraadt@ tracked it down.

While researching it was discovered that this is a fairly common case in
other systems as well.

Original diff by deraadt@

Configure

index a01c409..e064b3f 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -21511,6 +21511,9 @@ int
 main(int ac, char **av)
 {
   signal(SIGSEGV, exit);
+#ifdef SIGBUS
+  signal(SIGBUS,  exit);
+#endif
 
   myprintf("%s%cs all right, then\n", "that", '\'');
   exit(0);