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 _______________________________________________ Bug-guile mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-guile