Skip to content

Zygote broken on 1.12 #281

@marcobonici

Description

@marcobonici

Describe the bug 🐞

When differentiating an IntegralProblem, everything works fine on 1.12 and 1.11, but Zygote gives segmentation fault for 1.12.

Expected behavior

I expect the differentiation to work as in the previous versions of Julia.

Minimal Reproducible Example 👇

using Integrals, ForwardDiff, FiniteDiff, Zygote, Cuba
f(x, p) = sum(sin.(x .* p))
domain = (ones(2), 3ones(2)) # (lb, ub)
p = ones(2)

function testf(p)
    prob = IntegralProblem(f, domain, p)
    sin(solve(prob, CubaCuhre(), reltol = 1e-6, abstol = 1e-6)[1])
end
testf(p)
dp1 = Zygote.gradient(testf, p)
dp2 = FiniteDiff.finite_difference_gradient(testf, p)
dp3 = ForwardDiff.gradient(testf, p)
dp1[1]  dp2  dp3

Error & Stacktrace ⚠️

[80341] signal 11 (1): Segmentation fault
in expression starting at REPL[8]:1
emit_unboxed_coercion at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/intrinsics.cpp:394 [inlined]
emit_unbox at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/intrinsics.cpp:458
emit_condition at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/codegen.cpp:6066
emit_condition at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/codegen.cpp:6079 [inlined]
emit_function at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/codegen.cpp:9271
jl_emit_code at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/codegen.cpp:9727
jl_emit_codeinst at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/codegen.cpp:9798
jl_emit_codeinst_to_jit_impl at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/jitlayers.cpp:770
jl_add_codeinst_to_jit at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/gf.c:3372
add_codeinsts_to_jit! at ./../usr/share/julia/Compiler/src/typeinfer.jl:1436
typeinf_ext_toplevel at ./../usr/share/julia/Compiler/src/typeinfer.jl:1443 [inlined]
typeinf_ext_toplevel at ./../usr/share/julia/Compiler/src/typeinfer.jl:1451
jfptr_typeinf_ext_toplevel_117555.1 at /home/marcobonici/.julia/juliaup/julia-1.12.0+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_type_infer at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/gf.c:462
jl_compile_method_internal at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/gf.c:3512
_jl_invoke at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/gf.c:4002 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/gf.c:4210
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f__apply_iterate at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/builtins.c:868
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f__apply_iterate at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/builtins.c:868
_apply at ./boot.jl:1019
adjoint at /home/marcobonici/.julia/packages/Zygote/55SqB/src/lib/lib.jl:211 [inlined]
_pullback at /home/marcobonici/.julia/packages/ZygoteRules/CkVIK/src/adjoint.jl:67 [inlined]
IntegralProblem at /home/marcobonici/.julia/packages/SciMLBase/b4Q81/src/problems/integral_problems.jl:79 [inlined]
_pullback at /home/marcobonici/.julia/packages/Zygote/55SqB/src/compiler/interface2.jl:0
unknown function (ip: 0x7fbb2fccb3b2) at (unknown file)
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f__apply_iterate at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/builtins.c:868
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f__apply_iterate at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/builtins.c:868
_apply at ./boot.jl:1019
_pullback at /home/marcobonici/.julia/packages/Zygote/55SqB/src/compiler/interface2.jl:81
unknown function (ip: 0x7fbb2fccaf02) at (unknown file)
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f__apply_iterate at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/builtins.c:868
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f__apply_iterate at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/builtins.c:868
_apply at ./boot.jl:1019
adjoint at /home/marcobonici/.julia/packages/Zygote/55SqB/src/lib/lib.jl:211 [inlined]
_pullback at /home/marcobonici/.julia/packages/ZygoteRules/CkVIK/src/adjoint.jl:67 [inlined]
IntegralProblem at /home/marcobonici/.julia/packages/SciMLBase/b4Q81/src/problems/integral_problems.jl:76 [inlined]
_pullback at /home/marcobonici/.julia/packages/Zygote/55SqB/src/compiler/interface2.jl:0
unknown function (ip: 0x7fbb2fca1722) at (unknown file)
testf at ./REPL[6]:2 [inlined]
_pullback at /home/marcobonici/.julia/packages/Zygote/55SqB/src/compiler/interface2.jl:0
pullback at /home/marcobonici/.julia/packages/Zygote/55SqB/src/compiler/interface.jl:96
pullback at /home/marcobonici/.julia/packages/Zygote/55SqB/src/compiler/interface.jl:94 [inlined]
gradient at /home/marcobonici/.julia/packages/Zygote/55SqB/src/compiler/interface.jl:153
jfptr_gradient_19838 at /home/marcobonici/.julia/compiled/v1.12/Zygote/4kbLI_9sbRe.so (unknown line)
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
do_call at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/interpreter.c:123
eval_value at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/interpreter.c:243
eval_stmt_value at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/interpreter.c:194 [inlined]
eval_body at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/interpreter.c:707
jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/interpreter.c:898
jl_toplevel_eval_flex at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/toplevel.c:1035
__repl_entry_eval_expanded_with_loc at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:301
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f_invokelatest at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/builtins.c:881
toplevel_eval_with_hooks at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:308
toplevel_eval_with_hooks at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:312
toplevel_eval_with_hooks at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:305 [inlined]
eval_user_input at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:330
repl_backend_loop at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:452
#start_repl_backend#41 at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:427
start_repl_backend at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:424 [inlined]
#run_repl#50 at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:653
run_repl at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:639
jfptr_run_repl_18494.1 at /home/marcobonici/.julia/juliaup/julia-1.12.0+0.x64.linux.gnu/share/julia/compiled/v1.12/REPL/u0gqU_g0Uq3.so (unknown line)
run_std_repl at ./client.jl:478
jfptr_run_std_repl_69973.1 at /home/marcobonici/.julia/juliaup/julia-1.12.0+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
jl_f_invokelatest at /cache/build/builder-amdci4-0/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_85044.1 at /home/marcobonici/.julia/juliaup/julia-1.12.0+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/julia.h:2387 [inlined]
true_main at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/jlapi.c:971
jl_repl_entrypoint at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/src/jlapi.c:1139
main at /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/cli/loader_exe.c:58
unknown function (ip: 0x7fbb4582a1c9) at /lib/x86_64-linux-gnu/libc.so.6
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8) at /workspace/srcdir/glibc-2.17/csu/../sysdeps/x86_64/start.S
Allocations: 27724868 (Pool: 27724361; Big: 507); GC: 20
Segmentation fault (core dumped)

Environment (please complete the following information):

  • Output of using Pkg; Pkg.status()
  • Output of using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)
[d360d2e6] ChainRulesCore v1.26.0
  [8a292aeb] Cuba v2.3.0
  [6a86dc24] FiniteDiff v2.29.0
  [f6369f11] ForwardDiff v1.2.2
  [de52edbc] Integrals v4.7.0
  [0bca4576] SciMLBase v2.121.1
  [e88e6eb3] Zygote v0.7.10
  [8dfed614] Test
  • Output of versioninfo()
versioninfo()
Julia Version 1.12.0
Commit b907bd0600f (2025-10-07 15:42 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 20 × 13th Gen Intel(R) Core(TM) i7-13700H
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, alderlake)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 20 virtual cores)
Environment:
  LD_PRELOAD = /usr/lib/x86_64-linux-gnu/libgomp.so.1
  LD_LIBRARY_PATH = /usr/local/cuda/lib64

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions