[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Segment fault when Guile displays a backtrace
From: |
Ludovic Courtès |
Subject: |
Re: Segment fault when Guile displays a backtrace |
Date: |
Tue, 10 Jul 2007 23:31:13 +0200 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) |
Hi,
xeos <address@hidden> writes:
> I have found a bug on cvs guile. It has been reproduced by two users
> more too. When Guile crashed when it evaluates a wrong expression of
> the form:
>
> (set! 'symbol value)
>
> Guile should throw (and it do throw) a exeption, Nevertheless it
> crashed in the middle of backtrace log.
This won't be fixed in 1.8.2 because it needs some more thought.
Basically, this has to do with memoization of the generalized `set!'.
The `(quote symbol)' is being weirdly memoized:
$ guile -c "(set! 'x 2)"
ERROR: In procedure memoization:
ERROR: Bad variable (address@hidden #-1#) in expression (set! (address@hidden
#-1#) 2).
As you can see, the memoized thing is a recursive list, hence the
endless recursion while unmemoizing the faulty expression to display the
backtrace.
The real fix may be to remove the `macroexp ()' function, as already
suggested by the comment in there. Thus I'll look at it after 1.8.2 is
out (if no one fixes it in the meantime ;-)).
Thanks,
Ludovic.