Package: guile;
Reported by: "Jim Pryor" <dubiousjim <at> gmail.com>
Date: Tue, 6 Dec 2011 17:27:02 UTC
Severity: normal
Tags: moreinfo
Done: Andy Wingo <wingo <at> pobox.com>
Bug is archived. No further changes may be made.
Message #11 received at 10235 <at> debbugs.gnu.org (full text, mbox):
From: Andy Wingo <wingo <at> pobox.com> To: "Jim Pryor" <dubiousjim <at> gmail.com> Cc: 10235 <at> debbugs.gnu.org Subject: Re: bug#10235: guile 2.0.3 segfaults on FreeBSD 9 Date: Thu, 22 Dec 2011 16:41:16 -0500
Hi Jim Thanks for the reply. Let's keep the bug in the Cc. (Sending again with the bug on the Cc this time.) There is no rush on this; I'm happy to work asynchronously. The git repo is indeed at http://git.savannah.gnu.org/cgit/guile.git; use the stable-2.0 branch, though. Cheers, Andy On Thu 22 Dec 2011 10:55, "Jim Pryor" <dubiousjim <at> gmail.com> writes: > Hi Andy, thanks for the email. I will get back to you about this as soon > as I have some time to look into it again---which I fear won't be > immediately. > > Some quick replies below. > > > On Thu, Dec 22, 2011, at 10:35 AM, Andy Wingo wrote: >> Hi Jim, >> >> There are some packaging-specific things in your mail, one bug, and a >> few FreeBSD-related things that we should probably fold into Guile. >> I'll try to reply only to those things that we need to do in Guile. >> >> On Tue 06 Dec 2011 10:53, "Jim Pryor" <dubiousjim <at> gmail.com> writes: >> >> > REINPLACE_FILES= libguile/smob.c libguile/gc.c \ >> > libguile/mallocs.c libguile/gc-malloc.c >> > >> > post-patch: >> > @cd ${WRKSRC} ; sed -e 's|<malloc\.h>|<stdlib.h>|g' >> >> I have fixed these files to use stdlib.h instead of malloc.h. >> >> > GEN guile-procedures.texi >> > Segmentation fault (core dumped) >> >> That's a problem :) >> >> > And indeed if you just go to the libguile directory and execute the >> > build `guile` file manually, you get a segfault. Here is the backtrace: >> > >> > #0 0x000000080091f8a5 in scm_c_vm_run () from >> > /usr/obj/usr/ports/lang/guile/work/guile-2.0.3/libguile/.libs/libguile-2.0.so.25 >> > [New Thread 802807400 (LWP 104574/guile)] >> > (gdb) bt >> > #0 0x000000080091f8a5 in scm_c_vm_run () from >> > /usr/obj/usr/ports/lang/guile/work/guile-2.0.3/libguile/.libs/libguile-2.0.so.25 >> > #1 0x0000000800895e17 in scm_async_click () from >> > /usr/obj/usr/ports/lang/guile/work/guile-2.0.3/libguile/.libs/libguile-2.0.so.25 >> > #2 0x00000008008f952f in scm_make_smob_type () from >> > /usr/obj/usr/ports/lang/guile/work/guile-2.0.3/libguile/.libs/libguile-2.0.so.25 >> >> Can you get a backtrace with symbols? > > OK, I will do that. > >> Also, once you have built a version with symbols, I would like to see >> what is triggering this async, and what the error is. So if you could >> run: >> >> GUILE_AUTO_COMPILE=0 libtool --mode=execute gdb libguile/guile >> >> and see what happens, that would be great. You will likely be able to >> reproduce this error that way. >> >> > --- ./configure.ac.orig 2011-10-07 19:49:48.000000000 -0400 >> > +++ ./configure.ac 2011-12-06 09:35:02.484201526 -0500 >> > @@ -657,7 +657,7 @@ >> > # >> > AC_CHECK_HEADERS([complex.h fenv.h io.h libc.h limits.h malloc.h >> > memory.h process.h string.h \ >> > regex.h rxposix.h rx/rxposix.h sys/dir.h sys/ioctl.h sys/select.h \ >> > -sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h \ >> > +sys/time.h sys/times.h sys/stdtypes.h sys/types.h \ >> > sys/utime.h time.h unistd.h utime.h pwd.h grp.h sys/utsname.h \ >> > direct.h langinfo.h nl_types.h machine/fpu.h poll.h sched.h]) >> >> Why did you need to do this? > > I don't know. Many of these patches are carried over from the existing > port on FreeBSD. (I think that's 1.8.8.) I'll see if I can get the > maintainer to explain, or experiment with omitting the patches and > seeing what breaks. > >> >> > +# pthread_np.h - available on FreeBSD >> >> I applied this and the supporting code, with some small changes. >> Thanks. I also applied the itanium patch. >> >> > -#if defined (sparc) || defined (__sparc__) || defined (__sparc) >> > +#if (defined (sparc) || defined (__sparc__) || defined (__sparc)) && \ >> > + (!defined(__FreeBSD__)) >> > # define SCM_FLUSH_REGISTER_WINDOWS asm("ta 3") >> > #else >> > # define SCM_FLUSH_REGISTER_WINDOWS /* empty */ >> >> Why is this? > > > I don't know, existing patch in the FreeBSD port that I just updated to > apply cleanly to the new version. As before, I'll try to find out more. > I don't have a sparc machine so I can't test what happens if the patch > is omitted. > > >> >> > ----- files/patch-libguile_gen-scmconfig.c ----- >> > --- libguile/gen-scmconfig.c 2008-02-23 21:38:39.310330888 -0600 >> > +++ libguile/gen-scmconfig.c 2008-02-23 21:39:32.909873567 -0600 >> > @@ -123,6 +123,7 @@ >> > >> > #include "gen-scmconfig.h" >> > >> > +#define _ANSI_SOURCE >> > #include <stdio.h> >> > #include <string.h> >> > >> >> Why is this? > > I think I had to add that to get the build to work on FreeBSD. I'll try > to get details for you. > > >> >> > ----- files/patch-libguile_numbers.c ----- >> > --- ./libguile/numbers.c.orig 2011-10-10 16:24:38.000000000 -0400 >> > +++ ./libguile/numbers.c 2011-12-06 05:26:45.391199972 -0500 >> > @@ -148,7 +148,7 @@ >> > >> > >> > #if defined (GUILE_I) >> > -#if defined HAVE_COMPLEX_DOUBLE >> > +#if defined HAVE_COMPLEX_DOUBLE && (defined HAVE_CLOG || defined >> > HAVE_CLOG10 || defined HAVE_CEXP || defined HAVE_USABLE_CSQRT) && >> > defined (SCM_COMPLEX_VALUE) >> > >> > /* For an SCM object Z which is a complex number (ie. satisfies >> > SCM_COMPLEXP), return its value as a C level "complex double". */ >> >> Why is this? > > > Ditto, I'll try to get details. > > >> >> OK, I think that's all that we need to do in Guile. If you can get back >> to me with some explanations on these patches and a transcript of your >> debugging session, that would be great. Also, if you are able to build >> from git, you will find some of your changes incorporated there. > > Sure, I'll use git. I assume this is the repo at > <http://git.savannah.gnu.org/cgit/guile.git/>? -- http://wingolog.org/
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.