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

Chairmarks segfaults on 1.12 #57018

Open
LilithHafner opened this issue Jan 10, 2025 · 1 comment
Open

Chairmarks segfaults on 1.12 #57018

LilithHafner opened this issue Jan 10, 2025 · 1 comment
Assignees
Labels
GC Garbage collector regression 1.12 Regression in the 1.12 release
Milestone

Comments

@LilithHafner
Copy link
Member

On 1.11, Chairmarks works fine. On 1.12, it segfaults. The strings "@inbounds" and "unsafe" do not appear in the src directory and I don't do anything particularly internal that I know of. IMO, the funkeyest code is here: https://github.com/LilithHafner/Chairmarks.jl/blob/80e84d0ba90fcac61959d1f992e034f5445bf4cd/src/benchmarking.jl#L115-L165.

Tagging GC at a guess because it appears in the segfault stack trace, but it could certianly be due to a non-gc issue.

MWE:

x@x:~/.julia/dev/Chairmarks$ julia +nightly
A new `nightly` version is available. Install with `juliaup update`.
  o  | Version 1.12.0-DEV.1825 (2025-01-02)
 o o | Commit ed2cb490505 (8 days old master)
julia> x = @be rand;

julia> typeof(x)

[49190] signal 11 (1): Segmentation fault
in expression starting at REPL[2]:1
gc_mark_outrefs at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:2262 [inlined]
gc_mark_loop_serial_ at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:2427
gc_mark_loop_serial at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:2450
gc_mark_loop at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:2638 [inlined]
_jl_gc_collect at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:2981
ijl_gc_collect at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:3369
maybe_collect at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:349 [inlined]
jl_gc_small_alloc_inner at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:722 [inlined]
jl_gc_small_alloc_noinline at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:780 [inlined]
jl_gc_alloc_ at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gc-stock.c:794
jl_alloc_genericmemory_unchecked at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/genericmemory.c:41
_new_genericmemory_ at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/genericmemory.c:68 [inlined]
jl_alloc_genericmemory at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/genericmemory.c:101
new_array at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/array.c:84 [inlined]
ijl_alloc_array_1d at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/array.c:149
ijl_uncompress_ir at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/ircode.c:1143
_uncompressed_ir at ./runtime_internals.jl:1402
retrieve_ir_for_inlining at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:955 [inlined]
resolve_todo at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:870
#analyze_method!#180 at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:951
analyze_method! at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:918 [inlined]
#handle_match!#183 at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:1413
handle_match! at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:1405 [inlined]
#handle_any_const_result!#181 at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:1306
handle_any_const_result! at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:1294 [inlined]
compute_inlining_cases at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:1366
handle_call! at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:1398 [inlined]
assemble_inline_todo! at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:1648
ssa_inlining_pass! at ./../usr/share/julia/Compiler/src/ssair/inlining.jl:76 [inlined]
run_passes_ipo_safe at ./../usr/share/julia/Compiler/src/optimize.jl:1013
run_passes_ipo_safe at ./../usr/share/julia/Compiler/src/optimize.jl:1027 [inlined]
optimize at ./../usr/share/julia/Compiler/src/optimize.jl:1002
jfptr_optimize_116330.3 at /home/x/.julia/juliaup/julia-nightly/lib/julia/sys.so (unknown line)
finish_nocycle at ./../usr/share/julia/Compiler/src/typeinfer.jl:180
jfptr_finish_nocycle_117313.3 at /home/x/.julia/juliaup/julia-nightly/lib/julia/sys.so (unknown line)
typeinf at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:4232
const_prop_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:1359
abstract_call_method_with_const_args at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:909
abstract_call_method_with_const_args at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:879 [inlined]
handle1 at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:178
infercalls at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:251
abstract_call_gf_by_type at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:344
abstract_call_known at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:2757
abstract_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:2862
abstract_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:2855 [inlined]
abstract_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:3014
abstract_eval_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:3032 [inlined]
abstract_eval_statement_expr at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:3289
typeinf_local at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:4036
jfptr_typeinf_local_117330.3 at /home/x/.julia/juliaup/julia-nightly/lib/julia/sys.so (unknown line)
typeinf at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:4228
const_prop_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:1359
abstract_call_method_with_const_args at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:909
abstract_call_method_with_const_args at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:879 [inlined]
handle1 at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:178
infercalls at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:251
abstract_call_gf_by_type at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:344
abstract_call_known at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:2757
abstract_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:2862
abstract_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:2855 [inlined]
abstract_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:3014
abstract_eval_call at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:3032 [inlined]
abstract_eval_statement_expr at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:3289
typeinf_local at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:4036
jfptr_typeinf_local_117330.3 at /home/x/.julia/juliaup/julia-nightly/lib/julia/sys.so (unknown line)
typeinf at ./../usr/share/julia/Compiler/src/abstractinterpretation.jl:4228
typeinf_ext at ./../usr/share/julia/Compiler/src/typeinfer.jl:1127
typeinf_ext_toplevel at ./../usr/share/julia/Compiler/src/typeinfer.jl:1201
jfptr_typeinf_ext_toplevel_117256.3 at /home/x/.julia/juliaup/julia-nightly/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/julia.h:2246 [inlined]
jl_type_infer at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gf.c:452
jl_compile_method_internal at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gf.c:2942
_jl_invoke at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gf.c:3436 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/gf.c:3644
show_repl at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:575
show_limited at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:544
#display##0 at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:567
jfptr_YY.displayYY.YY.0_26105.3 at /home/x/.julia/juliaup/julia-nightly/share/julia/compiled/v1.12/REPL/u0gqU_ghSzr.so (unknown line)
with_repl_linfo at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:868
jfptr_with_repl_linfo_25823.3 at /home/x/.julia/juliaup/julia-nightly/share/julia/compiled/v1.12/REPL/u0gqU_ghSzr.so (unknown line)
display at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:553
display at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:573 [inlined]
display at ./multimedia.jl:340
unknown function (ip: 0xffff8c14432f) at (unknown file)
jl_apply at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/julia.h:2246 [inlined]
jl_f__call_latest at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/builtins.c:883
#invokelatest#1 at ./essentials.jl:1056 [inlined]
invokelatest at ./essentials.jl:1052 [inlined]
print_response at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:0
#print_response##0 at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:585
jfptr_YY.print_responseYY.YY.0_26100.3 at /home/x/.julia/juliaup/julia-nightly/share/julia/compiled/v1.12/REPL/u0gqU_ghSzr.so (unknown line)
with_repl_linfo at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:868
jfptr_with_repl_linfo_25823.3 at /home/x/.julia/juliaup/julia-nightly/share/julia/compiled/v1.12/REPL/u0gqU_ghSzr.so (unknown line)
print_response at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:583
do_respond at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:1210
jfptr_do_respond_25890.3 at /home/x/.julia/juliaup/julia-nightly/share/julia/compiled/v1.12/REPL/u0gqU_ghSzr.so (unknown line)
jl_apply at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/julia.h:2246 [inlined]
jl_f__call_latest at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/builtins.c:883
#invokelatest#1 at ./essentials.jl:1056 [inlined]
invokelatest at ./essentials.jl:1052 [inlined]
run_interface at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/LineEdit.jl:2800
run_frontend at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:1681
#59 at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/usr/share/julia/stdlib/v1.12/REPL/src/REPL.jl:687
jfptr_YY.59_26074.3 at /home/x/.julia/juliaup/julia-nightly/share/julia/compiled/v1.12/REPL/u0gqU_ghSzr.so (unknown line)
jl_apply at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/julia.h:2246 [inlined]
start_task at /cache/build/default-aws-aarch64-ci-1-3/julialang/julia-master/src/task.c:1281
Allocations: 2081014 (Pool: 2080763; Big: 251); GC: 2
Segmentation fault (core dumped)
@nsajko
Copy link
Contributor

nsajko commented Jan 10, 2025

With multiple threads and an assert build on 3d85309 (the assertions only seem to trigger when Julia is started with multiple threads):

julia> using Chairmarks

julia> x = @be rand;

julia> typeof(x)

[115080] signal 11 (1): Segmentation fault
in expression starting at REPL[3]:1
julia: /cache/build/builder-demeter6-3/julialang/julia-master/src/gc-stock.h:437: gc_check_ptls_of_parallel_collector_thread: Assertion `__extension__ ({ __auto_type __atomic_load_ptr = (&ptls->gc_state); __typeof__ (*__atomic_load_ptr) __atomic_load_tmp; __atomic_load (__atomic_load_ptr, &__atomic_load_tmp, (memory_order_relaxed)); __atomic_load_tmp; }) == 3' failed.
julia: /cache/build/builder-demeter6-3/julialang/julia-master/src/gc-stock.h:437: gc_check_ptls_of_parallel_collector_thread: Assertion `__extension__ ({ __auto_type __atomic_load_ptr = (&ptls->gc_state); __typeof__ (*__atomic_load_ptr) __atomic_load_tmp; __atomic_load (__atomic_load_ptr, &__atomic_load_tmp, (memory_order_relaxed)); __atomic_load_tmp; }) == 3' failed.
julia: /cache/build/builder-demeter6-3/julialang/julia-master/src/gc-stock.h:437: gc_check_ptls_of_parallel_collector_thread: Assertion `__extension__ ({ __auto_type __atomic_load_ptr = (&ptls->gc_state); __typeof__ (*__atomic_load_ptr) __atomic_load_tmp; __atomic_load (__atomic_load_ptr, &__atomic_load_tmp, (memory_order_relaxed)); __atomic_load_tmp; }) == 3' failed.
julia: /cache/build/builder-demeter6-3/julialang/julia-master/src/gc-stock.h:437: gc_check_ptls_of_parallel_collector_thread: Assertion `__extension__ ({ __auto_type __atomic_load_ptr = (&ptls->gc_state); __typeof__ (*__atomic_load_ptr) __atomic_load_tmp; __atomic_load (__atomic_load_ptr, &__atomic_load_tmp, (memory_order_relaxed)); __atomic_load_tmp; }) == 3' failed.

[115080] signal 6 (-6): Aborted
in expression starting at REPL[3]:1
julia: /cache/build/builder-demeter6-3/julialang/julia-master/src/gc-stock.h:437: gc_check_ptls_of_parallel_collector_thread: Assertion `__extension__ ({ __auto_type __atomic_load_ptr = (&ptls->gc_state); __typeof__ (*__atomic_load_ptr) __atomic_load_tmp; __atomic_load (__atomic_load_ptr, &__atomic_load_tmp, (memory_order_relaxed)); __atomic_load_tmp; }) == 3' failed.
Aborted (core dumped)

@d-netto d-netto self-assigned this Jan 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
GC Garbage collector regression 1.12 Regression in the 1.12 release
Projects
None yet
Development

No branches or pull requests

3 participants