JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
45.6k stars 5.48k forks source link

Segfault during OIFITS test suite #52951

Closed nsajko closed 9 months ago

nsajko commented 9 months ago

I get a segfault each time I run test OIFITS. I don't actually use that package, I just stumbled upon this while investigating the Nanosoldier report for #35293.

Version info:

Julia Version 1.11.0-DEV.1284
Commit 3ed49fdb3a9 (2024-01-17 06:57 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 8 × AMD Ryzen 3 5300U with Radeon Graphics
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, znver2)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Environment:
  JULIA_NUM_PRECOMPILE_TASKS = 3
  JULIA_PKG_PRECOMPILE_AUTO = 0
julia> include("/home/nsajko/.julia/packages/OIFITS/xLmZw/test/runtests.jl");
tempfile = "/tmp/jl_nnuhjG"
Test Summary: | Pass  Total  Time
Strings       |   16     16  0.2s
Test Summary:                        | Pass  Total  Time
OI-FITS type definitions and formats |  597    597  0.2s

[274948] signal 11 (1): Segmentation fault
in expression starting at /home/nsajko/.julia/packages/OIFITS/xLmZw/test/runtests.jl:121
jl_gc_pool_alloc_inner at /cache/build/builder-amdci4-6/julialang/julia-master/src/gc.c:1329
jl_gc_pool_alloc_noinline at /cache/build/builder-amdci4-6/julialang/julia-master/src/gc.c:1386 [inlined]
jl_gc_alloc_ at /cache/build/builder-amdci4-6/julialang/julia-master/src/julia_internal.h:504 [inlined]
jl_gc_alloc at /cache/build/builder-amdci4-6/julialang/julia-master/src/gc.c:3867
_new_genericmemory_ at /cache/build/builder-amdci4-6/julialang/julia-master/src/genericmemory.c:80 [inlined]
jl_alloc_genericmemory at /cache/build/builder-amdci4-6/julialang/julia-master/src/genericmemory.c:123
new_array at /cache/build/builder-amdci4-6/julialang/julia-master/src/array.c:89 [inlined]
ijl_alloc_array_1d at /cache/build/builder-amdci4-6/julialang/julia-master/src/array.c:167
ijl_uncompress_argnames at /cache/build/builder-amdci4-6/julialang/julia-master/src/ircode.c:1091
ijl_uncompress_ir at /cache/build/builder-amdci4-6/julialang/julia-master/src/ircode.c:952
_uncompressed_ir at ./reflection.jl:1311 [inlined]
retrieve_code_info at ./compiler/utilities.jl:143 [inlined]
InferenceState at ./compiler/inferencestate.jl:480
InferenceState at ./compiler/inferencestate.jl:485 [inlined]
typeinf_ext at ./compiler/typeinfer.jl:1040
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1080
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1076
jfptr_typeinf_ext_toplevel_35663.1 at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-master/src/julia.h:2153 [inlined]
jl_type_infer at /cache/build/builder-amdci4-6/julialang/julia-master/src/gf.c:387
jl_generate_fptr_impl at /cache/build/builder-amdci4-6/julialang/julia-master/src/jitlayers.cpp:508
jl_compile_method_internal at /cache/build/builder-amdci4-6/julialang/julia-master/src/gf.c:2494 [inlined]
jl_compile_method_internal at /cache/build/builder-amdci4-6/julialang/julia-master/src/gf.c:2382
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-master/src/gf.c:2897 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-master/src/gf.c:3082
#_read#55 at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:381
_read at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:375 [inlined]
#_read!#54 at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:352
_read! at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:341 [inlined]
#read#30 at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:295
read at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:289 [inlined]
#28 at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:283 [inlined]
#FITS#4 at /home/nsajko/.julia/packages/FITSIO/ggf1s/src/FITSIO.jl:209
FITS at /home/nsajko/.julia/packages/FITSIO/ggf1s/src/FITSIO.jl:206 [inlined]
#read#27 at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:281 [inlined]
read at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:281 [inlined]
#OIDataSet#25 at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:273 [inlined]
OIDataSet at /home/nsajko/.julia/packages/OIFITS/xLmZw/src/io.jl:273
unknown function (ip: 0x7f9c721314bc)
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-master/src/julia.h:2153 [inlined]
do_call at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:126
eval_value at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:223
eval_body at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:560
eval_body at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:539
eval_body at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:539
jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:815
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:941
jl_eval_module_expr at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:215 [inlined]
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:741
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:884
ijl_toplevel_eval_in at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:992
eval at ./boot.jl:428 [inlined]
include_string at ./loading.jl:2241
_include at ./loading.jl:2301
include at ./sysimg.jl:38
unknown function (ip: 0x7f9c721001e2)
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-master/src/julia.h:2153 [inlined]
do_call at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:126
eval_value at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:223
eval_stmt_value at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:174 [inlined]
eval_body at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:675
jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-6/julialang/julia-master/src/interpreter.c:815
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:941
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:884
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:884
ijl_toplevel_eval_in at /cache/build/builder-amdci4-6/julialang/julia-master/src/toplevel.c:992
eval at ./boot.jl:428 [inlined]
eval_user_input at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/share/julia/stdlib/v1.11/REPL/src/REPL.jl:154
repl_backend_loop at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/share/julia/stdlib/v1.11/REPL/src/REPL.jl:250
#start_repl_backend#48 at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/share/julia/stdlib/v1.11/REPL/src/REPL.jl:235
start_repl_backend at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/share/julia/stdlib/v1.11/REPL/src/REPL.jl:232
#run_repl#61 at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/share/julia/stdlib/v1.11/REPL/src/REPL.jl:391
run_repl at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/share/julia/stdlib/v1.11/REPL/src/REPL.jl:377
jfptr_run_repl_12734 at /home/nsajko/.julia/compiled/v1.11/REPL/u0gqU_f14Yn.so (unknown line)
#1096 at ./client.jl:440
jfptr_YY.1096_16827 at /home/nsajko/.julia/compiled/v1.11/REPL/u0gqU_f14Yn.so (unknown line)
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-master/src/julia.h:2153 [inlined]
jl_f__call_latest at /cache/build/builder-amdci4-6/julialang/julia-master/src/builtins.c:875
#invokelatest#2 at ./essentials.jl:955 [inlined]
invokelatest at ./essentials.jl:952 [inlined]
run_main_repl at ./client.jl:424
repl_main at ./client.jl:561 [inlined]
_start at ./client.jl:535
jfptr__start_65274.1 at /home/nsajko/tmp/jl/jl/julia-3ed49fdb3a/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-master/src/julia.h:2153 [inlined]
true_main at /cache/build/builder-amdci4-6/julialang/julia-master/src/jlapi.c:947
jl_repl_entrypoint at /cache/build/builder-amdci4-6/julialang/julia-master/src/jlapi.c:1106
main at /cache/build/builder-amdci4-6/julialang/julia-master/cli/loader_exe.c:58
unknown function (ip: 0x7f9c79406ccf)
__libc_start_main at /usr/lib/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8)
Allocations: 6265461 (Pool: 6265269; Big: 192); GC: 7
Segmentation fault (core dumped)

cc package author @emmt

maleadt commented 9 months ago

This is GC corruption that's very likely caused by OIFITS/FITSIO.jl itself doing something bad: There's lots of calls to pointer in FITSIO.jl's parsing routines, and none to GC.@preserve, which is asking for trouble.