From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: ludo@gnu.org (Ludovic =?iso-8859-1?Q?Court=E8s?=) Newsgroups: gmane.lisp.guile.bugs Subject: Re: guile-2.0.0 fails to build without threads Date: Wed, 04 May 2011 14:19:17 +0200 Message-ID: <87ei4er73u.fsf@gnu.org> References: <4D9DCE98.5080808@gentoo.org> <4DA3FEA2.7060205@gentoo.org> <4DA5A8DA.6030707@gentoo.org> <4DA5B2C7.8010009@gentoo.org> <4DA6F5D9.8080905@gentoo.org> <87pqo68qw8.fsf@gnu.org> <87k4ee8lad.fsf@gnu.org> <4DC01809.1090704@gentoo.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1304511573 27832 80.91.229.12 (4 May 2011 12:19:33 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 4 May 2011 12:19:33 +0000 (UTC) Cc: bug-guile@gnu.org To: Marijn Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Wed May 04 14:19:28 2011 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QHb39-0001aP-Bo for guile-bugs@m.gmane.org; Wed, 04 May 2011 14:19:27 +0200 Original-Received: from localhost ([::1]:54414 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHb38-0007AH-RL for guile-bugs@m.gmane.org; Wed, 04 May 2011 08:19:26 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:57170) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHb35-00079x-OC for bug-guile@gnu.org; Wed, 04 May 2011 08:19:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QHb34-0001lt-Hx for bug-guile@gnu.org; Wed, 04 May 2011 08:19:23 -0400 Original-Received: from solo.fdn.fr ([80.67.169.19]:57975) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHb34-0001lm-6A for bug-guile@gnu.org; Wed, 04 May 2011 08:19:22 -0400 Original-Received: from nixey (unknown [193.50.110.208]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (Client did not present a certificate) (Authenticated sender: lcourtes) by smtp.fdn.fr (Postfix) with ESMTPSA id DBE8E44290; Wed, 4 May 2011 14:19:20 +0200 (CEST) X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 15 =?iso-8859-1?Q?Flor=E9al?= an 219 de la =?iso-8859-1?Q?R=E9volution?= X-PGP-Key-ID: 0xEA52ECF4 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 83C4 F8E5 10A3 3B4C 5BEA D15D 77DD 95E2 EA52 ECF4 X-OS: x86_64-unknown-linux-gnu In-Reply-To: <4DC01809.1090704@gentoo.org> (Marijn's message of "Tue, 03 May 2011 16:58:17 +0200") User-Agent: Gnus/5.110017 (No Gnus v0.17) Emacs/24.0.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 80.67.169.19 X-BeenThere: bug-guile@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.bugs:5554 Archived-At: Hi Marijn, Marijn writes: > On 04/28/11 17:09, Ludovic Court=C3=A8s wrote: >> Andy Wingo writes: >> >>> On Thu 28 Apr 2011 15:08, ludo@gnu.org (Ludovic Court=C3=A8s) writes: >>> >>>>> /* Sanity check. */ >>>>> if (!GC_is_visible (&scm_protects)) >>>>> abort (); >>> >>> Is this even the right check to make? >> >> Yes: the goal is to make sure that the =E2=80=98scm_protect=E2=80=99 var= iable itself is >> a GC root. >> >> Actually, Marijn: can you try =E2=80=9CGC_DUMP_REGULARLY=3D1 ./meta/guil= e -c 0=E2=80=9D, >> and check what=E2=80=99s under =E2=80=9CStatic roots=E2=80=9D? More precisely: --8<---------------cut here---------------start------------->8--- $ ./meta/gdb-uninstalled-guile GNU gdb (GDB) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /home/ludo/src/guile/libguile/.libs/guile...done. (gdb) set environment GC_DUMP_REGULARLY "1" (gdb) b main Breakpoint 1 at 0x400ab0: file guile.c, line 69. (gdb) r -c 0 The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/ludo/src/guile/libguile/.libs/guile -c 0 [Thread debugging using libthread_db enabled] Breakpoint 1, main (argc=3D3, argv=3D0x7fffffffce88) at guile.c:69 69 { (gdb) p &scm_protects $2 =3D (SCM *) 0x7ffff7dd7788 (gdb) c Continuing. ***Static roots: Total size: 0 ***Heap sections: Total heap size: 65536 Section 0 from 0x663000 to 0x673000 0/16 blacklisted ***Free blocks: Free list 16 (total size 65536): 0x663000 size 65536 not black listed Total of 65536 bytes on free list ***Blocks in use: (kind(0=3Dptrfree,1=3Dnormal,2=3Dunc.):size_in_bytes, #_marks_set) blocks =3D 0, bytes =3D 0 ***Static roots: >From 0x601000 to 0x601360 (temporary) >From 0x7ffff7db0000 to 0x7ffff7ddde00 (temporary) ;; =E2=86=90 here! >From 0x7ffff7a1b000 to 0x7ffff7a5e6e0 (temporary) >From 0x7ffff77ee000 to 0x7ffff77f23b0 (temporary) >From 0x7ffff75d5000 to 0x7ffff75d5108 (temporary) >From 0x7ffff73d1000 to 0x7ffff73d18e0 (temporary) >From 0x7ffff71c5d58 to 0x7ffff71c9f08 (temporary) >From 0x7ffff6eb2a08 to 0x7ffff6eb3f60 (temporary) >From 0x7ffff6c5f450 to 0x7ffff6c5f988 (temporary) >From 0x7ffff6a28000 to 0x7ffff6a561c0 (temporary) >From 0x7ffff681f000 to 0x7ffff681f0e8 (temporary) >From 0x7ffff6598000 to 0x7ffff659dbe8 (temporary) >From 0x7ffff7ffd000 to 0x7ffff7ffe188 (temporary) Total size: 725552 --8<---------------cut here---------------end--------------->8--- Above =E2=80=98scm_protects=E2=80=99 clearly appears as a root. Can you ch= eck this? How was libgc compiled? Does its =E2=80=98make check=E2=80=99 pass? What does =E2=80=98env | grep ^GC=E2=80=99 say? Can you try this program with the same libgc: --8<---------------cut here---------------start------------->8--- #include int foo[123]; int main (int argc, char *argv[]) { GC_INIT (); GC_is_visible (&foo); return 0; } --8<---------------cut here---------------end--------------->8--- Thanks, Ludo=E2=80=99.