Julia 1.9 on qemu-aarch64 docker segfaults whille importing Unitful

I don’t know on which repo to report (Julia? Unitful.jl?) or what information is helpful, so I’ve put it here

I’ve started a aarch64 ubuntu docker container on x86 PC

podman run -ti --net=host --arch=arm64 --volume=./julia_arm64:/workdir ubuntu

then ran Julia

root@ifrit-hpc:/workdir/julia-1.9.0/bin# ./julia 
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.9.0 (2023-05-07)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> versioninfo()
Julia Version 1.9.0
Commit 8e630552924 (2023-05-07 11:25 UTC)
Platform Info:
  OS: Linux (aarch64-linux-gnu)
  CPU: 24 × AMD Ryzen Threadripper 2920X 12-Core Processor
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, generic)
  Threads: 1 on 24 virtual cores

then tried to install Unitful and it crashed

(@v1.9) pkg> add Unitful
  Installing known registries into `~/.julia`
    Updating registry at `~/.julia/registries/General.toml`
   Resolving package versions...
   Installed Unitful ────────── v1.14.0
   Installed ConstructionBase ─ v1.5.2
    Updating `~/.julia/environments/v1.9/Project.toml`
  [1986cc42] + Unitful v1.14.0
    Updating `~/.julia/environments/v1.9/Manifest.toml`
  [187b0558] + ConstructionBase v1.5.2
  [1986cc42] + Unitful v1.14.0
  [56f22d72] + Artifacts
  [ade2ca70] + Dates
  [8f399da3] + Libdl
  [37e2e46d] + LinearAlgebra
  [de0858da] + Printf
  [9a3f8284] + Random
  [ea8e919c] + SHA v0.7.0
  [9e88b42a] + Serialization
  [4ec0a83e] + Unicode
  [e66e0078] + CompilerSupportLibraries_jll v1.0.2+0
  [4536629a] + OpenBLAS_jll v0.3.21+4
  [8e850b90] + libblastrampoline_jll v5.7.0+0
Precompiling project...
  ✗ Unitful
  1 dependency successfully precompiled in 55 seconds
  1 dependency errored. To see a full report either run `import Pkg; Pkg.precompile()` or load the package

julia> using Unitful
[ Info: Precompiling Unitful [1986cc42-f94f-5a68-af5c-568840ba703d]

[71] signal (11.1): Segmentation fault
in expression starting at /root/.julia/packages/Unitful/orvol/src/pkgdefaults.jl:134
_string_n at ./strings/string.jl:90 [inlined]
StringVector at ./iobuffer.jl:31 [inlined]
#IOBuffer#454 at ./iobuffer.jl:114 [inlined]
GenericIOBuffer at ./iobuffer.jl:105 [inlined]
print_to_string at ./strings/io.jl:142
string at ./strings/io.jl:185
unknown function (ip: 0x57d2d8f473)
_jl_invoke at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
do_call at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:126
eval_value at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:226
eval_stmt_value at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:177 [inlined]
eval_body at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:624
jl_interpret_toplevel_thunk at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:762
jl_toplevel_eval_flex at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:912
jl_toplevel_eval_flex at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:856
ijl_toplevel_eval_in at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:971
eval at ./boot.jl:370 [inlined]
include_string at ./loading.jl:1864
_jl_invoke at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2940
_include at ./loading.jl:1924
include at ./Base.jl:457
jfptr_include_32262 at /workdir/julia-1.9.0/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
jl_f__call_latest at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/builtins.c:774
include at /root/.julia/packages/Unitful/orvol/src/Unitful.jl:1
unknown function (ip: 0x551890f2e7)
_jl_invoke at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
do_call at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:126
eval_value at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:226
eval_stmt_value at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:177 [inlined]
eval_body at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:624
jl_interpret_toplevel_thunk at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:762
jl_toplevel_eval_flex at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:912
jl_eval_module_expr at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:203 [inlined]
jl_toplevel_eval_flex at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:715
jl_toplevel_eval_flex at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:856
ijl_toplevel_eval_in at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:971
eval at ./boot.jl:370 [inlined]
include_string at ./loading.jl:1864
_jl_invoke at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2940
_include at ./loading.jl:1924
include at ./Base.jl:457 [inlined]
include_package_for_output at ./loading.jl:2010
jfptr_include_package_for_output_37748 at /workdir/julia-1.9.0/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
do_call at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:126
eval_value at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:226
eval_stmt_value at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:177 [inlined]
eval_body at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:624
jl_interpret_toplevel_thunk at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/interpreter.c:762
jl_toplevel_eval_flex at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:912
jl_toplevel_eval_flex at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:856
ijl_toplevel_eval_in at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/toplevel.c:971
eval at ./boot.jl:370 [inlined]
include_string at ./loading.jl:1864
include_string at ./loading.jl:1874 [inlined]
exec_options at ./client.jl:305
_start at ./client.jl:522
jfptr__start_45911 at /workdir/julia-1.9.0/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
true_main at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/jlapi.c:573
jl_repl_entrypoint at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/src/jlapi.c:717
main at /cache/build/default-armageddon-6/julialang/julia-release-1-dot-9/cli/loader_exe.c:59
unknown function (ip: 0x55008b73fb)
__libc_start_main at /lib/aarch64-linux-gnu/libc.so.6 (unknown line)
_start at /workdir/julia-1.9.0/bin/julia (unknown line)
_start at /workdir/julia-1.9.0/bin/julia (unknown line)
Allocations: 9487547 (Pool: 9483028; Big: 4519); GC: 14
ERROR: Failed to precompile Unitful [1986cc42-f94f-5a68-af5c-568840ba703d] to "/root/.julia/compiled/v1.9/Unitful/jl_Va3WIG".
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
   @ Base ./loading.jl:2260
 [3] compilecache
   @ ./loading.jl:2127 [inlined]
 [4] _require(pkg::Base.PkgId, env::String)
   @ Base ./loading.jl:1770
 [5] _require_prelocked(uuidkey::Base.PkgId, env::String)
   @ Base ./loading.jl:1625
 [6] macro expansion
   @ ./loading.jl:1613 [inlined]
 [7] macro expansion
   @ ./lock.jl:267 [inlined]
 [8] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:1576

julia> 

The same command work on Raspberry Pi 4 running Raspberry Pi 4

The problem has not been resolved, but this does not appear to be a Unitful-specific issue.

ColorTypes.jl test shows no segfaults on Julia v1.6.7, v1.10, and v1.12.0-DEV.

1 Like