[Top][All Lists]

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

Re: bison segv under Cygwin 64 at fatal-signal.c:318

From: Brian Inglis
Subject: Re: bison segv under Cygwin 64 at fatal-signal.c:318
Date: Sat, 18 Sep 2021 07:22:30 -0600
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0

On 2021-09-17 14:25, Bruno Haible wrote:
Brian Inglis wrote:
Can you also try to build it through

    gl_cv_have_weak=no ../configure -C && make && make check

in a different subdirectory?

Please send the config.log, config.cache, config.status, and
gltests/test-suite.log for each run.

Done and attached

Thanks! Indeed, gl_cv_have_weak=no appears to make the essential difference.
Therefore, I'm applying this fix.

2021-09-17  Bruno Haible  <bruno@clisp.org>

        threadlib: Avoid crashes in thread-related functions on Cygwin 3.2.0.
        Reported by Brian Inglis via Akim Demaille in
        * m4/threadlib.m4 (gl_WEAK_SYMBOLS): Force a "guessing no" result on

diff -w --git a/m4/threadlib.m4 b/m4/threadlib.m4
index 37b797c18..6b43bbdfa 100644
--- a/m4/threadlib.m4
+++ b/m4/threadlib.m4
@@ -1,4 +1,4 @@
-# threadlib.m4 serial 31
+# threadlib.m4 serial 32
  dnl Copyright (C) 2005-2021 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
@@ -84,7 +84,15 @@ AC_DEFUN([gl_WEAK_SYMBOLS],
    AC_CACHE_CHECK([whether imported symbols can be declared weak],
-    [gl_cv_have_weak=no
+    [case "$host_os" in
+       cygwin*)
+         dnl On Cygwin 3.2.0 with gcc 10.2, the test below would succeed, but
+         dnl programs that use pthread_in_use() with weak symbol references
+         dnl crash miserably at runtime.
+         gl_cv_have_weak="guessing no"
+         ;;
+       *)
+         gl_cv_have_weak=no
           dnl First, test whether the compiler accepts it syntactically.
@@ -116,6 +124,8 @@ int main ()
                  [gl_cv_have_weak="guessing no"])
+         ;;
+     esac
       dnl But when linking statically, weak symbols don't work.
       case " $LDFLAGS " in
         *" -static "*) gl_cv_have_weak=no ;;

Patch would not apply as included gnulib and bison threadlib.m4 appear to be from July and August.
Respun and applied patch successfully to glm4/threadlib.m4.
Still did not change gnulib or bison builds to configure weak=no or check successfully.
Were there additional conditions required to ensure that was used?

Had to configure with explicit gl_cv_have_weak=no arg to successfully configure and run tests.

Please see attached tars for logs and config.*.

Patch also made no difference to bison build, but adding to CYGCONF_ARGS explicit gl_cv_have_weak=no allowed all tests to run:

* D, Java, 129: Output file name: `~!..., 150: Tabulations and multibyte characters, 283-287: syncline escapes, 647: LAC: Exploratory stack, were skipped;

* all but two others 672-673: Doxygen Public-Private Documentation were successful.

Please see attached bison...check.log.gz.

So the diagnosis and cure were correct and worked, but the patch did not seem to make any difference?

Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]

Attachment: bison-3.8.1-0-check.log.gz
Description: GNU Zip compressed data

Attachment: gnulib-testdir-build.tar.xz
Description: Binary data

Attachment: gnulib-testdir-weak-no.tar.xz
Description: Binary data

reply via email to

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