Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: Segmentation fault when cross-compiling from amd64 to arm64 using qemu emulation #49474

Closed
schlichtanders opened this issue Apr 24, 2023 · 10 comments · Fixed by #49745
Closed
Labels
building Build system, or building Julia or its dependencies system:arm ARMv7 and AArch64

Comments

@schlichtanders
Copy link

schlichtanders commented Apr 24, 2023

This seems to be an old issue, already reported 1.5 years back at JuliaLang/PackageCompiler.jl#433
There is another issue which reports similar issues JuliaPy/Conda.jl#228

Concretely, Julia segfaults if qemu is used to build packages for arm64. I.e. if you want to build for instance julia docker containers on a normal laptop for an ARM64 target you are out of luck if you are not running one of the new macbooks which run on arm.
The consequence is that julia does not support ARM64 like it supports AMD64, which I guess is a crucial bug.

Minimal Reproducible Example

Setup multi-arch docker on your amd64 system (e.g. any non-mac-laptop) by following the official tutorial.
Here a summary of the steps

docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --name mybuilder --driver docker-container --bootstrap
docker buildx use mybuilder

Then you can test that the following docker images does not compile

FROM julia:1.8 AS usersetup
RUN julia -e 'import Pkg; Pkg.add("TimeZones")'
docker buildx build --platform=linux/arm64 .
The output should look something like this
WARNING: No output specified with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load
[+] Building 83.6s (5/5) FINISHED                                                                      
 => [internal] load .dockerignore                                                                 0.0s
 => => transferring context: 2B                                                                   0.0s
 => [internal] load build definition from Dockerfile                                              0.0s
 => => transferring dockerfile: 112B                                                              0.0s
 => [internal] load metadata for docker.io/library/julia:1.8                                      0.4s
 => CACHED [1/2] FROM docker.io/library/julia:1.8@sha256:d740f7d6325dee8df5c7585e78cfd33638a0b85  0.0s
 => => resolve docker.io/library/julia:1.8@sha256:d740f7d6325dee8df5c7585e78cfd33638a0b852e1af76  0.0s
 => ERROR [2/2] RUN julia -e 'import Pkg; Pkg.add("TimeZones")'                                  83.1s
------                                                                                                 
 > [2/2] RUN julia -e 'import Pkg; Pkg.add("TimeZones")':                                              
#0 3.782   Installing known registries into `~/.julia`                                                 
#0 17.56     Updating registry at `~/.julia/registries/General.toml`                                   
#0 17.64    Resolving package versions...                                                              
#0 23.98    Installed Scratch ───────── v1.2.0                                                         
#0 24.37    Installed RecipesBase ───── v1.3.3
#0 24.37    Installed Mocking ───────── v0.7.6
#0 24.37    Installed InlineStrings ─── v1.4.0
#0 24.37    Installed Parsers ───────── v2.5.8
#0 24.38    Installed Preferences ───── v1.3.0
#0 24.38    Installed SnoopPrecompile ─ v1.0.3
#0 24.38    Installed TimeZones ─────── v1.9.1
#0 24.48    Installed ExprTools ─────── v0.1.9
#0 24.49    Installed Compat ────────── v4.6.1
#0 29.93     Updating `~/.julia/environments/v1.8/Project.toml`
#0 29.94   [f269a46b] + TimeZones v1.9.1
#0 30.06     Updating `~/.julia/environments/v1.8/Manifest.toml`
#0 30.21   [34da2185] + Compat v4.6.1
#0 30.21   [e2ba6199] + ExprTools v0.1.9
#0 30.21   [842dd82b] + InlineStrings v1.4.0
#0 30.21   [78c3b35d] + Mocking v0.7.6
#0 30.21   [69de0a69] + Parsers v2.5.8
#0 30.21   [21216c6a] + Preferences v1.3.0
#0 30.21   [3cdcf5f2] + RecipesBase v1.3.3
#0 30.21   [6c6a2e73] + Scratch v1.2.0
#0 30.21   [66db9d55] + SnoopPrecompile v1.0.3
#0 30.21   [f269a46b] + TimeZones v1.9.1
#0 30.21   [0dad84c5] + ArgTools v1.1.1
#0 30.21   [56f22d72] + Artifacts
#0 30.21   [2a0f44e3] + Base64
#0 30.22   [ade2ca70] + Dates
#0 30.22   [f43a241f] + Downloads v1.6.0
#0 30.22   [7b1f6079] + FileWatching
#0 30.22   [b77e0a4c] + InteractiveUtils
#0 30.22   [4af54fe1] + LazyArtifacts
#0 30.22   [b27032c2] + LibCURL v0.6.3
#0 30.22   [76f85450] + LibGit2
#0 30.22   [8f399da3] + Libdl
#0 30.22   [37e2e46d] + LinearAlgebra
#0 30.22   [56ddb016] + Logging
#0 30.22   [d6f4376e] + Markdown
#0 30.22   [ca575930] + NetworkOptions v1.2.0
#0 30.22   [44cfe95a] + Pkg v1.8.0
#0 30.22   [de0858da] + Printf
#0 30.22   [3fa0cd96] + REPL
#0 30.22   [9a3f8284] + Random
#0 30.22   [ea8e919c] + SHA v0.7.0
#0 30.22   [9e88b42a] + Serialization
#0 30.22   [6462fe0b] + Sockets
#0 30.22   [fa267f1f] + TOML v1.0.0
#0 30.22   [a4e569a6] + Tar v1.10.1
#0 30.22   [cf7118a7] + UUIDs
#0 30.22   [4ec0a83e] + Unicode
#0 30.22   [e66e0078] + CompilerSupportLibraries_jll v1.0.1+0
#0 30.22   [deac9b47] + LibCURL_jll v7.84.0+0
#0 30.22   [29816b5a] + LibSSH2_jll v1.10.2+0
#0 30.22   [c8ffd9c3] + MbedTLS_jll v2.28.0+0
#0 30.22   [14a3606d] + MozillaCACerts_jll v2022.2.1
#0 30.22   [4536629a] + OpenBLAS_jll v0.3.20+0
#0 30.22   [83775a58] + Zlib_jll v1.2.12+3
#0 30.22   [8e850b90] + libblastrampoline_jll v5.1.1+0
#0 30.22   [8e850ede] + nghttp2_jll v1.48.0+0
#0 30.22   [3f19e933] + p7zip_jll v17.4.0+0
#0 30.59     Building TimeZones → `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/a92ec4466fc6e3dd704e2668b5e7f24add36d242/build.log`
#0 70.89 ERROR: Error building `TimeZones`: 
#0 80.34 
#0 80.34 signal (11): Segmentation fault
#0 80.34 in expression starting at /root/.julia/packages/RecipesBase/z10lo/src/RecipesBase.jl:600
#0 80.34 top-level scope at /root/.julia/packages/SnoopPrecompile/1XXT1/src/SnoopPrecompile.jl:118
#0 80.34 jl_toplevel_eval_flex at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:897
#0 80.34 jl_eval_module_expr at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:203 [inlined]
#0 80.34 jl_toplevel_eval_flex at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:709
#0 80.34 jl_toplevel_eval_flex at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:850
#0 80.34 ijl_toplevel_eval_in at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:965
#0 80.34 eval at ./boot.jl:368 [inlined]
#0 80.34 include_string at ./loading.jl:1428
#0 80.34 _jl_invoke at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
#0 80.34 ijl_apply_generic at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2559
#0 80.34 _include at ./loading.jl:1488
#0 80.34 include at ./Base.jl:419 [inlined]
#0 80.34 include_package_for_output at ./loading.jl:1554
#0 80.34 jfptr_include_package_for_output_30825 at /usr/local/julia/lib/julia/sys.so (unknown line)
#0 80.34 _jl_invoke at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
#0 80.34 ijl_apply_generic at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2559
#0 80.34 jl_apply at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/julia.h:1843 [inlined]
#0 80.34 do_call at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/interpreter.c:126
#0 80.34 eval_value at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/interpreter.c:215
#0 80.34 eval_stmt_value at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/interpreter.c:166 [inlined]
#0 80.34 eval_body at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/interpreter.c:612
#0 80.34 jl_interpret_toplevel_thunk at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/interpreter.c:750
#0 80.34 jl_toplevel_eval_flex at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:906
#0 80.34 jl_toplevel_eval_flex at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:850
#0 80.34 ijl_toplevel_eval_in at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/toplevel.c:965
#0 80.34 eval at ./boot.jl:368 [inlined]
#0 80.34 include_string at ./loading.jl:1428
#0 80.34 include_string at ./loading.jl:1438
#0 80.34 _jl_invoke at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
#0 80.34 ijl_apply_generic at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2559
#0 80.34 exec_options at ./client.jl:301
#0 80.34 _start at ./client.jl:522
#0 80.34 jfptr__start_35761 at /usr/local/julia/lib/julia/sys.so (unknown line)
#0 80.34 _jl_invoke at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
#0 80.34 ijl_apply_generic at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/gf.c:2559
#0 80.34 jl_apply at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/julia.h:1843 [inlined]
#0 80.34 true_main at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/jlapi.c:575
#0 80.34 jl_repl_entrypoint at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/src/jlapi.c:719
#0 80.34 main at /cache/build/default-armageddon-4/julialang/julia-release-1-dot-8/cli/loader_exe.c:59
#0 80.34 __libc_start_main at /lib/aarch64-linux-gnu/libc.so.6 (unknown line)
#0 80.34 _start at /usr/local/julia/bin/julia (unknown line)
#0 80.34 _start at /usr/local/julia/bin/julia (unknown line)
#0 80.34 Allocations: 801941 (Pool: 801613; Big: 328); GC: 1
#0 80.34 ERROR: LoadError: Failed to precompile RecipesBase [3cdcf5f2-1ef4-517c-9805-6587b60abb01] to /root/.julia/compiled/v1.8/RecipesBase/jl_wgHirD.
#0 80.34 Stacktrace:
#0 80.34   [1] error(s::String)
#0 80.34     @ Base ./error.jl:35
#0 80.34   [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
#0 80.34     @ Base ./loading.jl:1707
#0 80.34   [3] compilecache
#0 80.34     @ ./loading.jl:1651 [inlined]
#0 80.34   [4] _require(pkg::Base.PkgId)
#0 80.34     @ Base ./loading.jl:1337
#0 80.34   [5] _require_prelocked(uuidkey::Base.PkgId)
#0 80.34     @ Base ./loading.jl:1200
#0 80.34   [6] macro expansion
#0 80.34     @ ./loading.jl:1180 [inlined]
#0 80.34   [7] macro expansion
#0 80.34     @ ./lock.jl:223 [inlined]
#0 80.34   [8] require(into::Module, mod::Symbol)
#0 80.34     @ Base ./loading.jl:1144
#0 80.34   [9] include
#0 80.34     @ ./Base.jl:419 [inlined]
#0 80.34  [10] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
#0 80.34     @ Base ./loading.jl:1554
#0 80.34  [11] top-level scope
#0 80.34     @ stdin:1
#0 80.34 in expression starting at /root/.julia/packages/TimeZones/V28u7/src/TimeZones.jl:1
#0 80.34 in expression starting at stdin:1
#0 80.34 ERROR: LoadError: Failed to precompile TimeZones [f269a46b-ccf7-5d73-abea-4c690281aa53] to /root/.julia/compiled/v1.8/TimeZones/jl_GYPvVG.
#0 80.34 Stacktrace:
#0 80.34   [1] error(s::String)
#0 80.34     @ Base ./error.jl:35
#0 80.34   [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
#0 80.34     @ Base ./loading.jl:1707
#0 80.34   [3] compilecache
#0 80.34     @ ./loading.jl:1651 [inlined]
#0 80.34   [4] _require(pkg::Base.PkgId)
#0 80.34     @ Base ./loading.jl:1337
#0 80.34   [5] _require_prelocked(uuidkey::Base.PkgId)
#0 80.34     @ Base ./loading.jl:1200
#0 80.34   [6] macro expansion
#0 80.34     @ ./loading.jl:1180 [inlined]
#0 80.34   [7] macro expansion
#0 80.34     @ ./lock.jl:223 [inlined]
#0 80.34   [8] require(into::Module, mod::Symbol)
#0 80.34     @ Base ./loading.jl:1144
#0 80.34   [9] include(fname::String)
#0 80.34     @ Base.MainInclude ./client.jl:476
#0 80.34  [10] top-level scope
#0 80.34     @ none:5
#0 80.34 in expression starting at /root/.julia/packages/TimeZones/V28u7/deps/build.jl:1
#0 80.34 Stacktrace:
#0 80.34   [1] pkgerror(msg::String)
#0 80.70     @ Pkg.Types /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Types.jl:67
#0 80.81   [2] (::Pkg.Operations.var"#66#73"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String})()
#0 80.96     @ Pkg.Operations /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:1060
#0 80.96   [3] withenv(::Pkg.Operations.var"#66#73"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, ::Pair{String, String}, ::Vararg{Pair{String}})
#0 81.46     @ Base ./env.jl:172
#0 81.46   [4] (::Pkg.Operations.var"#107#112"{String, Bool, Bool, Bool, Pkg.Operations.var"#66#73"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.PackageSpec})()
#0 81.46     @ Pkg.Operations /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:1619
#0 81.46   [5] with_temp_env(fn::Pkg.Operations.var"#107#112"{String, Bool, Bool, Bool, Pkg.Operations.var"#66#73"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.PackageSpec}, temp_env::String)
#0 81.46     @ Pkg.Operations /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:1493
#0 81.46   [6] (::Pkg.Operations.var"#105#110"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#66#73"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String})(tmp::String)
#0 81.46     @ Pkg.Operations /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:1582
#0 81.46   [7] mktempdir(fn::Pkg.Operations.var"#105#110"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#66#73"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String}, parent::String; prefix::String)
#0 81.47     @ Base.Filesystem ./file.jl:764
#0 81.47   [8] mktempdir(fn::Function, parent::String) (repeats 2 times)
#0 81.47     @ Base.Filesystem ./file.jl:760
#0 81.47   [9] sandbox(fn::Function, ctx::Pkg.Types.Context, target::Pkg.Types.PackageSpec, target_path::String, sandbox_path::String, sandbox_project_override::Pkg.Types.Project; preferences::Dict{String, Any}, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool)
#0 81.47     @ Pkg.Operations /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:1540
#0 81.48  [10] build_versions(ctx::Pkg.Types.Context, uuids::Set{Base.UUID}; verbose::Bool)
#0 81.48     @ Pkg.Operations /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:1041
#0 81.48  [11] build_versions
#0 81.48     @ /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:956 [inlined]
#0 81.48  [12] add(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, new_git::Set{Base.UUID}; preserve::Pkg.Types.PreserveLevel, platform::Base.BinaryPlatforms.Platform)
#0 81.49     @ Pkg.Operations /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/Operations.jl:1286
#0 81.49  [13] add(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; preserve::Pkg.Types.PreserveLevel, platform::Base.BinaryPlatforms.Platform, kwargs::Base.Pairs{Symbol, Base.PipeEndpoint, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.PipeEndpoint}}})
#0 82.84     @ Pkg.API /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:275
#0 82.85  [14] add(pkgs::Vector{Pkg.Types.PackageSpec}; io::Base.PipeEndpoint, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
#0 82.98     @ Pkg.API /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:156
#0 82.98  [15] add(pkgs::Vector{Pkg.Types.PackageSpec})
#0 82.99     @ Pkg.API /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:145
#0 82.99  [16] #add#27
#0 82.99     @ /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:144 [inlined]
#0 82.99  [17] add
#0 82.99     @ /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:144 [inlined]
#0 82.99  [18] #add#26
#0 82.99     @ /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:143 [inlined]
#0 82.99  [19] add(pkg::String)
#0 82.99     @ Pkg.API /usr/local/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:143
#0 82.99  [20] top-level scope
#0 82.99     @ none:1
------
Dockerfile:2
--------------------
   1 |     FROM julia:1.8 AS usersetup
   2 | >>> RUN julia -e 'import Pkg; Pkg.add("TimeZones")'
--------------------
ERROR: failed to solve: process "/bin/sh -c julia -e 'import Pkg; Pkg.add(\"TimeZones\")'" did not complete successfully: exit code: 1

The same happens when using julia:1.9-rc2


I am really astonished, that julia's ARM support is that restricted. I really would like to recommend Julia for ARM processing, hence let me ask the question: What do you think how long does it take to solve this bug so that people can cross-compile julia from their laptop to arm64?

@gbaraldi
Copy link
Member

JITting on aarch64-linux has a specific segfault because we aren't using JITLink on it just yet, when the upgrade to LLVM 15 we will turn on JITLink and hopefully it makes it more reliable.
I'm not sure if what you are seeing is that because I haven't tested the specific QEMU case, but we do run aarch64-linux CI.

Because of the bug I just described aarch64-linux is a tier 2 platform currently.

@schlichtanders
Copy link
Author

Thank you very much for the answer. A specific followup question regarding this problem:
If I get my julia compiled for arm64, would then running Pkg.add(...) inside this arm64 machine usually work or not?

@gbaraldi
Copy link
Member

It should just work as expected, no need to cross compile anything. If the machine is low powered precompilation might take a while. Just download the official binaries and use them

@inkydragon inkydragon added building Build system, or building Julia or its dependencies system:arm ARMv7 and AArch64 labels May 1, 2023
@minecraft2048
Copy link

I just encountered this bug: https://discourse.julialang.org/t/julia-1-9-on-qemu-aarch64-docker-segfaults-whille-importing-unitful/98711

If this is related with JITLink problem than this hopefully helps: #45859

@minecraft2048
Copy link

I've confirmed that #49745 makes Unitful compile:

byakuya@ifrit-hpc ~> podman run -ti --net=host --arch=arm64 --volume=./julia_arm64:/workdir ubuntu
root@ifrit-hpc:/# cd /workdir/
root@ifrit-hpc:/workdir# ls 
julia-1.9.0  julia-946a7572d2
root@ifrit-hpc:/workdir# cd julia-946a7572d2/
root@ifrit-hpc:/workdir/julia-946a7572d2# cd bin/
root@ifrit-hpc:/workdir/julia-946a7572d2/bin# ls
julia
root@ifrit-hpc:/workdir/julia-946a7572d2/bin# ./julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.10.0-DEV.1275 (2023-05-11)
 _/ |\__'_|_|_|\__'_|  |  giordano:mg/sunho-jitlinkk/946a7572d29 (fork: 4 commits, 4 days)
|__/                   |

(@v1.10) pkg> add Unitful
  Installing known registries into `~/.julia`
    Updating registry at `~/.julia/registries/General.toml`
   Resolving package versions...
   Installed ConstructionBase ─ v1.5.2
   Installed Unitful ────────── v1.14.0
    Updating `~/.julia/environments/v1.10/Project.toml`
  [1986cc42] + Unitful v1.14.0
    Updating `~/.julia/environments/v1.10/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
  [4ec0a83e] + Unicode
  [e66e0078] + CompilerSupportLibraries_jll v1.0.2+0
  [4536629a] + OpenBLAS_jll v0.3.23+0
  [8e850b90] + libblastrampoline_jll v5.8.0+0
Precompiling project...
  2 dependencies successfully precompiled in 144 seconds

(@v1.10) pkg> 

@giordano
Copy link
Contributor

@schlichtanders can you please test on master now that #49745 has been merged? But above messages are already encouraging.

@gerlero
Copy link

gerlero commented Dec 8, 2023

I can confirm that this problem still persists on GitHub Actions (in my test the runner ran out of disk space and the build was killed)

@giordano
Copy link
Contributor

giordano commented Dec 8, 2023

  1. What version of Julia are you using?
  2. How's disk usage related to the problem reported above?

@gerlero
Copy link

gerlero commented Dec 8, 2023

  1. What version of Julia are you using?

1.9.4 (via julia:1.9 official Docker image)

  1. How's disk usage related to the problem reported above?

Not 100% sure but it is overfilling the disk during precompilation so I'm pretty confident it's related to this one. Back in August when I last tested, this bug used to manifest as a segfault during precompilation.

@gerlero
Copy link

gerlero commented Dec 8, 2023

Sorry @giordano, I somehow missed the fact that this fix isn't part of Julia 1.9. Testing with Julia 1.10 RC instead, arm64 Docker builds on amd64 seem to work fine without segfaults or disk space errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
building Build system, or building Julia or its dependencies system:arm ARMv7 and AArch64
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants