oscar-system / Oscar.jl

A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.
https://www.oscar-system.org
Other
338 stars 119 forks source link

elliptic surface tests get stuck (and cancelled after 2.5 hours) #3676

Open benlorenz opened 4 months ago

benlorenz commented 4 months ago

e.g. here with julia 1.10 on ubuntu: https://github.com/oscar-system/Oscar.jl/actions/runs/8927137202/job/24519839319?pr=3672#step:8:474

But this seems to happen on other julia versions / operating systems as well:

Downstream tests for Polymake ran for almost 5 hours with julia 1.6: https://github.com/oscar-system/Polymake.jl/actions/runs/8921273104/job/24501206313?pr=485

Or on macos here: https://github.com/oscar-system/Oscar.jl/actions/runs/8868048924/job/24347226536#step:8:424

julia 1.11: https://github.com/oscar-system/Oscar.jl/actions/runs/8920051759/job/24497347178

See also https://github.com/oscar-system/Oscar.jl/pull/3672#issuecomment-2091305190

HechtiDerLachs commented 4 months ago

But it does not always happen, does it? I mean: Usually the test seems to go through.

benlorenz commented 4 months ago

But it does not always happen, does it? I mean: Usually the test seems to go through.

Correct, it does not happen every time but quite often. (So much that it is annoying in the CI)

HechtiDerLachs commented 4 months ago

As already mentioned on #3677 : I guess that randomness in primary decomposition might be the reason for the occasional failure. If we can pass on some random seed that should solve the problem. Otherwise I would disable the tests for elliptic surfaces.

benlorenz commented 4 months ago

I did get a stuck process last night, but it doesn't seem to reproduce with the same seed, maybe there is something involved that uses a different RNG. (The CI should also use the same seed every time)

But I did get a backtrace of the process (at about 6 hours of runtime):

__libc_malloc at /lib64/libc.so.6 (unknown line)
omEmulateValloc at /workspace/srcdir/Singular/omalloc/omAllocSystem.c:166
_omVallocFromSystem at /workspace/srcdir/Singular/omalloc/omAllocSystem.c:320
omAllocNewBinPagesRegion at /workspace/srcdir/Singular/omalloc/omBinPage.c:302
omAllocBinPage at /workspace/srcdir/Singular/omalloc/omBinPage.c:129
omAllocNewBinPage at /workspace/srcdir/Singular/omalloc/om_Alloc.c:38
omAllocBinFromFullPage at /workspace/srcdir/Singular/omalloc/om_Alloc.c:145
_Z49p_Minus_mm_Mult_qq__FieldZp_LengthFour_OrdGeneralP8spolyrecS0_S0_RiS0_P8ip_sring at /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libpolys.so (unknown line)
_Z22kBucket_Minus_m_Mult_pP7kBucketP8spolyrecS2_PiS2_ at /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libpolys.so (unknown line)
_Z12ksReducePolyP8sLObjectP8sTObjectP8spolyrecPP7snumberPS4_P10skStrategyi at /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so (unknown line)
_Z8redHoneyP8sLObjectP10skStrategy at /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so (unknown line)
_Z3bbaP10sip_sidealS0_P6intvecS2_P10skStrategy at /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so (unknown line)
_Z4kStdP10sip_sidealS0_6tHomogPP6intvecS3_iiS3_PFiP10skStrategyE at /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so (unknown line)
_Z6idQuotP10sip_sidealS0_ii at /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so (unknown line)
_ZNSt17_Function_handlerIFP10sip_sidealS1_S1_bP8ip_sringEZ22singular_define_idealsRN5jlcxx6ModuleEEUlS1_S1_bS3_E9_E9_M_invokeERKSt9_Any_dataOS1_SD_ObOS3_ at /home/datastore/lorenz/software/julia/depot/artifacts/a175ce5cace21230383a5c5492bef18c54addee0/lib/libsingular_julia.so (unknown line)
_ZN5jlcxx6detail11CallFunctorIP10sip_sidealJS3_S3_bP8ip_sringEE5applyEPKvNS_13WrappedCppPtrES9_bS9_ at /home/datastore/lorenz/software/julia/depot/artifacts/a175ce5cace21230383a5c5492bef18c54addee0/lib/libsingular_julia.so (unknown line)
id_Quotient at /home/datastore/lorenz/software/julia/depot/packages/CxxWrap/5IZvn/src/CxxWrap.jl:624 [inlined]
quotient at /home/datastore/lorenz/software/julia/depot/packages/Singular/tSLjL/src/ideal/ideal.jl:560 [inlined]
saturation at /home/datastore/lorenz/software/julia/depot/packages/Singular/tSLjL/src/ideal/ideal.jl:613
unknown function (ip: 0x145d0e1880ce)
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
saturation at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/mpoly-ideals.jl:343
#saturated_ideal#818 at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/mpoly-localizations.jl:1717
saturated_ideal at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/mpoly-localizations.jl:1699 [inlined]
ideal_membership at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/mpoly-localizations.jl:1890
in at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/localization_interface.jl:503 [inlined]
ideal_membership at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/mpolyquo-localizations.jl:1804
in at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/localization_interface.jl:503
unknown function (ip: 0x145d0bf36799)
#731 at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/localization_interface.jl:514 [inlined]
_all at ./reduce.jl:1288 [inlined]
#all#851 at ./reducedim.jl:1023 [inlined]
all at ./reducedim.jl:1023 [inlined]
issubset at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/localization_interface.jl:514
== at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/Rings/localization_interface.jl:518
unknown function (ip: 0x145d0bf36480)
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
match_on_intersections at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/IdealSheaves.jl:1024
unknown function (ip: 0x145d0a3d445e)
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
#maximal_associated_points#7671 at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/IdealSheaves.jl:829
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
maximal_associated_points at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/IdealSheaves.jl:805
unknown function (ip: 0x145d0a301005)
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
fiber_components at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/elliptic_surface.jl:940
#8400 at ./array.jl:0
iterate at ./generator.jl:47 [inlined]
collect at ./array.jl:834
__compute__trivial_lattice__ at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/elliptic_surface.jl:754
#8401 at /home/datastore/lorenz/software/julia/depot/packages/AbstractAlgebra/wVuNz/src/Attributes.jl:357 [inlined]
get! at ./dict.jl:479
unknown function (ip: 0x145d0adbd110)
unknown function (ip: 0x145d0adaefa9)
unknown function (ip: 0x145d0adaef7b)
get_attribute! at /home/datastore/lorenz/software/julia/depot/packages/AbstractAlgebra/wVuNz/src/Attributes.jl:230 [inlined]
_trivial_lattice at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/elliptic_surface.jl:716 [inlined]
trivial_lattice at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/elliptic_surface.jl:798
_algebraic_lattice at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/elliptic_surface.jl:251
__compute_algebraic_lattice__ at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/elliptic_surface.jl:247 [inlined]
#8378 at /home/datastore/lorenz/software/julia/depot/packages/AbstractAlgebra/wVuNz/src/Attributes.jl:357 [inlined]
get! at ./dict.jl:479
get_attribute! at /home/datastore/lorenz/software/julia/depot/packages/AbstractAlgebra/wVuNz/src/Attributes.jl:230 [inlined]
algebraic_lattice at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/experimental/Schemes/elliptic_surface.jl:246
unknown function (ip: 0x145cf6af47a5)
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
jl_apply at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]
do_call at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:126
eval_value at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:223
eval_stmt_value at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:174 [inlined]
eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:617
eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:544
eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:544
eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:544
eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:544
eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:544
jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:775
jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:934
jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:877
ijl_toplevel_eval_in at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:985
eval at ./boot.jl:385 [inlined]
include_string at ./loading.jl:2076
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
_include at ./loading.jl:2136
include at ./Base.jl:496
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
#34 at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/utils/tests.jl:176
with_unicode at /home/datastore/lorenz/software/julia/depot/packages/AbstractAlgebra/wVuNz/src/PrettyPrinting.jl:1773
#test_module#33 at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/utils/tests.jl:122 [inlined]
test_module at /home/datastore/lorenz/software/julia/Oscar-tmp.jl/src/utils/tests.jl:121
unknown function (ip: 0x145d189c1a29)
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
jl_apply at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]
do_call at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:126
eval_value at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:223
eval_stmt_value at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:174 [inlined]
eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:617
jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:775
jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:934
jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:877
jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:877
ijl_toplevel_eval_in at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:985
eval at ./boot.jl:385 [inlined]
exec_options at ./client.jl:291
_start at ./client.jl:552
jfptr__start_82726.1 at /net/site-local.linux64/julia/julia-1.10.3/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077
jl_apply at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]
true_main at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/jlapi.c:582
jl_repl_entrypoint at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/jlapi.c:731
main at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/cli/loader_exe.c:58
__libc_start_main at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8)
unknown function (ip: (nil))
HechtiDerLachs commented 4 months ago

Alright, thanks for sharing!

Admittedly this is not the place I anticipated the execution to get stuck. But it might as well be the case that previous faulty primary decomposition have eaten up all memory already and that it got stuck in a random allocation here, correct?

I changed the default algorithm for primary decomposition in #3672. Let's see whether this improves the situation for the moment.

benlorenz commented 4 months ago

It is not running out of memory, the process has about 4GB right now.

I did attach a gdb to another stuck process (this one is at about 6GB memory), and it is slowly working through some ideal quotients (idQuot). I was able to step out of the singular calls (it took several minutes), and then I let it continue. Once stopping it a second time it was working through ideal quotients again:

(gdb) bt
#0  0x000014922e18d6a6 in p_Minus_mm_Mult_qq__FieldZp_LengthFour_OrdGeneral(spolyrec*, spolyrec*, spolyrec*, int&, spolyrec*, ip_sring*) ()
   from /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libpolys.so
#1  0x000014922e0ad7e2 in kBucket_Minus_m_Mult_p(kBucket*, spolyrec*, spolyrec*, int*, spolyrec*) ()
   from /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libpolys.so
#2  0x000014922dc000ea in ksReducePoly(sLObject*, sTObject*, spolyrec*, snumber**, spolyrec**, skStrategy*, int) ()
   from /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so
#3  0x000014922dc34755 in redHoney(sLObject*, skStrategy*) () from /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so
#4  0x000014922dc35fcc in bba(sip_sideal*, sip_sideal*, intvec*, intvec*, skStrategy*) () from /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so
#5  0x000014922dc23293 in kStd(sip_sideal*, sip_sideal*, tHomog, intvec**, intvec*, int, int, intvec*, int (*)(skStrategy*)) ()
   from /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so
#6  0x000014922dd1a6c3 in idQuot(sip_sideal*, sip_sideal*, int, int) () from /home/datastore/lorenz/software/julia/depot/artifacts/02fd3d650c97533a20dab85f8b50eab2ecefe00a/lib/libSingular.so
#7  0x000014929318a359 in std::_Function_handler<sip_sideal* (sip_sideal*, sip_sideal*, bool, ip_sring*), singular_define_ideals(jlcxx::Module&)::{lambda(sip_sideal*, sip_sideal*, bool, ip_sring*)#11}>::_M_invoke(std::_Any_data const&, sip_sideal*&&, sip_sideal*&&, bool&&, ip_sring*&&) () from /home/datastore/lorenz/software/julia/depot/artifacts/a175ce5cace21230383a5c5492bef18c54addee0/lib/libsingular_julia.so
#8  0x00001492931938b6 in jlcxx::detail::CallFunctor<sip_sideal*, sip_sideal*, sip_sideal*, bool, ip_sring*>::apply(void const*, jlcxx::WrappedCppPtr, jlcxx::WrappedCppPtr, bool, jlcxx::WrappedCppPtr) ()
   from /home/datastore/lorenz/software/julia/depot/artifacts/a175ce5cace21230383a5c5492bef18c54addee0/lib/libsingular_julia.so
#9  0x000014928f18d4b7 in ?? ()
#10 0x0000000000000008 in ?? ()
#11 0x00007ffff6ac7320 in ?? ()

(unfortunately the backtrace is broken further down)

joschmitt commented 4 months ago

I ran the tests in test/AlgebraicGeometry/Schemes/elliptic_surface.jl a few times. It got stuck twice (out of ~30 attempts) in the testset elliptic parameter. By 'stuck' I mean that it took more than 10 minutes instead of the usual 2.5 minutes and I canceled it; maybe this is nonsense, but at least it happened twice. In both cases, I got the following stacktrace after hitting Ctrl+C:

Stacktrace:
  [1] id_Quotient
    @ ~/.julia/packages/CxxWrap/5IZvn/src/CxxWrap.jl:624 [inlined]
  [2] quotient
    @ ~/.julia/packages/Singular/C3EMh/src/ideal/ideal.jl:560 [inlined]
  [3] saturation(I::Singular.sideal{Singular.spoly{Singular.n_Zp}}, J::Singular.sideal{Singular.spoly{Singular.n_Zp}})
    @ Singular ~/.julia/packages/Singular/C3EMh/src/ideal/ideal.jl:613
  [4] saturation(I::MPolyIdeal{FqMPolyRingElem}, J::MPolyIdeal{FqMPolyRingElem})
    @ Oscar ~/.julia/dev/Oscar/src/Rings/mpoly-ideals.jl:343
  [5] saturated_ideal(I::Oscar.MPolyLocalizedIdeal{…}; strategy::Symbol, with_generator_transition::Bool)
    @ Oscar ~/.julia/dev/Oscar/src/Rings/mpoly-localizations.jl:1719
  [6] saturated_ideal
    @ ~/.julia/dev/Oscar/src/Rings/mpoly-localizations.jl:1701 [inlined]
  [7] ideal_membership(a::Oscar.MPolyLocRingElem{…}, I::Oscar.MPolyLocalizedIdeal{…})
    @ Oscar ~/.julia/dev/Oscar/src/Rings/mpoly-localizations.jl:1892
  [8] in
    @ ~/.julia/dev/Oscar/src/Rings/localization_interface.jl:503 [inlined]
  [9] ideal_membership(a::Oscar.MPolyQuoLocRingElem{…}, I::Oscar.MPolyQuoLocalizedIdeal{…})
    @ Oscar ~/.julia/dev/Oscar/src/Rings/mpolyquo-localizations.jl:1804
 [10] in(f::Oscar.MPolyQuoLocRingElem{…}, I::Oscar.MPolyQuoLocalizedIdeal{…})
    @ Oscar ~/.julia/dev/Oscar/src/Rings/localization_interface.jl:503
 [11] #728
    @ ~/.julia/dev/Oscar/src/Rings/localization_interface.jl:514 [inlined]
 [12] _all
    @ ./reduce.jl:1288 [inlined]
 [13] all
    @ ./reducedim.jl:1023 [inlined]
 [14] issubset(I::Oscar.MPolyQuoLocalizedIdeal{…}, J::Oscar.MPolyQuoLocalizedIdeal{…})
    @ Oscar ~/.julia/dev/Oscar/src/Rings/localization_interface.jl:514
 [15] ==(I::Oscar.MPolyQuoLocalizedIdeal{…}, J::Oscar.MPolyQuoLocalizedIdeal{…})
    @ Oscar ~/.julia/dev/Oscar/src/Rings/localization_interface.jl:518
 [16] match_on_intersections(X::EllipticSurface{…}, U::AffineScheme{…}, I::Oscar.MPolyQuoLocalizedIdeal{…}, associated_list::Vector{…}, check::Bool)
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/IdealSheaves.jl:1024
 [17] maximal_associated_points(I::IdealSheaf{EllipticSurface{…}, AbsAffineScheme, Ideal, Map}; covering::Covering{FqField})
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/IdealSheaves.jl:829
 [18] maximal_associated_points(I::IdealSheaf{EllipticSurface{…}, AbsAffineScheme, Ideal, Map})
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/IdealSheaves.jl:805
 [19] fiber_components(S::EllipticSurface{FqField, AbstractAlgebra.Generic.FracFieldElem{…}}, P::Vector{FqFieldElem})
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/elliptic_surface.jl:940
 [20] (::Oscar.var"#8389#8391"{EllipticSurface{FqField, AbstractAlgebra.Generic.FracFieldElem{…}}, FqField})(i::FqFieldElem)
    @ Oscar ./array.jl:0
 [21] iterate
    @ ./generator.jl:47 [inlined]
 [22] collect(itr::Base.Generator{Vector{FqFieldElem}, Oscar.var"#8389#8391"{EllipticSurface{…}, FqField}})
    @ Base ./array.jl:834
 [23] __compute__trivial_lattice__(S::EllipticSurface{FqField, AbstractAlgebra.Generic.FracFieldElem{FqPolyRingElem}})
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/elliptic_surface.jl:754
 [24] #8390
    @ ~/.julia/packages/AbstractAlgebra/5q3jO/src/Attributes.jl:357 [inlined]
 [25] get!(default::Oscar.var"#8390#8392"{EllipticSurface{…}}, h::Dict{Symbol, Any}, key::Symbol)
    @ Base ./dict.jl:479
 [26] get_attribute!
    @ ~/.julia/packages/AbstractAlgebra/5q3jO/src/Attributes.jl:230 [inlined]
 [27] _trivial_lattice
    @ ~/.julia/dev/Oscar/experimental/Schemes/elliptic_surface.jl:716 [inlined]
 [28] trivial_lattice(X::EllipticSurface{FqField, AbstractAlgebra.Generic.FracFieldElem{FqPolyRingElem}})
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/elliptic_surface.jl:798
 [29] _algebraic_lattice(X::EllipticSurface{…}, mwl_basis::Vector{…})
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/elliptic_surface.jl:251
 [30] __compute_algebraic_lattice__
    @ ~/.julia/dev/Oscar/experimental/Schemes/elliptic_surface.jl:247 [inlined]
 [31] #8367
    @ ~/.julia/packages/AbstractAlgebra/5q3jO/src/Attributes.jl:357 [inlined]
 [32] get!(default::Oscar.var"#8367#8368"{EllipticSurface{…}}, h::Dict{Symbol, Any}, key::Symbol)
    @ Base ./dict.jl:479
 [33] get_attribute!
    @ ~/.julia/packages/AbstractAlgebra/5q3jO/src/Attributes.jl:230 [inlined]
 [34] algebraic_lattice(X::EllipticSurface{FqField, AbstractAlgebra.Generic.FracFieldElem{FqPolyRingElem}})
    @ Oscar ~/.julia/dev/Oscar/experimental/Schemes/elliptic_surface.jl:246
 [35] macro expansion
    @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Test/src/Test.jl:669 [inlined]
 [36] macro expansion
    @ ~/Code/juliadev/Oscar/test/AlgebraicGeometry/Schemes/elliptic_surface.jl:81 [inlined]
 [37] macro expansion
    @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Test/src/Test.jl:1577 [inlined]
 [38] macro expansion
    @ ~/Code/juliadev/Oscar/test/AlgebraicGeometry/Schemes/elliptic_surface.jl:66 [inlined]
 [39] macro expansion
    @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Test/src/Test.jl:1577 [inlined]
 [40] top-level scope
    @ ~/Code/juliadev/Oscar/test/AlgebraicGeometry/Schemes/elliptic_surface.jl:2
 [41] include
    @ ./client.jl:489 [inlined]
 [42] top-level scope
    @ ./REPL[11]:7
in expression starting at /home/johannes/Code/juliadev/Oscar/test/AlgebraicGeometry/Schemes/elliptic_surface.jl:1
Some type information was truncated. Use `show(err)` to see complete types.

So the culprit appears to be an ideal saturation triggered by a membership test in a local ring. This would also match @benlorenz observation with the ideal quotients.

joschmitt commented 4 months ago

More digging: after some attempts, saturation was called with an ideal with three generators in three variables of degrees 124, 126 and 38. I have a file with the generators which needs 359KB. I guess that explains the runtime.

afkafkafk13 commented 4 months ago

Yet it is the randomness of the minimal associated primes which changes the order of the components of a decomposition and leads to these intermittent problems. The saturation is called inside minimal_associated_points (see lines [17] and [18] in the stacktrace) in a comparison of primary decomposition data.