[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: failed backtrace
From: |
M Johnson |
Subject: |
Re: failed backtrace |
Date: |
Sat, 16 Feb 2002 13:50:42 -0500 |
On Thu, Feb 14, 2002 at 05:51:49PM -0800, Thien-Thi Nguyen wrote:
> thanks for the bug report. i have started to look at this. it appears
> the environment at segf time has both `a' and `commandls' as names, but
> no value for `a':
>
> (gdb) gp env
> $5 = 0x80651c8 "(((a commandls) (\"/usr/local/bin/guile\")) #<eval-closure
> 40245828>)"
>
> because the bad-define-placement error is correct -- using `local-eval'
> requires application and thus the head-of-scope requirement for internal
> defines cannot be met -- my question then becomes: why is `a' in the
> environment at all?
>
> thi
>
Here is a simplified version of segf.scm:
(define (fnc args)
(local-eval '(define a b) (the-environment)))
Note that backtrace now works, but there's still a problem:
guile> guile> (fnc '(hello))
standard input:2:17: In expression (define a b):
standard input:2:17: Bad define placement
ABORT: (misc-error)
Type "(backtrace)" to get more information or "(debug)" to enter the debugger.
guile> (debug)
This is the Guile debugger; type "help" for help.
There are 3 frames on the stack.
Frame 2: (define a b)
debug> eval (the-environment)
;value: (((a a args) (hello)) #<compiled-closure #<primitive-procedure
eval-closure>>)
debug> ba
0* [fnc (hello)]
1 [local-eval # #]
2* (define a b)
debug> eval (the-environment)
Process scheme segmentation fault
Note also that here we're getting 2 "a"s in the environment. (sometimes i got
three, perhaps with slightly different code)
I don't know if this helps or sends you off in another direction. --Michael