timholy / Revise.jl

Automatically update function definitions in a running Julia session
https://timholy.github.io/Revise.jl/stable
Other
1.21k stars 110 forks source link

Segfault when revising package #675

Closed fingolfin closed 2 years ago

fingolfin commented 2 years ago

This looks similar to the error in #674 but since it does not occur during loading, but rather when revising, I am not 100% sure they are the same, so I am opening a separate issue for now.

The crash occurs when revising https://github.com/oscar-system/Oscar.jl. Some complicating factors

Here is a sample session:

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.8.0-beta1 (2022-02-23)
 _/ |\__'_|_|_|\__'_|  |
|__/                   |

julia> versioninfo()
Julia Version 1.8.0-beta1
Commit 7b711ce699 (2022-02-23 15:09 UTC)
Platform Info:
  OS: macOS (arm64-apple-darwin21.3.0)
  CPU: 10 × Apple M1 Max
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, apple-m1)
  Threads: 1 on 8 virtual cores

(1.8) pkg> status
Status `~/Projekte/OSCAR/Oscar.jl/p/1.8/Project.toml`
  [f1435218] Oscar v0.8.2-DEV `../..`
  [295af30f] Revise v3.3.2

julia> using Revise, Oscar
 -----    -----    -----      -      -----
|     |  |     |  |     |    | |    |     |
|     |  |        |         |   |   |     |
|     |   -----   |        |     |  |-----
|     |        |  |        |-----|  |   |
|     |  |     |  |     |  |     |  |    |
 -----    -----    -----   -     -  -     -

...combining (and extending) ANTIC, GAP, Polymake and Singular
Version 0.8.2-DEV ...
 ... which comes with absolutely no warranty whatsoever
Type: '?Oscar' for more information
(c) 2019-2022 by The Oscar Development Team

julia>

# now edit Oscar -- say, insert an empty line somewhere

julia> 1+1  # just do something to trigger Revise

signal (11): Segmentation fault: 11
in expression starting at none:1
jl_typemap_level_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:1026
jl_typemap_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia_internal.h:1320 [inlined]
jl_typemap_level_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:1027
jl_typemap_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia_internal.h:1320 [inlined]
jl_lookup_generic_ at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2462 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2518
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1825 [inlined]
do_call at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:126
eval_body at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:0
jl_interpret_toplevel_thunk at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:750
jl_toplevel_eval_flex at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:906
ijl_toplevel_eval at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:915 [inlined]
ijl_toplevel_eval_in at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
do_assignment! at /Users/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/interpret.jl:349
unknown function (ip: 0x2ee0c2557)
step_expr! at /Users/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/interpret.jl:465
unknown function (ip: 0x2ee0c261b)
unknown function (ip: 0x2ee0c277b)
step_expr! at /Users/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/interpret.jl:508
#methods_by_execution!#24 at /Users/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:434
unknown function (ip: 0x2ee17643f)
unknown function (ip: 0x2cc0ca927)
unknown function (ip: 0x2cc0ca623)
methods_by_execution!##kw at /Users/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:239 [inlined]
#methods_by_execution!#20 at /Users/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:217
methods_by_execution!##kw at /Users/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:175 [inlined]
#eval_with_signatures#90 at /Users/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:464 [inlined]
eval_with_signatures##kw at /Users/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:462 [inlined]
#instantiate_sigs!#91 at /Users/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:472
instantiate_sigs! at /Users/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:469 [inlined]
maybe_extract_sigs! at /Users/mhorn/.julia/packages/Revise/wjNpr/src/pkgs.jl:141 [inlined]
handle_deletions at /Users/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:641
#revise#96 at /Users/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:747
revise at /Users/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:735
unknown function (ip: 0x2cc1b801b)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1825 [inlined]
jl_f__call_latest at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/builtins.c:769
#invokelatest#2 at ./essentials.jl:729 [inlined]
invokelatest at ./essentials.jl:727
unknown function (ip: 0x106d58033)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1825 [inlined]
do_call at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:126
eval_body at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:0
jl_interpret_toplevel_thunk at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:750
jl_toplevel_eval_flex at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:906
jl_toplevel_eval_flex at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:850
ijl_toplevel_eval at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:915 [inlined]
ijl_toplevel_eval_in at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
eval_user_input at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:151
repl_backend_loop at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:247
start_repl_backend at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:232
#run_repl#47 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:369
run_repl at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:356
jfptr_run_repl_63033 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.dylib (unknown line)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
#960 at ./client.jl:419
jfptr_YY.960_44278 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.dylib (unknown line)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1825 [inlined]
jl_f__call_latest at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/builtins.c:769
#invokelatest#2 at ./essentials.jl:729 [inlined]
invokelatest at ./essentials.jl:727 [inlined]
run_main_repl at ./client.jl:404
exec_options at ./client.jl:318
_start at ./client.jl:522
jfptr__start_48446 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.dylib (unknown line)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1825 [inlined]
true_main at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/jlapi.c:562
jl_repl_entrypoint at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/jlapi.c:706
Allocations: 48254739 (Pool: 48202239; Big: 52500); GC: 21
$

I'll try and see if I can reproduce it on an x86_64 Linux.

fingolfin commented 2 years ago

OK I can also reproduce it on x86_64 Linux:

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.8.0-beta1 (2022-02-23)
 _/ |\__'_|_|_|\__'_|  |
|__/                   |

julia> versioninfo()
Julia Version 1.8.0-beta1
Commit 7b711ce699 (2022-02-23 15:09 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 8 × Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, sandybridge)
  Threads: 1 on 8 virtual cores

(1.8) pkg> status
Status `~/Projekte/OSCAR/Oscar.jl/p/1.8/Project.toml`
  [f1435218] Oscar v0.8.2-DEV `../..`
  [295af30f] Revise v3.3.2

julia> using Revise, Oscar
 -----    -----    -----      -      -----
|     |  |     |  |     |    | |    |     |
|     |  |        |         |   |   |     |
|     |   -----   |        |     |  |-----
|     |        |  |        |-----|  |   |
|     |  |     |  |     |  |     |  |    |
 -----    -----    -----   -     -  -     -

...combining (and extending) ANTIC, GAP, Polymake and Singular
Version 0.8.2-DEV ...
 ... which comes with absolutely no warranty whatsoever
Type: '?Oscar' for more information
(c) 2019-2022 by The Oscar Development Team

# ... insert an empty line ...

julia> 1+1 # trigger Revise

signal (11): Segmentation fault
in expression starting at none:1
mtcache_hash_lookup at /home/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:292 [inlined]
mtcache_hash_lookup at /home/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:288 [inlined]
jl_typemap_level_assoc_exact at /home/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:1025
jl_typemap_assoc_exact at /home/mhorn/Projekte/Julia/julia.release-1.8/src/julia_internal.h:1320 [inlined]
jl_typemap_level_assoc_exact at /home/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:1027
jl_typemap_assoc_exact at /home/mhorn/Projekte/Julia/julia.release-1.8/src/julia_internal.h:1320 [inlined]
jl_lookup_generic_ at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2462 [inlined]
ijl_apply_generic at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2518
jl_apply at /home/mhorn/Projekte/Julia/julia.release-1.8/src/julia.h:1825 [inlined]
do_call at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:126
eval_value at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:215
eval_stmt_value at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:166 [inlined]
eval_body at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:612
jl_interpret_toplevel_thunk at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:750
jl_toplevel_eval_flex at /home/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:906
ijl_toplevel_eval_in at /home/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
do_assignment! at /home/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/interpret.jl:349
step_expr! at /home/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/interpret.jl:465
step_expr! at /home/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/interpret.jl:589
finish! at /home/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/commands.jl:14
step_expr! at /home/mhorn/.julia/packages/JuliaInterpreter/wCcib/src/interpret.jl:508
step_through_methoddef at /home/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:84
signature at /home/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:45
unknown function (ip: 0x7f605b41c914)
_jl_invoke at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2340 [inlined]
ijl_apply_generic at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
#methoddef!#7 at /home/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:493
methoddef!##kw at /home/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:445 [inlined]
#methods_by_execution!#24 at /home/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:272
unknown function (ip: 0x7f605b42e00e)
unknown function (ip: 0x7f605b3cdab9)
unknown function (ip: 0x7f605b3cd746)
methods_by_execution!##kw at /home/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:239 [inlined]
#methods_by_execution!#20 at /home/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:217
methods_by_execution!##kw at /home/mhorn/.julia/packages/Revise/wjNpr/src/lowered.jl:175 [inlined]
#eval_with_signatures#90 at /home/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:464 [inlined]
eval_with_signatures##kw at /home/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:462 [inlined]
#instantiate_sigs!#91 at /home/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:472
instantiate_sigs! at /home/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:469 [inlined]
maybe_extract_sigs! at /home/mhorn/.julia/packages/Revise/wjNpr/src/pkgs.jl:141 [inlined]
handle_deletions at /home/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:641
#revise#96 at /home/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:747
revise at /home/mhorn/.julia/packages/Revise/wjNpr/src/packagedef.jl:735
unknown function (ip: 0x7f605b3e083f)
_jl_invoke at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2340 [inlined]
ijl_apply_generic at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /home/mhorn/Projekte/Julia/julia.release-1.8/src/julia.h:1825 [inlined]
jl_f__call_latest at /home/mhorn/Projekte/Julia/julia.release-1.8/src/builtins.c:769
#invokelatest#2 at ./essentials.jl:729 [inlined]
invokelatest at ./essentials.jl:727
unknown function (ip: 0x7f605b354d12)
_jl_invoke at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2340 [inlined]
ijl_apply_generic at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /home/mhorn/Projekte/Julia/julia.release-1.8/src/julia.h:1825 [inlined]
do_call at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:126
eval_value at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:215
eval_stmt_value at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:166 [inlined]
eval_body at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:612
jl_interpret_toplevel_thunk at /home/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:750
jl_toplevel_eval_flex at /home/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:906
jl_toplevel_eval_flex at /home/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:850
ijl_toplevel_eval_in at /home/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
eval_user_input at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:151
repl_backend_loop at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:247
start_repl_backend at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:232
#run_repl#47 at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:369
run_repl at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:356
jfptr_run_repl_63802 at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.so (unknown line)
_jl_invoke at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2340 [inlined]
ijl_apply_generic at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
#960 at ./client.jl:419
jfptr_YY.960_56587 at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.so (unknown line)
_jl_invoke at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2340 [inlined]
ijl_apply_generic at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /home/mhorn/Projekte/Julia/julia.release-1.8/src/julia.h:1825 [inlined]
jl_f__call_latest at /home/mhorn/Projekte/Julia/julia.release-1.8/src/builtins.c:769
#invokelatest#2 at ./essentials.jl:729 [inlined]
invokelatest at ./essentials.jl:727 [inlined]
run_main_repl at ./client.jl:404
exec_options at ./client.jl:318
_start at ./client.jl:522
jfptr__start_42598 at /home/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.so (unknown line)
_jl_invoke at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2340 [inlined]
ijl_apply_generic at /home/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2522
jl_apply at /home/mhorn/Projekte/Julia/julia.release-1.8/src/julia.h:1825 [inlined]
true_main at /home/mhorn/Projekte/Julia/julia.release-1.8/src/jlapi.c:562
jl_repl_entrypoint at /home/mhorn/Projekte/Julia/julia.release-1.8/src/jlapi.c:706
main at julia-release-1.8 (unknown line)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_start at julia-release-1.8 (unknown line)
Allocations: 47393370 (Pool: 47341086; Big: 52284); GC: 28
Segmentation fault
fingolfin commented 2 years ago

I could try to reduce the example (i.e. hack down Oscar.jl to a minimal version that still repros the issue), but that'll be quite some work, so I am not sure when I'd find the time. In the meantime, perhaps someone has an idea already with this (at least now anyone has a chance to repro it, and e.g. attach a debugger)

DilumAluthge commented 2 years ago

OK I can also reproduce it on x86_64 Linux:

Can you get an rr trace? Just start Julia with julia --bug-report=rr.

fingolfin commented 2 years ago

@DilumAluthge OK. Hmm, seems this does not play nice with the --project=... option. Anyway, it seems to have worked, pretty cool tech :-). Result is at https://s3.amazonaws.com/julialang-dumps/reports/2022-03-03T02-14-51-fingolfin.tar.zst

DilumAluthge commented 2 years ago

Hmm, seems this does not play nice with the --project=... option.

https://github.com/JuliaLang/BugReporting.jl/issues/35

timholy commented 2 years ago

I'm new to portable rr archives (and pretty new to rr itself), but I got

(rr) c
Continuing.
warning: Could not load shared library symbols for 2 libraries, e.g. /home/mhorn/.julia/artifacts/fed663d473a94b4d75db54e1a8e1cc8b42875680/bin/../lib/rr/librrpreload.so.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
[FATAL /home/tim/src/rr/rr/src/ReplaySession.cc:508:cont_syscall_boundary() errno: EIO] 
 (task 2618357 (rec:276871) at time 269)
 -> Assertion `false' failed to hold. Replay got unrecorded signal {signo:SIGSEGV,errno:SUCCESS,code:SEGV_MAPERR,addr:0}
Tail of trace dump:
{

Maybe a path error? That archive has a file named mmap_pack_17_librrpreload.so, not sure if that's what it's looking for.

This is probably a Julia bug rather than Revise bug so it might be best to report there. FYI I can't replicate the crash locally.

timholy commented 2 years ago

CC @Keno who might have some insight

fingolfin commented 2 years ago

I am right now trying to bisect Julia for this, too, after all it worked a few works ago (but it's sloooooow to rebuild Julia each time... sigh)

KristofferC commented 2 years ago

Turning off the precompile stuff (JULIA_PRECOMPILE=0) in Make.user makes it faster.

timholy commented 2 years ago

I periodically learn and then forget that trick, thanks for the reminder.

fingolfin commented 2 years ago

bisected it to https://github.com/JuliaLang/julia/commit/7b1e4543d2ac0e0126150cae0c686300d93d1424 from https://github.com/JuliaLang/julia/pull/43671 by @simeonschaub

simeonschaub commented 2 years ago

Is this only on 1.8, not 1.9? Trying this on the latest Julia master, I only get the following errors:

julia> using Revise, Oscar
[ Info: Precompiling Oscar [f1435218-dba5-11e9-1e4d-f1a5fab5fc13]
[Detaching after vfork from child process 1268362]
ERROR: LoadError: InitError: could not load library "/home/simeon/.julia/artifacts/c839838c859a6318d38122f94bfadd353cddf129/lib/libgap.so"
libjulia.so.1: cannot open shared object file: No such file or directory
Stacktrace:
  [1] dlopen(s::String, flags::UInt32; throw_error::Bool)
    @ Base.Libc.Libdl ./libdl.jl:117
  [2] dlopen(s::String, flags::UInt32)
    @ Base.Libc.Libdl ./libdl.jl:117
  [3] macro expansion
    @ ~/.julia/packages/JLLWrappers/QpMQW/src/products/library_generators.jl:54 [inlined]
  [4] __init__()
    @ GAP_jll ~/.julia/packages/GAP_jll/qG7vS/src/wrappers/x86_64-linux-gnu-cxx11-julia_version+1.9.0.jl:12
  [5] _include_from_serialized(path::String, depmods::Vector{Any})
    @ Base ./loading.jl:811
  [6] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, depth::Int64)
    @ Base ./loading.jl:919
  [7] _require_search_from_serialized
    @ ./loading.jl:892 [inlined]
  [8] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1194
  [9] _require_prelocked(uuidkey::Base.PkgId)
    @ Base ./loading.jl:1087
 [10] macro expansion
    @ ./loading.jl:1067 [inlined]
 [11] macro expansion
    @ ./lock.jl:223 [inlined]
 [12] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:1031
 [13] include
    @ ./Base.jl:426 [inlined]
 [14] 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)
    @ Base ./loading.jl:1418
 [15] top-level scope
    @ stdin:1
during initialization of module GAP_jll
in expression starting at /home/simeon/.julia/packages/GAP/lK1LP/src/GAP.jl:1
in expression starting at stdin:1
ERROR: LoadError: Failed to precompile GAP [c863536a-3901-11e9-33e7-d5cd0df7b904] to /home/simeon/.julia/compiled/v1.9/GAP/jl_j02rl3.
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
    @ Base ./loading.jl:1569
  [3] compilecache
    @ ./loading.jl:1513 [inlined]
  [4] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1217
  [5] _require_prelocked(uuidkey::Base.PkgId)
    @ Base ./loading.jl:1087
  [6] macro expansion
    @ ./loading.jl:1067 [inlined]
  [7] macro expansion
    @ ./lock.jl:223 [inlined]
  [8] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:1031
  [9] include(mod::Module, _path::String)
    @ Base ./Base.jl:426
 [10] include(x::String)
    @ Oscar ~/.julia/packages/Oscar/HBikN/src/Oscar.jl:20
 [11] top-level scope
    @ ~/.julia/packages/Oscar/HBikN/src/Oscar.jl:22
 [12] include
    @ ./Base.jl:426 [inlined]
 [13] 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::Nothing)
    @ Base ./loading.jl:1418
 [14] top-level scope
    @ stdin:1
in expression starting at /home/simeon/.julia/packages/Oscar/HBikN/src/imports.jl:10
in expression starting at /home/simeon/.julia/packages/Oscar/HBikN/src/Oscar.jl:1
in expression starting at stdin:1
ERROR: Failed to precompile Oscar [f1435218-dba5-11e9-1e4d-f1a5fab5fc13] to /home/simeon/.julia/compiled/v1.9/Oscar/jl_dMGgZ7.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
   @ Base ./loading.jl:1569
 [3] compilecache
   @ ./loading.jl:1513 [inlined]
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1217
 [5] _require_prelocked(uuidkey::Base.PkgId)
   @ Base ./loading.jl:1087
 [6] macro expansion
   @ ./loading.jl:1067 [inlined]
 [7] macro expansion
   @ ./lock.jl:223 [inlined]
 [8] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:1031

julia> 1+1
2
simeonschaub commented 2 years ago

I still get this on the backports-release-1.8 and with the proper Oscar#master. The rr trace you posted unfortunately isn't super useful here, since it's not a debug build, so it's missing the debug symbols.

DilumAluthge commented 2 years ago

@keno Is there a way to take an rr trace that was generated without debug symbols, and load the debug symbols in separately?

fingolfin commented 2 years ago

The issue definitely occurs in master, too. Try to ]dev Oscar?

I can try to make another rr snapshot with debug symbols active tonight.

timholy commented 2 years ago

I think the libgap error comes from running a Julia debug build while loading a JLL that was assembled with a non-debug build (CC @giordano).

fingolfin commented 2 years ago

I've now used the following script on an Ubuntu machine to temporarily hack the JLL libraries for use with a debug build of Julia:

#!/bin/sh

# 
# using GAP_jll, GAP_pkg_juliainterface_jll, libcxxwrap_julia_jll, libpolymake_julia_jll, libsingular_julia_jll
# for m in [GAP_jll, GAP_pkg_juliainterface_jll, libcxxwrap_julia_jll, libpolymake_julia_jll, libsingular_julia_jll]  println(m.find_artifact_dir()) end
#

for f in \
c839838c859a6318d38122f94bfadd353cddf129/lib/libgap.so \
9a3ef36e44865786948fe5b9f4cf0fbc7d737718/lib/gap/JuliaInterface.so \
4266ab44a39180f4d3be858e3fe507874d13fca1/lib/libcxxwrap_julia.so \
18e245078af62a7a8a839d00850ccd849c7af16b/lib/libpolymake_julia.so \
a625ffb5bfe38061a69a6fdf210f9988564b09b7/lib/libsingular_julia.so \
; do
  chmod a+w $HOME/.julia/artifacts/$f
  patchelf --replace-needed libjulia.so.1 libjulia-debug.so.1 $HOME/.julia/artifacts/$f
  #patchelf --replace-needed libjulia-debug.so.1 libjulia.so.1 $HOME/.julia/artifacts/$f
done

I also noticed that perhaps not every "edit a file of Oscar.jl" triggers the crash, so here is what I am now doing specifically to reliably trigger the crash:

touch(abspath(pathof(Oscar),"..","Groups","GAPGroups.jl"));

I'll now try to get that rr trace

simeonschaub commented 2 years ago

That's great work, thanks! I think this should help a lot. I tried to rename the soname of libjulia-debug.so instead but then ran into different linking errors

fingolfin commented 2 years ago

Uploaded to https://s3.amazonaws.com/julialang-dumps/reports/2022-03-05T22-06-07-fingolfin.tar.zst

simeonschaub commented 2 years ago

It's still rather obscure but I have one potential suspicion. This seems to have something to do with symbol lookup, so I'm wondering whether this might be an issue with some jll having been linked to a libjulia.so that's simply too old.

Do you know what exact version of Julia the jlls are linked against? https://github.com/JuliaLang/julia/commit/7b1e4543d2ac0e0126150cae0c686300d93d1424 touched a couple of parts in libjulia, so I could imagine that those caused the artifacts linking to it to be out of sync.

giordano commented 2 years ago

Do you know what exact version of Julia the jlls are linked against?

See https://github.com/JuliaPackaging/Yggdrasil/blob/db23b4c8d4bec230c46532dc1f67542f9930ff70/L/libjulia/common.jl#L47. Commit https://github.com/JuliaLang/julia/commit/7a1c20e6dea50291b364452996d3d4d71a6133dc is after https://github.com/JuliaLang/julia/commit/7b1e4543d2ac0e0126150cae0c686300d93d1424

simeonschaub commented 2 years ago

Could it potentially be an issue that libjulia_jll's dependents are built against an older version? I am not sure libjulia is actually intercompatible between minor versions.

giordano commented 2 years ago

https://github.com/JuliaPackaging/Yggdrasil/pull/4520 was a week after https://github.com/JuliaPackaging/Yggdrasil/pull/4461. However it may still be a good idea to rebuild libjulia on 1.8.0-beta-1, to have a more stable reference

simeonschaub commented 2 years ago

That's not the only one building against libjulia here though, right?

> julia-latest --project=oscar_segfault -e 'import Pkg; Pkg.status(mode=Pkg.PKGMODE_MANIFEST)' | rg _jll
  [e21ec000] Antic_jll v0.200.501+0
  [d9960996] Arb_jll v200.2200.0+0
  [fcfa6d1b] Calcium_jll v0.400.102+0
  [e134572f] FLINT_jll v200.800.401+1
 ⌅ [5cd7a574] GAP_jll v400.1191.1+2
 ⌅ [de1ad85e] GAP_lib_jll v400.1191.0+0
 ⌅ [ba154793] GAP_pkg_juliainterface_jll v0.700.300+1
  [e8aa6df9] GLPK_jll v5.0.1+0
  [dd4b983a] LZO_jll v2.10.1+0
  [90100e71] MongoC_jll v1.19.1+0
  [68e3532b] Ncurses_jll v6.2.0+0
  [76642167] Ninja_jll v1.10.3+0
→⌃ [656ef2d0] OpenBLAS32_jll v0.3.17+0
  [458c3c95] OpenSSL_jll v1.1.13+0
  [80dd9cbb] PPL_jll v1.2.1+0
  [83958c19] Perl_jll v5.34.0+1
  [05236dd9] Readline_jll v8.1.1+1
  [43d676ae] Singular_jll v403.0.100+0
  [36f60fef] TOPCOM_jll v0.17.8+0
  [3161d3a3] Zstd_jll v1.5.2+0
  [508c9074] bliss_jll v0.77.0+1
  [28df3c45] boost_jll v1.76.0+0
  [f07e07eb] cddlib_jll v0.94.13+0
  [5558cf25] cohomCalg_jll v0.32.0+0
  [1493ae25] lib4ti2_jll v1.6.10+0
  [3eaa8342] libcxxwrap_julia_jll v0.9.0+1
  [4d8266f6] libpolymake_julia_jll v0.8.0+1
  [ae4fbd8f] libsingular_julia_jll v0.21.0+1
  [3873f7d0] lrslib_jll v0.3.3+0
 ⌃ [6d01cc9a] msolve_jll v0.1.7+0
  [55c6dc9b] nauty_jll v2.6.13+0
  [6690c6e9] normaliz_jll v300.900.100+0
  [7c209550] polymake_jll v400.600.0+0
  [fe1e1685] snappy_jll v1.1.9+0
  [e66e0078] CompilerSupportLibraries_jll v0.5.0+0
  [781609d7] GMP_jll v6.2.1+1
  [deac9b47] LibCURL_jll v7.81.0+0
  [29816b5a] LibSSH2_jll v1.10.2+0
  [3a97d323] MPFR_jll v4.1.1+1
  [c8ffd9c3] MbedTLS_jll v2.28.0+0
  [14a3606d] MozillaCACerts_jll v2022.2.1
  [4536629a] OpenBLAS_jll v0.3.20+0
  [83775a58] Zlib_jll v1.2.12+1
  [8e850b90] libblastrampoline_jll v5.0.1+0
  [8e850ede] nghttp2_jll v1.41.0+1
  [3f19e933] p7zip_jll v16.2.1+1

Specifically libcxxwrap_julia_jll, libpolymake_julia_jll and libsingular_julia_jll seem to as well

fingolfin commented 2 years ago

They were all rebuilt for 1.9, after it branched, which was after your PR. In fact, they had to be rebuilt, as those JLLs carry different binaries for each Julia minor version, which indeed tend to be binary incompatible.

fingolfin commented 2 years ago

That said, my bisecting of course could have been affected leading to me flagging the wrong commit. But that seems unlikely due to the nature of the crash. But not impossible...

George9000 commented 2 years ago

FWIW, I'm also seeing a segfault when using Revise with Julia 1.8 on an M1 mac. Some additional data points:

This is a private package using DataFrames 1.3.2 and XLX 0.7.9 (Revise 3.3.3 and JuliaInterpreter 0.9.9)

Julia 1.8.0-beta2.3

using Baz

bar("file_name.xlsx")
# executes without problem

# Revise the module Baz: comment out an unrelated function
bar("file_name.xlsx")

signal (11): Segmentation fault: 11
Full segfault output: ``` signal (11): Segmentation fault: 11 in expression starting at none:1 ml_matches at /Users/foo/applications/juliad/src/gf.c:2824 _gf_invoke_lookup at /Users/foo/applications/juliad/src/gf.c:2552 [inlined] ijl_gf_invoke_lookup at /Users/foo/applications/juliad/src/gf.c:2564 whichtt at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/utils.jl:35 #prepare_call#43 at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/construct.jl:240 prepare_call##kw at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/construct.jl:233 [inlined] #get_call_framecode#58 at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/localmethtable.jl:63 get_call_framecode##kw at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/localmethtable.jl:11 [inlined] #evaluate_call_recurse!#63 at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/interpret.jl:231 evaluate_call_recurse! at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/interpret.jl:207 eval_rhs at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/interpret.jl:371 step_expr! at /Users/foo/.julia/packages/JuliaInterpreter/DxOBb/src/interpret.jl:519 signature at /Users/foo/.julia/packages/LoweredCodeUtils/KZRd2/src/signatures.jl:51 unknown function (ip: 0x1647dd34b) _jl_invoke at /Users/foo/applications/juliad/src/gf.c:0 [inlined] ijl_apply_generic at /Users/foo/applications/juliad/src/gf.c:2540 #methoddef!#7 at /Users/foo/.julia/packages/LoweredCodeUtils/KZRd2/src/signatures.jl:493 methoddef!##kw at /Users/foo/.julia/packages/LoweredCodeUtils/KZRd2/src/signatures.jl:445 [inlined] #methods_by_execution!#24 at /Users/foo/.julia/packages/Revise/jHTGK/src/lowered.jl:272 unknown function (ip: 0x165066137) unknown function (ip: 0x16400e547) unknown function (ip: 0x16400e51b) methods_by_execution!##kw at /Users/foo/.julia/packages/Revise/jHTGK/src/lowered.jl:239 [inlined] #methods_by_execution!#20 at /Users/foo/.julia/packages/Revise/jHTGK/src/lowered.jl:217 methods_by_execution!##kw at /Users/foo/.julia/packages/Revise/jHTGK/src/lowered.jl:175 [inlined] #eval_with_signatures#90 at /Users/foo/.julia/packages/Revise/jHTGK/src/packagedef.jl:464 [inlined] eval_with_signatures##kw at /Users/foo/.julia/packages/Revise/jHTGK/src/packagedef.jl:462 [inlined] #instantiate_sigs!#91 at /Users/foo/.julia/packages/Revise/jHTGK/src/packagedef.jl:472 instantiate_sigs! at /Users/foo/.julia/packages/Revise/jHTGK/src/packagedef.jl:469 [inlined] maybe_extract_sigs! at /Users/foo/.julia/packages/Revise/jHTGK/src/pkgs.jl:141 [inlined] handle_deletions at /Users/foo/.julia/packages/Revise/jHTGK/src/packagedef.jl:641 #revise#96 at /Users/foo/.julia/packages/Revise/jHTGK/src/packagedef.jl:747 revise at /Users/foo/.julia/packages/Revise/jHTGK/src/packagedef.jl:735 unknown function (ip: 0x1642c001b) _jl_invoke at /Users/foo/applications/juliad/src/gf.c:0 [inlined] ijl_apply_generic at /Users/foo/applications/juliad/src/gf.c:2540 jl_apply at /Users/foo/applications/juliad/src/./julia.h:1829 [inlined] jl_f__call_latest at /Users/foo/applications/juliad/src/builtins.c:769 #invokelatest#2 at ./essentials.jl:729 [inlined] invokelatest at ./essentials.jl:727 unknown function (ip: 0x11a0b0033) _jl_invoke at /Users/foo/applications/juliad/src/gf.c:0 [inlined] ijl_apply_generic at /Users/foo/applications/juliad/src/gf.c:2540 jl_apply at /Users/foo/applications/juliad/src/./julia.h:1829 [inlined] do_call at /Users/foo/applications/juliad/src/interpreter.c:126 eval_body at /Users/foo/applications/juliad/src/interpreter.c:0 jl_interpret_toplevel_thunk at /Users/foo/applications/juliad/src/interpreter.c:750 jl_toplevel_eval_flex at /Users/foo/applications/juliad/src/toplevel.c:906 jl_toplevel_eval_flex at /Users/foo/applications/juliad/src/toplevel.c:850 ijl_toplevel_eval at /Users/foo/applications/juliad/src/toplevel.c:915 [inlined] ijl_toplevel_eval_in at /Users/foo/applications/juliad/src/toplevel.c:965 eval at ./boot.jl:368 [inlined] eval_user_input at /Users/foo/applications/juliad/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:151 repl_backend_loop at /Users/foo/applications/juliad/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:247 start_repl_backend at /Users/foo/applications/juliad/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:232 #run_repl#47 at /Users/foo/applications/juliad/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:369 run_repl at /Users/foo/applications/juliad/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:356 jfptr_run_repl_63624 at /Users/foo/applications/juliad/usr/lib/julia/sys.dylib (unknown line) _jl_invoke at /Users/foo/applications/juliad/src/gf.c:0 [inlined] ijl_apply_generic at /Users/foo/applications/juliad/src/gf.c:2540 #961 at ./client.jl:419 jfptr_YY.961_43777 at /Users/foo/applications/juliad/usr/lib/julia/sys.dylib (unknown line) _jl_invoke at /Users/foo/applications/juliad/src/gf.c:0 [inlined] ijl_apply_generic at /Users/foo/applications/juliad/src/gf.c:2540 jl_apply at /Users/foo/applications/juliad/src/./julia.h:1829 [inlined] jl_f__call_latest at /Users/foo/applications/juliad/src/builtins.c:769 #invokelatest#2 at ./essentials.jl:729 [inlined] invokelatest at ./essentials.jl:727 [inlined] run_main_repl at ./client.jl:404 exec_options at ./client.jl:318 _start at ./client.jl:522 jfptr__start_30185 at /Users/foo/applications/juliad/usr/lib/julia/sys.dylib (unknown line) _jl_invoke at /Users/foo/applications/juliad/src/gf.c:0 [inlined] ijl_apply_generic at /Users/foo/applications/juliad/src/gf.c:2540 jl_apply at /Users/foo/applications/juliad/src/./julia.h:1829 [inlined] true_main at /Users/foo/applications/juliad/src/jlapi.c:567 jl_repl_entrypoint at /Users/foo/applications/juliad/src/jlapi.c:711 Allocations: 27600154 (Pool: 27589065; Big: 11089); GC: 42 ```

In Julia 1.9.0-DEV.211, instead of the segfault in response to editing the module, the following exception occurs:

bar("file_name.xlsx")
┌ Error: Failed to revise /Users/foo/Documents/Baz/analysis.jl
│   exception =
│    type Nothing has no field method
│    Stacktrace:
│     [1] top-level scope
│       @ none:0
│    Revise evaluation error at /Users/foo/Documents/Baz/none:0
│    
└ @ Revise ~/.julia/packages/Revise/VskYC/src/packagedef.jl:708
┌ Warning: The running code does not match the saved version for the following files:
│ 
│   /Users/foo/Documents/Baz/src/Baz.jl
│ 
│ If the error was due to evaluation order, it can sometimes be resolved by calling `Revise.retry()`.
│ Use Revise.errors() to report errors again. Only the first error in each file is shown.
│ Your prompt color may be yellow until the errors are resolved.
└ @ Revise ~/.julia/packages/Revise/VskYC/src/packagedef.jl:818

And in Julia 1.8.0-DEV.1483, Revise works without any errors after editing the module.

versioninfo for all three below.

versioninfo 1.8.0-DEV.1483 ``` ulia> versioninfo(verbose = true) Julia Version 1.8.0-DEV.1483 Commit 76fa18281d (2022-02-09 22:23 UTC) Platform Info: OS: macOS (arm64-apple-darwin21.3.0) uname: Darwin 21.4.0 Darwin Kernel Version 21.4.0: Mon Feb 21 20:35:58 PST 2022; root:xnu-8020.101.4~2/RELEASE_ARM64_T6000 arm64 arm CPU: Apple M1 Max: speed user nice sys idle irq #1-10 24 MHz 16598 s 0 s 7938 s 366832 s 0 s Memory: 64.0 GB (44699.578125 MB free) Uptime: 3914.0 sec Load Avg: 0.9091796875 1.1416015625 1.50927734375 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-13.0.0 (ORCJIT, cyclone) Environment: JULIA_EDITOR = Emacs XPC_FLAGS = 0x0 PATH = /Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/foo/.pyenv/bin:/opt/homebrew/opt/grep/libexec/gnubin:/Users/foo/bin:/Users/foo/.local/bin:/opt/homebrew/bin:/Users/foo/Library/Python/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Applications/MacPorts/EmacsMac.app/Contents/MacOS:/opt/local/bin:/opt/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/foo/perl5/perlbrew/bin:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/bin:/Users/foo/.local/bin:/opt/homebrew/opt/fzf/bin:/Users/foo/.emacs.d/bin TERM = xterm-256color HOME = /Users/foo PERLBREW_HOME = /Users/foo/.perlbrew PERLBREW_MANPATH = /Users/foo/perl5/perlbrew/perls/perl-5.35.5/man PERLBREW_PATH = /Users/foo/perl5/perlbrew/bin:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/bin MANPATH = /opt/local/share/man:/opt/homebrew/share/man:/usr/share/man:/usr/local/share/man:/Library/TeX/Distributions/.DefaultTeX/Contents/Man:/opt/X11/share/man:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/man:/Library/Apple/usr/share/man:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man: HOMEBREW_PREFIX = /opt/homebrew HOMEBREW_CELLAR = /opt/homebrew/Cellar HOMEBREW_REPOSITORY = /opt/homebrew INFOPATH = /opt/homebrew/share/info: ```
versioninfo 1.8.0-beta2.3 ``` versioninfo(verbose = true) Julia Version 1.8.0-beta2.3 Commit e191c6e935 (2022-03-17 11:35 UTC) Platform Info: OS: macOS (arm64-apple-darwin21.4.0) uname: Darwin 21.4.0 Darwin Kernel Version 21.4.0: Mon Feb 21 20:35:58 PST 2022; root:xnu-8020.101.4~2/RELEASE_ARM64_T6000 arm64 arm CPU: Apple M1 Max: speed user nice sys idle irq #1-10 24 MHz 26597 s 0 s 12563 s 669327 s 0 s Memory: 64.0 GB (42792.234375 MB free) Uptime: 7085.0 sec Load Avg: 1.46435546875 1.47216796875 1.3291015625 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-13.0.1 (ORCJIT, apple-m1) Threads: 1 on 8 virtual cores Environment: JULIA_EDITOR = Emacs XPC_FLAGS = 0x0 PATH = /Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/foo/.pyenv/bin:/opt/homebrew/opt/grep/libexec/gnubin:/Users/foo/bin:/Users/foo/.local/bin:/opt/homebrew/bin:/Users/foo/Library/Python/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Applications/MacPorts/EmacsMac.app/Contents/MacOS:/opt/local/bin:/opt/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/foo/perl5/perlbrew/bin:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/bin:/Users/foo/.local/bin:/opt/homebrew/opt/fzf/bin:/Users/foo/.emacs.d/bin TERM = xterm-256color HOME = /Users/foo PERLBREW_HOME = /Users/foo/.perlbrew PERLBREW_MANPATH = /Users/foo/perl5/perlbrew/perls/perl-5.35.5/man PERLBREW_PATH = /Users/foo/perl5/perlbrew/bin:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/bin MANPATH = /opt/local/share/man:/opt/homebrew/share/man:/usr/share/man:/usr/local/share/man:/Library/TeX/Distributions/.DefaultTeX/Contents/Man:/opt/X11/share/man:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/man:/Library/Apple/usr/share/man:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man: HOMEBREW_PREFIX = /opt/homebrew HOMEBREW_CELLAR = /opt/homebrew/Cellar HOMEBREW_REPOSITORY = /opt/homebrew INFOPATH = /opt/homebrew/share/info: ```
versioninfo 1.9.0-DEV.211 ``` julia> versioninfo(verbose = true) Julia Version 1.9.0-DEV.211 Commit b9b2a3cc01 (2022-03-17 12:03 UTC) Platform Info: OS: macOS (arm64-apple-darwin21.4.0) uname: Darwin 21.4.0 Darwin Kernel Version 21.4.0: Mon Feb 21 20:35:58 PST 2022; root:xnu-8020.101.4~2/RELEASE_ARM64_T6000 arm64 arm CPU: Apple M1 Max: speed user nice sys idle irq #1-10 24 MHz 16284 s 0 s 7646 s 345014 s 0 s Memory: 64.0 GB (44436.09375 MB free) Uptime: 3689.0 sec Load Avg: 1.12890625 1.51416015625 1.732421875 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-13.0.1 (ORCJIT, apple-m1) Threads: 1 on 8 virtual cores Environment: JULIA_EDITOR = Emacs XPC_FLAGS = 0x0 PATH = /Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/foo/.pyenv/bin:/opt/homebrew/opt/grep/libexec/gnubin:/Users/foo/bin:/Users/foo/.local/bin:/opt/homebrew/bin:/Users/foo/Library/Python/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Applications/MacPorts/EmacsMac.app/Contents/MacOS:/opt/local/bin:/opt/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/foo/perl5/perlbrew/bin:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/bin:/Users/foo/.local/bin:/opt/homebrew/opt/fzf/bin:/Users/foo/.emacs.d/bin TERM = xterm-256color HOME = /Users/foo PERLBREW_HOME = /Users/foo/.perlbrew PERLBREW_MANPATH = /Users/foo/perl5/perlbrew/perls/perl-5.35.5/man PERLBREW_PATH = /Users/foo/perl5/perlbrew/bin:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/bin MANPATH = /opt/local/share/man:/opt/homebrew/share/man:/usr/share/man:/usr/local/share/man:/Library/TeX/Distributions/.DefaultTeX/Contents/Man:/opt/X11/share/man:/Users/foo/perl5/perlbrew/perls/perl-5.35.5/man:/Library/Apple/usr/share/man:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man: HOMEBREW_PREFIX = /opt/homebrew HOMEBREW_CELLAR = /opt/homebrew/Cellar HOMEBREW_REPOSITORY = /opt/homebrew INFOPATH = /opt/homebrew/share/info: ```
simeonschaub commented 2 years ago

Could we move this issue to Julia base?

giordano commented 2 years ago

You can't really transfer the issue using the github feature, that's only within the same organisation. You'll have to open a new one

simeonschaub commented 2 years ago

Ah, that's unfortunate!

Keno commented 2 years ago

The segfault in ml_matches means you need a newer JuliaInterpreter.

giordano commented 2 years ago

If it's known older versions of the package aren't compatible with julia v1.8, that should be reflected in the registry. I know some people don't like changing compat bounds retroactively, but the alternative is to get broken packages

George9000 commented 2 years ago

Updated JuliaInterpreter to 0.9.11: the segfault disappeared in Julia 1.8.0-beta2.3 as did the exception being thrown by 1.9.0-DEV.211. Wish all issues were that easy to fix! Grateful for @Keno's diagnosis.

I have added JuliaInterpreter to my version's base environments rather than rely on dependency compats. That will remind me to update it at the same time as Revise.

Keno commented 2 years ago

If it's known older versions of the package aren't compatible with julia v1.8, that should be reflected in the registry. I know some people don't like changing compat bounds retroactively, but the alternative is to get broken packages

Submit a PR to the registry? 1.8 needs JuliaInterpreter 0.9.11 due to https://github.com/JuliaDebug/JuliaInterpreter.jl/commit/5a39c51d885099f52340b22f153c69d59ee35ec9 which got backported.

fingolfin commented 2 years ago

Just to say: the original issue I reported still is there.

George9000 commented 2 years ago

@fingolfin Does it persist if you remove Revise and add it again? In the report above, your Revise is 3.3.2; latest version is 3.3.3 Also, my JuliaInterpreter did not update to 0.9.11 until I removed and re-added Revise (double checked my Manifest.toml to ensure that the Interpreter had updated).

George9000 commented 2 years ago

@giordano After forking the registry, I made the start of a Compat.toml edit for JuliaInterpreter. Would you take a look and comment?

fingolfin commented 2 years ago

Yes it persists.

giordano commented 2 years ago

Submit a PR to the registry? 1.8 needs JuliaInterpreter 0.9.11 due to JuliaDebug/JuliaInterpreter.jl@5a39c51 which got backported.

Now I know, but I didn't until this message. I'm helping out @George9000 preparing the pull request, but I wish package maintainers did this more proactively instead of waiting for users to crash on the issues they know are there.

fingolfin commented 2 years ago

Note that anyone should be able to reproduce the crash with the instructions I gave. But here's a fresh backtrace, for your convenience:

   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.8.0-beta2.3 (2022-03-17)
 _/ |\__'_|_|_|\__'_|  |  release-1.8/e191c6e935 (fork: 79 commits, 29 days)
|__/                   |

julia> versioninfo()
Julia Version 1.8.0-beta2.3
Commit e191c6e935 (2022-03-17 11:35 UTC)
Platform Info:
  OS: macOS (arm64-apple-darwin21.4.0)
  CPU: 10 × Apple M1 Max
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, apple-m1)
  Threads: 1 on 8 virtual cores
Environment:
  JULIA_EDITOR = /usr/local/bin/bbedit

(@v1.8) pkg> update
    Updating registry at `~/.julia/registries/General`
    Updating git-repo `https://github.com/JuliaRegistries/General.git`
  No Changes to `~/.julia/environments/v1.8/Project.toml`
  No Changes to `~/.julia/environments/v1.8/Manifest.toml`

(@v1.8) pkg> status
Status `~/.julia/environments/v1.8/Project.toml`
  [6e4b80f9] BenchmarkTools v1.3.1
  [f1435218] Oscar v0.8.2-DEV `~/.julia/dev/Oscar`
  [295af30f] Revise v3.3.3

(@v1.8) pkg> status -m
Status `~/.julia/environments/v1.8/Manifest.toml`
  [c3fe647b] AbstractAlgebra v0.25.1
  [6e4b80f9] BenchmarkTools v1.3.1
  [f01c122e] BinaryWrappers v0.1.2
  [da1fd8a2] CodeTracking v1.0.8
  [1f15a43c] CxxWrap v0.12.0
  [ffbed154] DocStringExtensions v0.8.6
  [c863536a] GAP v0.7.7
  [d5909c97] GroupsCore v0.4.0
  [3e1990a7] Hecke v0.13.3
  [692b3bcd] JLLWrappers v1.4.1
  [682c06a0] JSON v0.21.3
  [aa1ae85d] JuliaInterpreter v0.9.11
  [6f1432cf] LoweredCodeUtils v2.2.1
  [1914dd2f] MacroTools v0.5.9
⌅ [4fe8b98c] Mongoc v0.6.2
  [2edaba10] Nemo v0.30.0
  [bac558e1] OrderedCollections v1.4.1
  [f1435218] Oscar v0.8.2-DEV `~/.julia/dev/Oscar`
  [69de0a69] Parsers v2.2.3
  [d720cf60] Polymake v0.7.1
  [21216c6a] Preferences v1.2.5
  [fb686558] RandomExtensions v0.4.3
  [ae029012] Requires v1.3.0
  [295af30f] Revise v3.3.3
  [6c6a2e73] Scratch v1.1.0
  [bcd08a7b] Singular v0.9.3
  [e21ec000] Antic_jll v0.200.501+0
  [d9960996] Arb_jll v200.2200.0+0
  [fcfa6d1b] Calcium_jll v0.400.102+0
  [e134572f] FLINT_jll v200.800.401+1
⌅ [5cd7a574] GAP_jll v400.1191.1+2
⌅ [de1ad85e] GAP_lib_jll v400.1191.0+0
⌅ [ba154793] GAP_pkg_juliainterface_jll v0.700.300+1
  [e8aa6df9] GLPK_jll v5.0.1+0
  [dd4b983a] LZO_jll v2.10.1+0
  [90100e71] MongoC_jll v1.19.1+0
  [68e3532b] Ncurses_jll v6.2.0+0
  [76642167] Ninja_jll v1.10.3+0
⌅ [656ef2d0] OpenBLAS32_jll v0.3.17+0
  [458c3c95] OpenSSL_jll v1.1.14+0
  [80dd9cbb] PPL_jll v1.2.1+0
  [83958c19] Perl_jll v5.34.0+1
  [05236dd9] Readline_jll v8.1.1+1
⌅ [43d676ae] Singular_jll v403.0.100+0
  [36f60fef] TOPCOM_jll v0.17.8+0
  [3161d3a3] Zstd_jll v1.5.2+0
  [508c9074] bliss_jll v0.77.0+1
  [28df3c45] boost_jll v1.76.0+0
  [f07e07eb] cddlib_jll v0.94.13+0
  [5558cf25] cohomCalg_jll v0.32.0+0
  [1493ae25] lib4ti2_jll v1.6.10+0
  [3eaa8342] libcxxwrap_julia_jll v0.9.0+1
  [4d8266f6] libpolymake_julia_jll v0.8.0+1
  [ae4fbd8f] libsingular_julia_jll v0.21.0+1
  [3873f7d0] lrslib_jll v0.3.3+0
  [6d01cc9a] msolve_jll v0.2.3+0
  [55c6dc9b] nauty_jll v2.6.13+0
  [6690c6e9] normaliz_jll v300.900.100+0
  [7c209550] polymake_jll v400.600.0+0
  [fe1e1685] snappy_jll v1.1.9+0
  [0dad84c5] ArgTools v1.1.1
  [56f22d72] Artifacts
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [8ba89e20] Distributed
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching
  [b77e0a4c] InteractiveUtils
  [b27032c2] LibCURL v0.6.3
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [a63ad114] Mmap
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.8.0
  [de0858da] Printf
  [9abbd945] Profile
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization
  [6462fe0b] Sockets
  [2f01184e] SparseArrays
  [10745b16] Statistics
  [fa267f1f] TOML v1.0.0
  [a4e569a6] Tar v1.10.0
  [8dfed614] Test
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode
  [e66e0078] CompilerSupportLibraries_jll v0.5.2+0
  [781609d7] GMP_jll v6.2.1+1
  [deac9b47] LibCURL_jll v7.81.0+0
  [29816b5a] LibSSH2_jll v1.10.2+0
  [3a97d323] MPFR_jll v4.1.1+1
  [c8ffd9c3] MbedTLS_jll v2.28.0+0
  [14a3606d] MozillaCACerts_jll v2022.2.1
  [4536629a] OpenBLAS_jll v0.3.20+0
  [83775a58] Zlib_jll v1.2.12+1
  [8e850b90] libblastrampoline_jll v5.0.1+0
  [8e850ede] nghttp2_jll v1.41.0+1
  [3f19e933] p7zip_jll v16.2.1+1
Info Packages marked with ⌅ have new versions available but cannot be upgraded. To see why use `status --outdated`

julia> using Revise, Oscar
 -----    -----    -----      -      -----
|     |  |     |  |     |    | |    |     |
|     |  |        |         |   |   |     |
|     |   -----   |        |     |  |-----
|     |        |  |        |-----|  |   |
|     |  |     |  |     |  |     |  |    |
 -----    -----    -----   -     -  -     -

...combining (and extending) ANTIC, GAP, Polymake and Singular
Version 0.8.2-DEV ...
 ... which comes with absolutely no warranty whatsoever
Type: '?Oscar' for more information
(c) 2019-2022 by The Oscar Development Team

julia> touch(abspath(pathof(Oscar),"..","Groups","GAPGroups.jl"));

julia> 1+1

signal (11): Segmentation fault: 11
in expression starting at none:1
jl_typemap_level_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:1026
jl_typemap_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia_internal.h:1324 [inlined]
jl_typemap_level_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/typemap.c:1027
jl_typemap_assoc_exact at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia_internal.h:1324 [inlined]
jl_lookup_generic_ at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2480 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2536
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1829 [inlined]
do_call at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:126
eval_body at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:0
jl_interpret_toplevel_thunk at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:750
jl_toplevel_eval_flex at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:906
ijl_toplevel_eval at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:915 [inlined]
ijl_toplevel_eval_in at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
do_assignment! at /Users/mhorn/.julia/packages/JuliaInterpreter/TeQ0I/src/interpret.jl:354
step_expr! at /Users/mhorn/.julia/packages/JuliaInterpreter/TeQ0I/src/interpret.jl:470
step_expr! at /Users/mhorn/.julia/packages/JuliaInterpreter/TeQ0I/src/interpret.jl:594
finish! at /Users/mhorn/.julia/packages/JuliaInterpreter/TeQ0I/src/commands.jl:14
step_expr! at /Users/mhorn/.julia/packages/JuliaInterpreter/TeQ0I/src/interpret.jl:513
step_through_methoddef at /Users/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:84
signature at /Users/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:45
unknown function (ip: 0x2e467538b)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2540
#methoddef!#7 at /Users/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:493
methoddef!##kw at /Users/mhorn/.julia/packages/LoweredCodeUtils/c8DBv/src/signatures.jl:445 [inlined]
#methods_by_execution!#24 at /Users/mhorn/.julia/packages/Revise/VskYC/src/lowered.jl:272
unknown function (ip: 0x2e46acee7)
unknown function (ip: 0x2c4f0662f)
unknown function (ip: 0x2c4f06603)
methods_by_execution!##kw at /Users/mhorn/.julia/packages/Revise/VskYC/src/lowered.jl:239 [inlined]
#methods_by_execution!#20 at /Users/mhorn/.julia/packages/Revise/VskYC/src/lowered.jl:217
methods_by_execution!##kw at /Users/mhorn/.julia/packages/Revise/VskYC/src/lowered.jl:175 [inlined]
#eval_with_signatures#90 at /Users/mhorn/.julia/packages/Revise/VskYC/src/packagedef.jl:464 [inlined]
eval_with_signatures##kw at /Users/mhorn/.julia/packages/Revise/VskYC/src/packagedef.jl:462 [inlined]
#instantiate_sigs!#91 at /Users/mhorn/.julia/packages/Revise/VskYC/src/packagedef.jl:472
instantiate_sigs! at /Users/mhorn/.julia/packages/Revise/VskYC/src/packagedef.jl:469 [inlined]
maybe_extract_sigs! at /Users/mhorn/.julia/packages/Revise/VskYC/src/pkgs.jl:141 [inlined]
handle_deletions at /Users/mhorn/.julia/packages/Revise/VskYC/src/packagedef.jl:641
#revise#96 at /Users/mhorn/.julia/packages/Revise/VskYC/src/packagedef.jl:747
revise at /Users/mhorn/.julia/packages/Revise/VskYC/src/packagedef.jl:735
unknown function (ip: 0x2c4f7401b)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2540
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1829 [inlined]
jl_f__call_latest at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/builtins.c:769
#invokelatest#2 at ./essentials.jl:729 [inlined]
invokelatest at ./essentials.jl:727
unknown function (ip: 0x12cc00033)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2540
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1829 [inlined]
do_call at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:126
eval_body at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:0
jl_interpret_toplevel_thunk at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/interpreter.c:750
jl_toplevel_eval_flex at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:906
jl_toplevel_eval_flex at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:850
ijl_toplevel_eval at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:915 [inlined]
ijl_toplevel_eval_in at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
eval_user_input at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:151
repl_backend_loop at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:247
start_repl_backend at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:232
#run_repl#47 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:369
run_repl at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:356
jfptr_run_repl_64278 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.dylib (unknown line)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2540
#961 at ./client.jl:419
jfptr_YY.961_46947 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.dylib (unknown line)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2540
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1829 [inlined]
jl_f__call_latest at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/builtins.c:769
#invokelatest#2 at ./essentials.jl:729 [inlined]
invokelatest at ./essentials.jl:727 [inlined]
run_main_repl at ./client.jl:404
exec_options at ./client.jl:318
_start at ./client.jl:522
jfptr__start_51636 at /Users/mhorn/Projekte/Julia/julia.release-1.8/usr/lib/julia/sys.dylib (unknown line)
_jl_invoke at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:0 [inlined]
ijl_apply_generic at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/gf.c:2540
jl_apply at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/./julia.h:1829 [inlined]
true_main at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/jlapi.c:567
jl_repl_entrypoint at /Users/mhorn/Projekte/Julia/julia.release-1.8/src/jlapi.c:711
Allocations: 36422603 (Pool: 36371362; Big: 51241); GC: 22
fingolfin commented 2 years ago

Looking at the JuliaInterpreter code on the callstack, we are at some point executing function signature(@nospecialize(recurse), frame::Frame, @nospecialize(stmt), pc) in src/signatures.jl:45, specifically

        if isanonymous_typedef(stmt)
            lastpc = pc = step_through_methoddef(recurse, frame, stmt)   # define an anonymous function

and this percolates down into step_expr! (there are uncommented debug statements in there, which I've now enabled in the hopes that they'll help pinpoint where we crash). Anyway, the last Julia code we pass through before entering into the C kernel is do_assignment!, and in there

    elseif isa(lhs, Symbol)
        Core.eval(moduleof(code), :($lhs = $(QuoteNode(rhs))))

The debugging statements I enabled are these (in src/interpret.jl lines 455 & 456)

    show_stackloc(frame)
    @show node

Unfortunately it just prints a TON of info which I mostly can't make much sense of. But perhaps someone who knows JuliaInterpreter better either can figure out something from this, or can suggest some other things to try (or they can just try it themselves, after all, all that's necessary to do so is available to everyone, this is pure open source code :-) ).

...
Oscar, pc = 5
node = :(($(QuoteNode(getproperty)))(Random, :AbstractRNG))
Oscar
  getproperty(x::Module, f::Symbol) in Base at Base.jl:31, pc = 1
node = nothing
Oscar
  getproperty(x::Module, f::Symbol) in Base at Base.jl:31, pc = 2
node = :(($(QuoteNode(getfield)))(_J2, _J3))
Oscar
  getproperty(x::Module, f::Symbol) in Base at Base.jl:31, pc = 3
node = :(return %J2)
Oscar, pc = 6
node = :(($(QuoteNode(Core.apply_type)))(GroupConjClass, %J2, %J1))
Oscar, pc = 7
node = :(($(QuoteNode(Core.svec)))(%J4, %J5, %J6))
Oscar, pc = 8
node = :(($(QuoteNode(Core.svec)))(%J1, %J2))
Oscar, pc = 9
node = :(($(QuoteNode(Core.svec)))(%J7, %J8, $(QuoteNode(:(#= /Users/mhorn/.julia/dev/Oscar/src/Groups/GAPGroups.jl:536 =#)))))
Oscar, pc = 2
node = :($(Expr(:method, :conjugacy_classes_subgroups)))
Oscar, pc = 3
node = :($(Expr(:thunk, CodeInfo(
    @ none within `top-level scope`
1 ─      global var"#2133#2134"
│        const var"#2133#2134"
│        Core.TypeVar(:G, Core.Any)
│   %4 = Core._structtype(Oscar, Symbol("#2133#2134"), Core.svec(%3), Core.svec(:G), Core.svec(), false, 1)
│        var"#2133#2134" = %4
│        Core._setsuper!(var"#2133#2134", Core.Function)
│        Core._typebody!(var"#2133#2134", Core.svec(%3))
└──      return nothing
))))
Oscar
  Oscar, pc = 1
node = :(global var"#2133#2134")
Oscar
  Oscar, pc = 2
node = :(const var"#2133#2134")
Oscar
  Oscar, pc = 3
node = :(($(QuoteNode(TypeVar)))(:G, $(QuoteNode(Any))))
Oscar
  Oscar
    TypeVar(n::Symbol, ub) in Core at boot.jl:252, pc = 1
node = nothing
Oscar
  Oscar
    TypeVar(n::Symbol, ub) in Core at boot.jl:252, pc = 2
node = :(($(QuoteNode(Core.apply_type)))($(QuoteNode(Union))))
Oscar
  Oscar
    TypeVar(n::Symbol, ub) in Core at boot.jl:252, pc = 3
node = :(($(QuoteNode(Core._typevar)))(_J2, %J2, _J3))
Oscar
  Oscar
    TypeVar(n::Symbol, ub) in Core at boot.jl:252, pc = 4
node = :(return %J3)
Oscar
  Oscar, pc = 4
node = :(($(QuoteNode(Core.svec)))(%J3))
Oscar
  Oscar, pc = 5
node = :(($(QuoteNode(Core.svec)))(:G))
Oscar
  Oscar, pc = 6
node = :(($(QuoteNode(Core.svec)))())
Oscar
  Oscar, pc = 7
node = :(($(QuoteNode(Core._structtype)))(Oscar, Symbol("#2133#2134"), %J4, %J5, %J6, false, 1))
Oscar
  Oscar, pc = 8
node = :(var"#2133#2134" = %J7)

signal (11): Segmentation fault: 11
...
fingolfin commented 2 years ago

I can't say why or how, but the problem does not occur for me anymore in latest Julia 1.8 and 1.9 nightly. I've tried prodding it quite a bit and it's working.

No idea what change is responsible, unfortunately.

lassepe commented 2 years ago

I think I'm still seeing exactly this error on Julia 1.8.0-rc4 and nightly

fingolfin commented 2 years ago

@lassepe when you say "exactly" do you mean with the exact same packages and reproducer? Then I would have to check that again :-(

lassepe commented 2 years ago

No no, just the same pattern but with my own package: After I revise, I hit the same segfault as you in typemap.c.

However, in my case it seems to be related to the fact that I have a the julialup julia binary shadowed with a bash function that loads the correct julia binary based on an environment variable. Somehow, that causes Revise to freak out. I guess this causes julia(launcher) to look for a file at the wrong relative directory (because which julia now points to my bash function).