Re: bison segv under Cygwin 64 at fatal-signal.c:318
Brian Inglis <[email protected]> Sat, 18 Sep 2021 07:22:30 -0600
| Newsgroups | gmane.comp.lib.gnulib.bugs,gmane.comp.parsers.bison.bugs |
|---|---|
| Organization | Systematic Software |
| Message-ID | <[email protected]> |
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 <[email protected]> > > threadlib: Avoid crashes in thread-related functions on Cygwin 3.2.0. > Reported by Brian Inglis via Akim Demaille in > <https://lists.gnu.org/archive/html/bug-gnulib/2021-09/msg00063.html>. > * m4/threadlib.m4 (gl_WEAK_SYMBOLS): Force a "guessing no" result on > Cygwin. > > 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_REQUIRE([AC_CANONICAL_HOST]) > AC_CACHE_CHECK([whether imported symbols can be declared weak], > [gl_cv_have_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. > AC_LINK_IFELSE( > [AC_LANG_PROGRAM( > @@ -116,6 +124,8 @@ int main () > [gl_cv_have_weak="guessing no"]) > ]) > fi > + ;; > + 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.]
bison-3.8.1-0-check.log.gz
(application/x-gzip, 12.7 KB) - not displayed
gnulib-testdir-build.tar.xz
(application/octet-stream, 36 KB) - not displayed
gnulib-testdir-weak-no.tar.xz
(application/octet-stream, 35.7 KB) - not displayed