- 
                Notifications
    
You must be signed in to change notification settings  - Fork 174
 
Open
Description
In addition to #263 , the Julia function for calling the C is hardcoded to only work for the differential equation example in the docs. The problematic code is in build_function.jl at lines 762 and 853. Trying to use the generated function causes Julia to crash.
Until this is fixed, it would be nice for the documentation to at least say that this feature is broken.
Here's a small example.
julia> import Symbolics
julia> Symbolics.@variables x, y, z
3-element Vector{Symbolics.Num}:
 x
 y
 z
julia> f = x^2 + y^2 + z^2 + x*y + y*z + z*x
x^2 + x*y + x*z + y^2 + y*z + z^2
julia> ∇f = Symbolics.gradient(f, [x, y, z])
3-element Vector{Symbolics.Num}:
 2x + y + z
 x + 2y + z
 x + y + 2z
julia> g! = Symbolics.build_function(∇f, [x, y, z],
                                    target=Symbolics.CTarget(),
                                    fname=:grad_f,
                                    expression=Val{false})
RuntimeGeneratedFunction(#=in Symbolics=#, #=using Symbolics=#, :((du, u, p, t)->begin
          #= /home/paul/.julia/packages/Symbolics/Luppy/src/build_function.jl:848 =#
          ccall(("diffeqf", "/tmp/jl_UbO9QtedWN"), Cvoid, (Ptr{Float64}, Ptr{Float64}, Ptr{Float64}, Float64), du, u, p, t)
      end))
julia> in = [1., 2., 3.]
3-element Vector{Float64}:
 1.0
 2.0
 3.0
julia> out = zeros(3)
3-element Vector{Float64}:
 0.0
 0.0
 0.0
julia> g!(out, in)
Unreachable reached at 0x7f0d1b92debf
[112786] signal 4 (2): Illegal instruction
in expression starting at REPL[19]:1
getindex at ./tuple.jl:33 [inlined]
macro expansion at /home/paul/.julia/packages/RuntimeGeneratedFunctions/2SjTC/src/RuntimeGeneratedFunctions.jl:160 [inlined]
macro expansion at ./none:0 [inlined]
generated_callfunc at ./none:0 [inlined]
RuntimeGeneratedFunction at /home/paul/.julia/packages/RuntimeGeneratedFunctions/2SjTC/src/RuntimeGeneratedFunctions.jl:148
unknown function (ip: 0x7f0d1b92def6) at (unknown file)
jl_apply at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/julia.h:2391 [inlined]
do_call at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/interpreter.c:123
eval_value at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/interpreter.c:243
eval_stmt_value at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/interpreter.c:194 [inlined]
eval_body at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/interpreter.c:707
jl_interpret_toplevel_thunk at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/interpreter.c:898
jl_toplevel_eval_flex at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/toplevel.c:1035
__repl_entry_eval_expanded_with_loc at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:301
jl_apply at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/julia.h:2391 [inlined]
jl_f_invokelatest at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/builtins.c:881
toplevel_eval_with_hooks at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:308
toplevel_eval_with_hooks at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:312
toplevel_eval_with_hooks at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:312
toplevel_eval_with_hooks at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:312
toplevel_eval_with_hooks at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:305 [inlined]
eval_user_input at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:330
repl_backend_loop at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:452
#start_repl_backend#41 at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:427start_repl_backend at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:424 [inlined]
#run_repl#50 at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:653
run_repl at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:639
unknown function (ip: 0x7f0d5930b806) at (unknown file)
run_std_repl at ./client.jl:478
jfptr_run_std_repl_62877.1 at /home/paul/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/julia.h:2391 [inlined]
jl_f_invokelatest at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/builtins.c:881
run_main_repl at ./client.jl:499
repl_main at ./client.jl:586 [inlined]
_start at ./client.jl:561
jfptr__start_31204.1 at /home/paul/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/julia.h:2391 [inlined]
true_main at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/jlapi.c:971
jl_repl_entrypoint at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/src/jlapi.c:1139
main at /cache/build/tester-amdci4-14/julialang/julia-release-1-dot-12/cli/loader_exe.c:58
unknown function (ip: 0x7f0df7a27674) at /usr/lib/libc.so.6
__libc_start_main at /usr/lib/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8) at /workspace/srcdir/glibc-2.17/csu/../sysdeps/x86_64/start.S
Allocations: 38042864 (Pool: 38042498; Big: 366); GC: 29
Illegal instruction        (core dumped) julia --project=../devenv/Metadata
Metadata
Assignees
Labels
No labels