Closed
Description
Discovered while doing PR #35363 for Issue #34544.
There are two lines I can come up with that still produce a segfault. (that's a different different code path from the issue mentioned above)
eval(Expr(:quote, Expr(:module, true, :bar, Expr(:quote))))
eval(Expr(:call, :eval, Expr(:quote, Expr(:module, true, :bar, Expr(:quote)))))
Which appear to be related to
Line 1120 in 60323b6
stacktrace:
signal (11): Segmentation fault: 11
in expression starting at none:1
scm_to_julia_ at /Users/ssikdar1/julia/src/ast.c:578
scm_to_julia_ at /Users/ssikdar1/julia/src/ast.c:597
scm_to_julia_ at /Users/ssikdar1/julia/src/ast.c:579
scm_to_julia_ at /Users/ssikdar1/julia/src/ast.c:597
scm_to_julia at /Users/ssikdar1/julia/src/ast.c:455
jl_call_scm_on_ast at /Users/ssikdar1/julia/src/ast.c:961 [inlined]
jl_expand_macros at /Users/ssikdar1/julia/src/ast.c:1120
jl_expand_macros at /Users/ssikdar1/julia/src/ast.c:1190
jl_expand_with_loc_warn at /Users/ssikdar1/julia/src/ast.c:1245
jl_toplevel_eval_flex at /Users/ssikdar1/julia/src/toplevel.c:633
jl_toplevel_eval at /Users/ssikdar1/julia/src/toplevel.c:822 [inlined]
jl_toplevel_eval_in at /Users/ssikdar1/julia/src/toplevel.c:845
I tried adding a display to julia-bq-expand-
in src/macroexpand.scm
+++ b/src/macroexpand.scm
@@ -15,6 +15,10 @@
(loop (cdr lst) (cons nxt out)))))))
(define (julia-bq-expand- x d)
+ (display "\n x: ")
+ (display x)
+ (display "\n d: ")
+ (display d)
which outputs:
julia> eval(Expr(:quote, Expr(:module, true, :bar, Expr(:quote))))
x: (module (true) bar (quote))
trying this statement in the julia --lisp
returns a compilation error:
> (module (true) bar (quote))
type error: car: expected cons, got ()
#0 (compile-in [(2 loadg 0 call 1 loadg 0 loadg 0 argc)
#table(true 1 bar 2 module 0) 3 () 7]
(()) #f (quote))
#1 (compile-arglist/lambda
(quote))
#2 (compile-arglist [(2 loadg 0 call 1 loadg 0 loadg 0 argc)
#table(true 1 bar 2 module 0) 3 () 7]
(()) ((true) bar (quote)))
#3 (compile-app [(2 loadg 0 call 1 loadg 0 loadg 0 argc)
#table(true 1 bar 2 module 0) 3 () 7]
(()) #t (module (true) bar (quote)))
#4 (compile-f- () (lambda ()
(module (true) bar (quote))))
#5 (lambda #fn("7000r0e0~\x7f42;" [compile-f-] [() (lambda ()
(module (true) bar (quote)))])
#fn("5000r2|;" []))
#6 (eval (module (true) bar (quote)))
So it seems the value getting passed to julia-bq-macro
is incorrect?
Metadata
Metadata
Assignees
Labels
No labels