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

Recurrent segmentation fault error #3339

Closed
StevellM opened this issue Feb 8, 2024 · 4 comments
Closed

Recurrent segmentation fault error #3339

StevellM opened this issue Feb 8, 2024 · 4 comments
Labels
bug Something isn't working

Comments

@StevellM
Copy link
Member

StevellM commented Feb 8, 2024

Describe the bug
Some code I run tends to be long while computing double cosets, and very often they just crash. Here are some information about a kind of double cosets I might try to compute in my use cases:

Double cosets: $H\setminus G/K$, where $H, G, K$ are $\mathbb{F}_2$ vector spaces.
$|G| = 51231497335603200$
$|H| = 393216$
$|K| = 490497638400$

I tried to speed up the computations by finding a permutation group isomorphic to $G$, and such a permutation group has degree 4094 in that case.

Before these double cosets computations, I usually have some other group operations like stabilizers computations, restrictions of automorphisms, creation of homomorphisms and computation of their images. It can happen also that computing these double cosets take a certain amount of time when computed alone, but embedded inside the whole process, the computation time (for the double cosets) can be much more larger (currently by a factor 4, waiting to see if it terminates)!

If I run my code on several examples in a row, and even sometimes on one example, I get this kind of errors:

  • Either a segmentation fault (shorten version below)
[1523386] signal (11.128): Segmentation fault                                                                                                                                                                                                                                                                                                                                                                                                                           
in expression starting at REPL[7]:1                                                                                                                                                                                                                                                                                                                                                                                                                                     
sweep_big_list at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:1068 [inlined]                                                                                                                                                                                                                                                                                                                                                                
sweep_big at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:1090 [inlined]                                                                                                                                                                                                                                                                                                                                                                     
gc_sweep_other at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:1508 [inlined]                                                                                                                                                                                                                                                                                                                                                                
_jl_gc_collect at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:3373                                                                                                                                                                                                                                                                                                                                                                          
ijl_gc_collect at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:3518                                                                                                                                                                                                                                                                                                                                                                          
maybe_collect at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:937 [inlined]                                                                                                                                                                                                                                                                                                                                                                  
jl_gc_pool_alloc_inner at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:1293 [inlined]                                                                                                                                                                                                                                                                                                                                                        
jl_gc_pool_alloc_noinline at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gc.c:1350 [inlined]                                                                                                                                                                                                                                                                                                                                                     
jl_gc_alloc_ at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/julia_internal.h:477 [inlined]                  
                                                                                                                                                                                                                                                                                                                                     
[Bunch for  EvalOrExecCall]                                  
 
_call_gap_func at /home/lehrstuhl/ag-gekeler/muller/.julia/packages/GAP/mfhma/src/ccalls.jl:352
_call_gap_func at /home/lehrstuhl/ag-gekeler/muller/.julia/packages/GAP/mfhma/src/ccalls.jl:352                   
GapObj at /home/lehrstuhl/ag-gekeler/muller/.julia/packages/GAP/mfhma/src/ccalls.jl:304                           
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:2894 [inlined]              
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:3076                 
#double_cosets#1442 at /home/lehrstuhl/ag-gekeler/muller/.julia/dev/Oscar/src/Groups/cosets.jl:555                
double_cosets at /home/lehrstuhl/ag-gekeler/muller/.julia/dev/Oscar/src/Groups/cosets.jl:549                      
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:2894 [inlined]              
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:3076                 
#_type_F#1 at /home/lehrstuhl/ag-gekeler/muller/Documents/OG10-bir/code.jl:164                                    
_type_F at /home/lehrstuhl/ag-gekeler/muller/Documents/OG10-bir/code.jl:110                                       
unknown function (ip: 0x7fe55a775b2d)                                                                             
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:2894 [inlined]              
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:3076                 
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]             
do_call at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/interpreter.c:126                   
eval_value at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/interpreter.c:223                
eval_stmt_value at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/interpreter.c:174 [inlined]
eval_body at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/interpreter.c:617                 
jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/interpreter.c:775
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/toplevel.c:934
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/toplevel.c:877
jl_toplevel_eval_flex at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/toplevel.c:877
ijl_toplevel_eval_in at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/toplevel.c:985
eval at ./boot.jl:385 [inlined]                                                                                   
eval_user_input at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:150
repl_backend_loop at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:246
#start_repl_backend#46 at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:231
start_repl_backend at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:228
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:2894 [inlined]              
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:3076                 
#run_repl#59 at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:389
run_repl at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:375
jfptr_run_repl_91689.1 at /opt/julia-1.10.0/lib/julia/sys.so (unknown line)                                       
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:2894 [inlined]              
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:3076                 
#1013 at ./client.jl:432                                                                                          
jfptr_YY.1013_82677.1 at /opt/julia-1.10.0/lib/julia/sys.so (unknown line)                                        
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:2894 [inlined]              
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:3076                 
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]             
jl_f__call_latest at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/builtins.c:812
#invokelatest#2 at ./essentials.jl:887 [inlined]                                                                  
invokelatest at ./essentials.jl:884 [inlined]                                                                     
run_main_repl at ./client.jl:416                                                                                  
exec_options at ./client.jl:333                                                                                   
_start at ./client.jl:552                                                                                         
jfptr__start_82703.1 at /opt/julia-1.10.0/lib/julia/sys.so (unknown line)                                         
_jl_invoke at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:2894 [inlined]              
ijl_apply_generic at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/gf.c:3076                 
jl_apply at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]             
true_main at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/jlapi.c:582                       
jl_repl_entrypoint at /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/src/jlapi.c:731              
main at julia (unknown line)                                                                                      
unknown function (ip: 0x7fe68d829d8f)                                                                             
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)                                               
unknown function (ip: 0x4010b8)                                                                                   
Allocations: 4830951083 (Pool: 4438997408; Big: 391953675); GC: 14065                                             
Segmentation fault (core dumped)    
  • or another weird error which freezes my terminal:
corrupted size vs. prev_size while consolidating

[1538916] signal (6.-6): Aborted
in expression starting at REPL[23]:1

Important note: I did the exact same computations last year and I never had such a problem before. Sometimes double cosets computations were long, but I never had any segmentation fault, while now for the same computations, it is a recurrent issue. It might be that the reason is due to another function, or an accumulation of GAP calls, which then makes garbage collection unhappy.

To Reproduce
Here is the only way I found to give an example which does not always work (quite long code). However the segmentation fault is not always "there", so this example is not always bugging. See the context comment at the end of the issue for why I struggle to provide a useful example.

using Oscar

B = matrix(FlintQQ, 12, 24 ,[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
G = matrix(FlintQQ, 24, 24 ,[-4, -4, -4, -6, 6, -2, -2, 4, 0, -6, 2, -2, -8, -4, -4, -8, -2, 0, -4, -4, -7, -4, -5, -18, -4, -18, -12, -6, 16, -2, -4, 6, 4, -8, 16, 2, -12, -5, -3, 0, -5, 2, -10, -5, -14, -4, -6, -21, -4, -12, -10, -6, 12, -2, -4, 6, 2, -8, 8, 0, -11, -6, -5, -6, -4, 1, -7, -6, -11, -5, -6, -21, -6, -6, -6, -14, 4, -4, -4, 4, -6, -14, -6, -8, -20, -15, -14, -28, -10, -3, -10, -13, -17, -14, -10, -60, 6, 16, 12, 4, -26, 0, 2, -12, -12, 4, -26, -6, 4, -8, -7, -18, -8, -6, 4, -3, 6, -6, 5, -21, -2, -2, -2, -4, 0, -4, -2, 0, -2, -6, -2, -4, -8, -8, -5, -12, -7, -1, -5, -5, -8, -6, -4, -27, -2, -4, -4, -4, 2, -2, -4, 2, -2, -6, -2, -2, -8, -8, -7, -12, -6, -1, -4, -6, -7, -6, -4, -24, 4, 6, 6, 4, -12, 0, 2, -8, -4, 4, -8, -2, 4, -2, 0, -2, -4, -2, 1, 1, 3, -1, 4, -3, 0, 4, 2, -6, -12, -2, -2, -4, -12, -8, -20, -8, -12, -16, -15, -30, -12, -6, -4, -12, -8, -14, -4, -54, -6, -8, -8, -14, 4, -6, -6, 4, -8, -20, -8, -10, -26, -22, -18, -36, -16, -4, -12, -18, -22, -19, -13, -78, 2, 16, 8, -6, -26, -2, -2, -8, -20, -8, -42, -14, -12, -23, -23, -48, -15, -10, 0, -17, -4, -20, -3, -69, -2, 2, 0, -8, -6, -4, -2, -2, -8, -10, -14, -10, -14, -15, -12, -27, -11, -4, -6, -11, -11, -13, -6, -51, -8, -12, -11, -20, 4, -8, -8, 4, -12, -26, -12, -14, -32, -31, -26, -47, -23, -6, -18, -25, -31, -27, -17, -111, -4, -5, -6, -15, -8, -8, -8, -2, -16, -22, -23, -15, -31, -30, -28, -55, -23, -8, -15, -25, -26, -28, -13, -111, -4, -3, -5, -14, -7, -5, -7, 0, -15, -18, -23, -12, -26, -28, -22, -49, -20, -4, -11, -22, -20, -24, -11, -93, -8, 0, -6, -28, -18, -12, -12, -2, -30, -36, -48, -27, -47, -55, -49, -96, -40, -15, -21, -42, -39, -47, -22, -186, -2, -5, -4, -10, -8, -7, -6, -4, -12, -16, -15, -11, -23, -23, -20, -40, -20, -6, -13, -18, -21, -21, -9, -87, 0, 2, 1, -3, -6, -1, -1, -2, -6, -4, -10, -4, -6, -8, -4, -15, -6, 0, -2, -6, -4, -7, -2, -27, -4, -10, -7, -10, 4, -5, -4, 1, -4, -12, 0, -6, -18, -15, -11, -21, -13, -2, -16, -11, -20, -13, -11, -57, -4, -5, -6, -13, -3, -5, -6, 1, -12, -18, -17, -11, -25, -25, -22, -42, -18, -6, -11, -24, -22, -24, -14, -90, -7, -14, -11, -17, 6, -8, -7, 3, -8, -22, -4, -11, -31, -26, -20, -39, -21, -4, -20, -22, -32, -24, -18, -99, -4, -4, -5, -14, -6, -6, -6, -1, -14, -19, -20, -13, -27, -28, -24, -47, -21, -7, -13, -24, -24, -26, -14, -99, -5, -6, -6, -10, 5, -4, -4, 4, -4, -13, -3, -6, -17, -13, -11, -22, -9, -2, -11, -14, -18, -14, -14, -54, -18, -21, -21, -60, -21, -27, -24, -3, -54, -78, -69, -51, -111, -111, -93, -186, -87, -27, -57, -90, -99, -99, -54, -402]);
L = integer_lattice(B, gram = G);
q = discriminant_group(L);
G = orthogonal_group(q);
gensH = ZZMatrix[ZZ[1 0 0 0 0 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0 0 0 0; 0 1 1 1 0 0 0 0 1 0 1 0; 0 0 0 0 0 1 0 0 0 0 0 0; 0 0 0 1 0 1 1 1 0 1 0 1; 0 1 1 1 1 0 0 1 1 0 1 0; 0 1 1 0 1 1 0 1 0 1 1 1; 0 0 0 1 0 1 0 1 0 0 0 1; 0 0 0 1 0 1 0 1 0 1 1 1; 0 1 1 0 1 1 0 1 1 1 1 0],  ZZ[1 0 0 0 0 1 1 0 0 0 1 0; 0 1 0 0 0 0 0 0 1 0 0 1; 0 1 0 1 1 0 0 0 0 0 1 1; 0 0 0 1 1 1 0 1 1 1 1 1; 0 1 1 1 0 1 1 0 0 0 0 1; 0 0 0 0 1 1 1 1 1 1 0 1; 0 0 1 0 0 0 0 0 1 1 1 0; 0 0 0 0 1 1 0 0 0 1 1 0; 0 0 1 0 0 0 1 0 1 1 1 1; 0 1 0 1 0 0 0 1 1 1 0 1; 0 0 1 0 1 0 0 1 0 0 0 1; 0 0 1 0 0 0 1 0 0 1 1 0], ZZ[0 1 0 0 1 0 1 0 1 0 0 0; 1 1 1 0 0 1 1 1 1 1 1 0; 1 0 0 1 0 1 0 0 0 1 1 0; 1 0 1 0 1 1 1 1 1 1 0 1; 1 0 1 1 0 1 1 1 1 1 0 1; 1 0 1 0 1 0 0 0 0 1 0 1; 0 1 1 1 1 1 0 0 1 1 1 0; 0 0 0 0 0 0 0 1 0 0 0 0; 1 1 0 0 0 0 0 1 1 0 1 1; 1 1 0 1 0 0 1 0 1 1 1 1; 1 1 0 1 0 0 1 0 1 0 0 1; 1 1 0 0 0 0 0 1 0 0 1 0], ZZ[1 0 0 1 1 0 0 0 1 1 0 0; 0 1 0 0 0 0 0 0 0 0 0 0; 0 1 0 1 1 0 0 0 1 0 1 0; 0 1 1 1 0 1 1 0 0 1 0 0; 0 0 0 0 1 1 1 0 0 0 1 0; 0 1 1 0 0 1 0 0 0 1 1 0; 0 0 1 0 0 1 1 0 1 0 1 0; 0 0 0 1 1 1 1 1 1 1 1 0; 0 1 0 1 1 1 0 0 1 0 0 0; 0 0 1 1 1 1 0 0 0 0 1 0; 0 1 0 0 0 1 0 0 1 1 1 0; 0 1 0 1 1 1 0 0 0 0 0 1], ZZ[1 0 0 1 1 0 0 0 1 1 0 0; 0 1 0 1 0 1 0 1 1 1 0 0; 0 1 0 0 1 1 0 1 0 1 1 0; 0 0 0 0 0 0 1 1 0 0 0 1; 0 1 1 1 1 0 1 1 0 1 1 1; 0 0 0 1 0 0 0 1 0 0 1 1; 0 0 1 1 0 0 1 1 0 1 1 0; 0 0 0 1 1 1 1 1 1 1 1 0; 0 0 1 1 1 1 0 0 0 0 0 1; 0 1 0 1 1 1 0 0 1 0 1 1; 0 0 1 0 0 1 0 0 0 1 1 1; 0 0 1 1 1 1 0 0 1 0 0 0], ZZ[1 1 1 1 0 0 1 0 1 1 0 1; 0 1 0 1 1 1 1 1 0 1 0 0; 0 0 1 1 1 1 1 1 0 1 0 0; 0 0 0 1 0 0 0 0 0 0 0 0; 0 1 1 1 1 0 1 0 1 1 0 1; 0 0 0 0 0 0 1 0 0 0 1 0; 0 1 1 0 1 1 1 1 1 0 0 1; 0 0 0 1 1 1 1 0 0 1 0 0; 0 1 1 1 0 0 1 0 0 1 0 1; 0 1 1 0 1 0 1 1 1 1 1 1; 0 0 0 0 0 0 0 0 0 0 1 0; 0 1 1 1 0 0 1 0 1 1 0 0], ZZ[1 0 0 1 1 1 1 1 1 1 0 1; 0 0 1 0 1 1 0 1 0 0 0 0; 0 0 1 1 0 1 0 1 1 0 1 0; 0 1 1 1 1 1 0 1 0 0 0 0; 0 0 0 1 0 1 1 1 1 1 0 1; 0 0 0 0 0 1 0 0 0 0 0 0; 0 1 0 1 1 0 0 1 1 0 0 0; 0 1 1 1 1 0 0 1 1 0 1 0; 0 1 0 0 1 1 1 0 1 0 1 0; 0 0 1 0 0 0 1 1 0 1 1 0; 0 1 0 0 0 1 0 0 0 1 1 1; 0 1 0 0 1 1 1 0 0 0 1 1]];
H, _ = sub(G, G.(gensH));
gensK = ZZMatrix[ ZZ[1 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 0 0 0 0 1 0 0 1 0; 0 0 1 1 1 0 0 0 1 0 1 0; 0 1 1 1 0 0 0 0 0 0 0 0; 0 0 1 1 0 0 0 1 1 0 0 0; 0 0 1 0 0 1 0 1 0 0 1 0; 0 0 0 1 0 0 1 1 0 1 1 1; 0 1 0 1 1 0 0 0 1 0 0 0; 0 0 1 0 1 0 0 0 0 1 1 1; 0 0 0 0 1 0 0 1 1 0 0 1; 0 0 0 0 1 0 0 1 1 1 1 1; 0 1 1 0 1 0 0 1 1 1 0 0], ZZ[1 0 0 0 0 0 0 0 0 0 0 0; 0 1 0 0 1 0 0 1 1 1 0 1; 0 0 1 1 1 0 0 0 1 0 1 0; 0 0 0 0 1 0 0 0 1 0 1 0; 0 0 0 1 1 0 0 1 0 1 1 1; 0 0 0 0 1 1 0 1 1 1 0 1; 0 0 0 1 0 0 1 1 0 1 1 1; 0 0 0 0 1 0 0 0 1 1 0 1; 0 0 0 0 0 0 0 0 1 0 0 0; 0 0 0 0 1 0 0 1 1 0 0 1; 0 0 0 0 1 0 0 1 1 1 1 1; 0 0 0 1 0 0 0 1 0 1 1 0], ZZ[1 0 0 1 1 1 0 1 0 1 0 0; 0 1 1 0 1 0 0 0 0 0 0 1; 0 0 0 0 1 0 0 0 1 1 1 1; 0 0 1 0 0 0 1 0 1 0 1 0; 1 1 1 1 1 0 0 1 1 1 1 0; 0 1 1 0 1 0 1 1 1 0 0 1; 0 1 1 1 1 0 1 0 0 0 1 1; 0 1 1 1 1 1 1 0 0 0 1 0; 1 1 0 0 1 0 0 1 0 0 1 0; 1 0 0 0 1 1 1 0 0 1 1 0; 0 1 0 1 0 1 1 1 0 0 0 1; 1 0 0 1 0 1 0 0 1 0 0 0], ZZ[0 1 1 0 0 1 1 0 1 0 1 1; 0 1 0 0 0 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0 0 0 0; 1 1 1 1 0 1 1 0 1 0 1 1; 0 0 0 0 1 0 0 0 0 0 0 0; 0 0 0 0 0 1 0 0 0 0 0 0; 0 0 0 0 0 0 1 0 0 0 0 0; 0 0 0 0 0 0 0 1 0 0 0 0; 0 0 0 0 0 0 0 0 1 0 0 0; 1 1 1 0 0 1 1 0 1 1 1 1; 1 1 1 0 0 1 1 0 1 0 0 1; 0 0 0 0 0 0 0 0 0 0 0 1], ZZ[0 1 1 0 1 0 1 1 1 0 1 1; 0 1 0 0 0 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0 0 0 0; 1 1 1 1 1 0 1 1 1 0 1 1; 0 0 0 0 1 0 0 0 0 0 0 0; 1 1 1 0 1 1 1 1 1 0 1 1; 1 1 1 0 1 0 0 1 1 0 1 1; 1 1 1 0 1 0 1 0 1 0 1 1; 0 0 0 0 0 0 0 0 1 0 0 0; 1 1 1 0 1 0 1 1 1 1 1 1; 1 1 1 0 1 0 1 1 1 0 0 1; 0 0 0 0 0 0 0 0 0 0 0 1], ZZ[1 0 1 0 1 0 0 1 0 1 0 1; 1 1 0 1 1 1 1 0 1 1 1 1; 1 1 0 0 0 1 1 1 0 1 1 0; 0 1 1 1 1 1 1 0 1 0 1 1; 0 0 0 1 0 0 1 1 0 0 0 1; 0 0 1 0 0 1 1 0 1 1 1 1; 1 1 1 1 1 0 0 0 1 1 0 0; 1 0 0 1 0 1 0 0 1 1 0 1; 0 0 1 1 0 0 1 0 1 0 1 0; 1 1 1 1 0 1 1 1 0 0 0 1; 1 0 1 1 1 1 0 1 1 1 1 0; 1 0 1 1 0 0 0 1 1 1 1 0]];
K, _ = sub(G, G.(gensK));
double_cosets(G, H, K)

Expected behavior
I would expect that if I run the same procedure several times on different data, then everything should go smoothly. Here the point is that it looks cumulative, and the segmentation fault is a bit random. On the same set of 20 data, it could bug after the 3rd one, or after the 15th, or never. At least, if there is a bug, I would expect it to happen always at the same time.

Also, the bug seems to be more recurrent when I do the double cosets computation in a sequence of GAP calls (so after some image/kernel/stabilizer computations). When done alone, it takes time but terminates.

System (please complete the following information):
Please paste the output of Oscar.versioninfo(full=true) below. If this does
not work, please paste the output of Julia's versioninfo() and your Oscar
version.

julia> Oscar.versioninfo(full=true)
OSCAR version 0.15.0-DEV - #newfbr, 8ded0df36f -- 2024-02-07 13:36:04 +0000
  combining:
    AbstractAlgebra.jl   v0.37.5
    GAP.jl               v0.10.2
    Hecke.jl             v0.27.0
    Nemo.jl              v0.41.3
    Polymake.jl          v0.11.12
    Singular.jl          v0.22.1
  building on:
    Antic_jll               v0.201.500+0
    Arb_jll                 v200.2300.0+0
    Calcium_jll             v0.401.100+0
    FLINT_jll               v200.900.9+0
    GAP_jll                 v400.1200.200+7
    Singular_jll            v403.214.1400+0
    libpolymake_julia_jll   v0.11.2+0
    libsingular_julia_jll   v0.40.11+0
    polymake_jll            v400.1100.1+0
See `]st -m` for a full list of dependencies.

Julia Version 1.10.0
Commit 3120989f39b (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 64 × AMD Ryzen Threadripper PRO 5975WX 32-Cores
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
  Threads: 1 on 64 virtual cores
Official https://julialang.org/ release
...

Additional context
The computations are done with external codes on a local branch. The reasons are that the fixes I need are not yet available in Oscar, I need to use Magma in parallel. However, this does not seem to be somewhere related to the issue I guess. The computations are quite heavy so I cannot really give a mre. But my code, branch and data could be shared via git and Oscar serialization if someone wants to try to investigate further on my particular set of data.

@StevellM StevellM added the bug Something isn't working label Feb 8, 2024
@benlorenz
Copy link
Member

A wild guess:
Can you try a dev build for the upcoming julia 1.10.1? For example from the buildkite page here:
https://buildkite.com/julialang/julia-release-1-dot-10/builds/215#018d7eaa-b1c3-4010-881d-11f2d71dc373
It should jump to the build x86_64-linux-gnu job, then click on Artifacts and use the julia version from that tarball.

Note: We did have some more or less random GC corruption errors in our CI, see #3184 for details. And these should be fixed in 1.10.1.

@fingolfin
Copy link
Member

@StevellM Now that Julia 1.10.1 has been released, definitely upgrade to it and let us know if the issue still occurs.

@StevellM
Copy link
Member Author

Sorry it took me some time to react. Thank you for both your suggestions: I am working on a server on which I could not apply any of the two things you have told me. This morning I have asked to have Julia updated. I will re-run the buggy computations now and see whether it still breaks.
I will keep you updated.

@StevellM
Copy link
Member Author

Update: while it was crashing after few of my cases (3 to 5) in julia 1.10.0, in julia 1.10.1 it keeps running even after the 26th case. In summary: problem solved!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants