Closed
Description
My SHA
upgrade PR is segfaulting on linux32 when assertions are enabled. The minimal reproducer is:
deepcopy(ntuple((i) -> 0x61, 1000000))
which occurs within the new SHA test script. It also appears this only happens on builds with assertions turned on. For instance, if I download a recent master
build for linux32, it doesn't break:
$ rm -rf julia-9564bfbd6c/
$ curl -L 'https://s3.amazonaws.com/julialangnightlies/pretesting/linux/x86/1.8/julia-9564bfbd6c-linux32.tar.gz' | tar zx
$ ./julia-9564bfbd6c/bin/julia -e 'deepcopy(ntuple((i) -> 0x61, 1000000))'
$
However, if I just change that to assert_pretesting
, to get the build with LLVM_ASSERTIONS=1 FORCE_ASSERTIONS=1
, I suddenly get segfaults:
$ rm -rf julia-9564bfbd6c/
$ curl -L 'https://s3.amazonaws.com/julialangnightlies/assert_pretesting/linux/x86/1.8/julia-9564bfbd6c-linux32.tar.gz' | tar zx
$ ./julia-9564bfbd6c/bin/julia -e 'deepcopy(ntuple((i) -> 0x61, 1000000))'
signal (11): Segmentation fault
in expression starting at none:1
verify_type at /buildworker/worker/package_linux32/build/src/gf.c:2214 [inlined]
_jl_invoke at /buildworker/worker/package_linux32/build/src/gf.c:2246 [inlined]
jl_apply_generic at /buildworker/worker/package_linux32/build/src/gf.c:2427
jl_apply at /buildworker/worker/package_linux32/build/src/julia.h:1787 [inlined]
do_call at /buildworker/worker/package_linux32/build/src/interpreter.c:125
eval_value at /buildworker/worker/package_linux32/build/src/interpreter.c:214
eval_stmt_value at /buildworker/worker/package_linux32/build/src/interpreter.c:165 [inlined]
eval_body at /buildworker/worker/package_linux32/build/src/interpreter.c:597
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux32/build/src/interpreter.c:727
jl_toplevel_eval_flex at /buildworker/worker/package_linux32/build/src/toplevel.c:885
jl_toplevel_eval_flex at /buildworker/worker/package_linux32/build/src/toplevel.c:830
jl_toplevel_eval at /buildworker/worker/package_linux32/build/src/toplevel.c:894
jl_toplevel_eval_in at /buildworker/worker/package_linux32/build/src/toplevel.c:944
eval at ./boot.jl:373 [inlined]
exec_options at ./client.jl:268
_start at ./client.jl:495
jfptr__start_37152.clone_1 at /tmp/broken_julia/julia-9564bfbd6c/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux32/build/src/gf.c:2226 [inlined]
jl_apply_generic at /buildworker/worker/package_linux32/build/src/gf.c:2427
jl_apply at /buildworker/worker/package_linux32/build/src/julia.h:1787 [inlined]
true_main at /buildworker/worker/package_linux32/build/src/jlapi.c:559
jl_repl_entrypoint at /buildworker/worker/package_linux32/build/src/jlapi.c:701
main at /buildworker/worker/package_linux32/build/cli/loader_exe.c:42
__libc_start_main at /lib32/libc.so.6 (unknown line)
_start at ./julia-9564bfbd6c/bin/julia (unknown line)
Allocations: 100373 (Pool: 100343; Big: 30); GC: 1
Segmentation fault (core dumped)
Note that 9564bfb is the commit that my PR is based on top of, so the issue exists within Base julia already, it's just that the SHA test suite changes in that PR, and whatever code path it took previously did not trigger this issue.