From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Kevin Ryde Newsgroups: gmane.lisp.guile.devel Subject: weak-values gc missed a reference [1.6] Date: Mon, 30 Aug 2004 07:55:41 +1000 Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Message-ID: <87u0ulip7m.fsf@zip.com.au> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1093820545 4829 80.91.224.253 (29 Aug 2004 23:02:25 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 29 Aug 2004 23:02:25 +0000 (UTC) Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Aug 30 01:02:17 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1C1Ygi-0006rF-00 for ; Mon, 30 Aug 2004 01:02:16 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1C1YlV-0001cl-98 for guile-devel@m.gmane.org; Sun, 29 Aug 2004 19:07:13 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1C1YlB-0001cU-HA for guile-devel@gnu.org; Sun, 29 Aug 2004 19:06:53 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1C1Yl9-0001bC-Kg for guile-devel@gnu.org; Sun, 29 Aug 2004 19:06:52 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1C1Yl9-0001ay-AP for guile-devel@gnu.org; Sun, 29 Aug 2004 19:06:51 -0400 Original-Received: from [61.8.0.84] (helo=mailout1.pacific.net.au) by monty-python.gnu.org with esmtp (Exim 4.34) id 1C1Yfp-0005MH-7R for guile-devel@gnu.org; Sun, 29 Aug 2004 19:01:21 -0400 Original-Received: from mailproxy1.pacific.net.au (mailproxy1.pacific.net.au [61.8.0.86]) by mailout1.pacific.net.au (8.12.3/8.12.3/Debian-6.6) with ESMTP id i7TN1G4u018336 for ; Mon, 30 Aug 2004 09:01:16 +1000 Original-Received: from localhost (ppp2C21.dyn.pacific.net.au [61.8.44.33]) by mailproxy1.pacific.net.au (8.12.3/8.12.3/Debian-6.6) with ESMTP id i7TN1FlY007074 for ; Mon, 30 Aug 2004 09:01:15 +1000 Original-Received: from gg by localhost with local (Exim 3.36 #1 (Debian)) id 1C1XeO-0000Eq-00; Mon, 30 Aug 2004 07:55:48 +1000 Original-To: guile-devel@gnu.org Mail-Copies-To: never User-Agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3 (gnu/linux) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: main.gmane.org gmane.lisp.guile.devel:4054 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.devel:4054 In my i386 build of the latest 1.6 cvs or the debian 1.6.4-4, the program below run as "guile -s foo.scm" gives ERROR: not-a-record # I got this in a big program, also using records held as the values in a weak value hash table. I think the error is from "rec-foo", with "x" apparently having become a freed cell. Being a gc thing it might be sensitive to the exact build environment, I'm using --with-threads=coop and the default CFLAGS. It doesn't seem to happen if --debug is added (goes into an infinite loop instead). But my big program bombs with --debug too. I've been using the cvs head instead mostly, and haven't had any problems there (build as of a couple of weeks ago for instance). (define rec-type (make-record-type "foo" '(foo bar quux))) (define rec-new (record-constructor rec-type)) (define rec-foo (record-accessor rec-type 'foo)) (define h (make-weak-value-hash-table 61)) (hash-set! h "foo" (rec-new (make-vector 1000) (make-vector 1000) (make-vector 1000))) (let more () (noop) (noop) (noop) (noop) (let ((x (hash-ref h "foo"))) (if x (rec-foo x))) ;; (gc) (if (hash-ref h "foo") (more))) _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel