Open Seelengrab opened 1 month ago
On 1.10.0, this just segfaults for me. I will update later.
julia> versioninfo()
Julia Version 1.10.0
Commit 3120989f39b (2023-12-25 18:01 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (aarch64-linux-gnu)
CPU: 6 × Cortex-A55
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-15.0.7 (ORCJIT, cortex-a55)
Threads: 1 on 8 virtual cores
julia> t = Tuple(zeros(Int32, 1024*1024*4));
julia> convert(NTuple{1024*1024*4,UInt32}, t);
[15216] signal (11.1): Segmentation fault
in expression starting at REPL[2]:1
convert at ./essentials.jl:452
unknown function (ip: 0x746795e24b)
Allocations: 81932270 (Pool: 81932156; Big: 114); GC: 20
Segmentation fault
1.10.1 doesn't segfault for me but I still get the stackoverflow. This suggests to me that this is some canary/return address being overwritten by accident, resulting in an empty stacktrace. I'll see if I can get an rr trace.
Notably, printing a large struct containing such a tuple can work, so this suggests to me some more intricate problem:
julia> mutable struct LargeStruct
size::UInt32
data::NTuple{1024*1024*4,UInt32}
end
julia> a = LargeStruct(1024*1024*4,Tuple(zeros(UInt32, 1024*1024*4)));
julia> show(stdout, a)
LargeStruct(0x00400000, (0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 [...]
(printing abbreviated here for obvious reasons)
MWE, since at least 1.8.5 (reproduces on master):
As observed here.