bug-guile
[Top][All Lists]
Advanced

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

Re: Abort caused by unknown type in GC


From: Michael Livshin
Subject: Re: Abort caused by unknown type in GC
Date: 25 Aug 2001 02:47:17 +0300
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Copyleft)

Neil Jerram <address@hidden> writes:

> >>>>> "Neil" == Neil Jerram <address@hidden> writes:
> 
>     Neil> Error in scm_gc_sweep during GC: unknown type Aborted
> 
> I've now reduced this problem to two lines...
> 
> address@hidden ~]$ guile -q
> guile> (symbol-fset! 'equal (make-variable equal?))
> guile> (gc)
> Error in scm_gc_sweep during GC: unknown type
> Aborted
> 
> This is with development CVS.  I haven't checked yet whether it is
> also a problem for stable CVS.

not a problem in stable.

there are several problems, actually.

* problem #1 is a simple bug: Guile "forgot" how to sweep unreachable
  variables.  that's because they used to be smobs, but aren't
  anymore, so there should be a separate case for them in
  scm_gc_sweep.

* problem #2 is that the symbol 'equal in your example is not held on
  to, even though it gets a function bound to it.  I'm not sure this
  is right, but I'm not sure how (and whether) to fix it.

* problem #3 is that `symbol-fset!' doesn't check its second argument
  for being an applicable object.  not relevant to your example,
  actually.  I'm not sure it's worth fixing since I'm not sure
  whether `symbol-fset!' is going to be kept...

#1's fixed.

thanks for great analysis,
--mike

-- 
Look, would it save you all this bother if I just gave up and went mad now?
                -- Arthur Dent




reply via email to

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