Skip to content

Segfaults when loading packages concurrently #59219

@JamesWrigley

Description

@JamesWrigley

EDIT: the JLL stuff was a red herring, see #59219 (comment).

I'm hitting some segfaults on 1.12 RC1 and latest nightly when loading pkgimages for packages that use a JLL. Here's an MWE:

module Foo

import ZeroMQ_jll

end # module Foo

If I put that in a project with ZeroMQ_jll and try importing it I get:

$ julia +1.12 --project -E 'import Foo'
Precompiling Foo finished.
  1 dependency successfully precompiled in 1 seconds. 7 already precompiled.
nothing

Which is expected. But afterwards I consistently get a segfault:

$ julia +1.12 --project -E 'import Foo'

[980142] signal 11 (1): Segmentation fault
in expression starting at none:1
jl_to_typeof at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/julia.h:974 [inlined]
must_be_new_dt at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/staticdata_utils.c:18
must_be_new_dt at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/staticdata_utils.c:64
jl_restore_system_image_from_stream_ at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/staticdata.c:4048
jl_restore_package_image_from_stream at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/staticdata.c:4418
jl_restore_incremental_from_buf at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/staticdata.c:4487
ijl_restore_package_image_from_file at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/staticdata.c:4554
#_include_from_serialized#863 at ./loading.jl:1270
_include_from_serialized at ./loading.jl:1246 [inlined]
#_require_search_from_serialized#879 at ./loading.jl:2070
_require_search_from_serialized at ./loading.jl:1977
jfptr__require_search_from_serialized_89198.1 at /home/james/.julia/juliaup/julia-1.12.0-rc1+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
__require_prelocked at ./loading.jl:2595
_require_prelocked at ./loading.jl:2461
macro expansion at ./loading.jl:2389 [inlined]
macro expansion at ./lock.jl:376 [inlined]
__require at ./loading.jl:2354
jfptr___require_109206.1 at /home/james/.julia/juliaup/julia-1.12.0-rc1+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/julia.h:2374 [inlined]
jl_f_invoke_in_world at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/builtins.c:894
require at ./loading.jl:2330
jfptr_require_109941.1 at /home/james/.julia/juliaup/julia-1.12.0-rc1+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/julia.h:2374 [inlined]
call_require at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/toplevel.c:494 [inlined]
eval_import_path at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/toplevel.c:532
jl_toplevel_eval_flex at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/toplevel.c:886
jl_toplevel_eval_flex at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/toplevel.c:975
ijl_toplevel_eval at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/toplevel.c:1047
ijl_toplevel_eval_in at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/toplevel.c:1092
eval at ./boot.jl:489
exec_options at ./client.jl:289
_start at ./client.jl:554
jfptr__start_76350.1 at /home/james/.julia/juliaup/julia-1.12.0-rc1+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/julia.h:2374 [inlined]
true_main at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/jlapi.c:971
jl_repl_entrypoint at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/src/jlapi.c:1139
main at /cache/build/tester-amdci4-11/julialang/julia-release-1-dot-12/cli/loader_exe.c:58
unknown function (ip: 0x7ff313e3feaf) at /lib64/libc.so.6
__libc_start_main at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8) at /workspace/srcdir/glibc-2.17/csu/../sysdeps/x86_64/start.S
Allocations: 1 (Pool: 1; Big: 0); GC: 0
[1]    980142 segmentation fault (core dumped)  julia +1.12 --project -E 'import Foo'

However importing the package from a REPL session works fine, which is quite confusing 🤔 As far as I can tell this only happens with JLL dependencies. I also tried CImGuiPack_jll and perfetto_jll in the MWE to make sure it wasn't some weird problem with ZeroMQ_jll. Discovered by running IJulia, which launches kernels like this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    multithreadingBase.Threads and related functionality

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions