ModelingToolkit takes forever to precompile on Windows 11

I did:

(@v1.10) pkg> add OrdinaryDiffEq@v6.76.0
(@v1.10) pkg> add ModelingToolkit

This time, precompilation finished (in some 115 seconds for the second add).

I have not tried with v6.77.0.

  • Question: if I now do (@v1.10) pkg> update… will that overrule my “pinning” of OrdinaryDiffEq, i.e., will that also try to update OrdinaryDiffEq to the latest version?

pin should keep the version locked

On my side, the ‘format’ commit worked fine.
Then I redid:
add OrdinaryDiffEq@6.76.0 => OK
add OrdinaryDiffEq@6.77.0 => OK!

So I cannot replicate the GC error I got previously…
I am on the latest: ModelingToolkit v9.14.0

What…

Can others confirm v6.77 is now okay? I’m confused, do we have a clear upper and lower bound where the lower bound is fine but the upper bound is not?

Just got the GC error on OrdinaryDiffEq = “6.78.0”.


Precompiling ModelingToolkit
        Info Given ModelingToolkit was explicitly requested, output will be shown live

Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x7ffb847676bf -- gc_setmark_pool_ at C:/workdir/src\gc.c:876 [inlined]
gc_setmark_pool at C:/workdir/src\gc.c:895 [inlined]
gc_setmark at C:/workdir/src\gc.c:902 [inlined]
gc_setmark at C:/workdir/src\gc.c:898 [inlined]
gc_mark_outrefs at C:/workdir/src\gc.c:2606 [inlined]
gc_mark_loop_serial_ at C:/workdir/src\gc.c:2679
in expression starting at C:\Users\guill\.julia\packages\ModelingToolkit\BAG22\src\ModelingToolkit.jl:6
gc_setmark_pool_ at C:/workdir/src\gc.c:876 [inlined]
gc_setmark_pool at C:/workdir/src\gc.c:895 [inlined]
gc_setmark at C:/workdir/src\gc.c:902 [inlined]
gc_setmark at C:/workdir/src\gc.c:898 [inlined]
gc_mark_outrefs at C:/workdir/src\gc.c:2606 [inlined]
gc_mark_loop_serial_ at C:/workdir/src\gc.c:2679
gc_mark_loop_serial at C:/workdir/src\gc.c:2702
gc_mark_loop at C:/workdir/src\gc.c:2897 [inlined]
_jl_gc_collect at C:/workdir/src\gc.c:3221
ijl_gc_collect at C:/workdir/src\gc.c:3518
maybe_collect at C:/workdir/src\gc.c:937 [inlined]
jl_gc_pool_alloc_inner at C:/workdir/src\gc.c:1293
jl_gc_pool_alloc_noinline at C:/workdir/src\gc.c:1350 [inlined]
jl_gc_alloc_ at C:/workdir/src\julia_internal.h:477 [inlined]
jl_gc_alloc at C:/workdir/src\gc.c:3570
_new_array_ at C:/workdir/src\array.c:134
_new_array at C:/workdir/src\array.c:198 [inlined]
ijl_alloc_array_1d at C:/workdir/src\array.c:436
Array at .\boot.jl:477 [inlined]
Array at .\boot.jl:496 [inlined]
IncrementalCompact at .\compiler/ssair\ir.jl:646
IncrementalCompact at .\compiler/ssair\ir.jl:673 [inlined]
compact! at .\compiler/ssair\ir.jl:1855
compact! at .\compiler/ssair\ir.jl:1855 [inlined]
run_passes at .\compiler\optimize.jl:489
run_passes at .\compiler\optimize.jl:504 [inlined]
optimize at .\compiler\optimize.jl:453 [inlined]
_typeinf at .\compiler\typeinfer.jl:272
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2885
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
return_type_tfunc at .\compiler\tfuncs.jl:2644
abstract_call_known at .\compiler\abstractinterpretation.jl:2050
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_apply at .\compiler\abstractinterpretation.jl:1608
abstract_call_known at .\compiler\abstractinterpretation.jl:2000
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2885
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2885
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2909
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_edge at .\compiler\typeinfer.jl:930
abstract_call_method at .\compiler\abstractinterpretation.jl:629
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:95
abstract_call_known at .\compiler\abstractinterpretation.jl:2083
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_apply at .\compiler\abstractinterpretation.jl:1608
abstract_call_known at .\compiler\abstractinterpretation.jl:2000
abstract_call at .\compiler\abstractinterpretation.jl:2165
abstract_call at .\compiler\abstractinterpretation.jl:2158
abstract_call at .\compiler\abstractinterpretation.jl:2350
abstract_eval_call at .\compiler\abstractinterpretation.jl:2366
abstract_eval_statement_expr at .\compiler\abstractinterpretation.jl:2376
abstract_eval_statement at .\compiler\abstractinterpretation.jl:2620
abstract_eval_basic_statement at .\compiler\abstractinterpretation.jl:2885
typeinf_local at .\compiler\abstractinterpretation.jl:3094
typeinf_nocycle at .\compiler\abstractinterpretation.jl:3182
_typeinf at .\compiler\typeinfer.jl:247
typeinf at .\compiler\typeinfer.jl:216
typeinf_ext at .\compiler\typeinfer.jl:1051
typeinf_ext_toplevel at .\compiler\typeinfer.jl:1082
typeinf_ext_toplevel at .\compiler\typeinfer.jl:1078
jfptr_typeinf_ext_toplevel_39162.1 at C:\Users\guill\.julia\juliaup\julia-1.10.0+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
_jl_invoke at C:/workdir/src\gf.c:2894 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:3076 [inlined]
jl_apply at C:/workdir/src\julia.h:1982 [inlined]
jl_type_infer at C:/workdir/src\gf.c:394
_generate_from_hint at C:/workdir/src\gf.c:2755 [inlined]
jl_compile_now at C:/workdir/src\gf.c:2769 [inlined]
ijl_compile_method_instance at C:/workdir/src\gf.c:2781
ijl_compile_hint at C:/workdir/src\gf.c:2819
precompile at .\loading.jl:3204
precompile_mi at C:\Users\guill\.julia\packages\PrecompileTools\L8A3n\src\PrecompileTools.jl:13
foreach at .\abstractarray.jl:3094
recompile_invalidations at C:\Users\guill\.julia\packages\PrecompileTools\L8A3n\src\invalidations.jl:23
unknown function (ip: 000001ff3af31973)
jl_apply at C:/workdir/src\julia.h:1982 [inlined]
do_call at C:/workdir/src\interpreter.c:126
eval_value at C:/workdir/src\interpreter.c:223
eval_stmt_value at C:/workdir/src\interpreter.c:174 [inlined]
eval_body at C:/workdir/src\interpreter.c:635
jl_interpret_toplevel_thunk at C:/workdir/src\interpreter.c:775
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:934
jl_eval_module_expr at C:/workdir/src\toplevel.c:215 [inlined]
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:736
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:877
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:877
ijl_toplevel_eval at C:/workdir/src\toplevel.c:943 [inlined]
ijl_toplevel_eval_in at C:/workdir/src\toplevel.c:985
eval at .\boot.jl:385 [inlined]
include_string at .\loading.jl:2070
_include at .\loading.jl:2130
include at .\Base.jl:495 [inlined]
include_package_for_output at .\loading.jl:2216
jfptr_include_package_for_output_84978.1 at C:\Users\guill\.julia\juliaup\julia-1.10.0+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1982 [inlined]
do_call at C:/workdir/src\interpreter.c:126
eval_value at C:/workdir/src\interpreter.c:223
eval_stmt_value at C:/workdir/src\interpreter.c:174 [inlined]
eval_body at C:/workdir/src\interpreter.c:635
jl_interpret_toplevel_thunk at C:/workdir/src\interpreter.c:775
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:934
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:877
ijl_toplevel_eval at C:/workdir/src\toplevel.c:943 [inlined]
ijl_toplevel_eval_in at C:/workdir/src\toplevel.c:985
eval at .\boot.jl:385 [inlined]
include_string at .\loading.jl:2070
include_string at .\loading.jl:2080 [inlined]
exec_options at .\client.jl:316
_start at .\client.jl:552
jfptr__start_86719.1 at C:\Users\guill\.julia\juliaup\julia-1.10.0+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1982 [inlined]
true_main at C:/workdir/src\jlapi.c:582
jl_repl_entrypoint at C:/workdir/src\jlapi.c:731
mainCRTStartup at C:/workdir/cli\loader_exe.c:58
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
Allocations: 9020293 (Pool: 9011689; Big: 8604); GC: 12
  Progress [>                                        ]  0/1
  ◑ ModelingToolkit

I am certain I got it in 6.77.0 before, as per the screenshots…

I’m in the process of checking 6.77.0…

  • Pinning OrdinaryDiffEq to v6.77.0 and then adding ModelingToolkit works – ModelingToolkit is precompiled.

I’ll do a couple of other tests.

Just for precision: I’m on Windows 11, 64bit, latest version, and on Julia v1.10.3.

No other packages in your manifest changed?

 [1dea7af3] ↑ OrdinaryDiffEq v6.77.0 ⇒ v6.78.0
    Updating `C:\Users\Bernt\.julia\environments\v1.10\Manifest.toml`
Precompiling project...
  Progress [===========================>             ]  4/6
  ◐ BoundaryValueDiffEq

This has been hanging for a while.

no I don’t think so. 80% sure…

I went back to a working state in OrdinaryDiffEq 6.76.0.
And then updated to 6.77.0: I have:

I close the process and run my test script → ModelingToolkit precompiles → GC error and precompilation hanging.
Then I killed the process, remove the stale pidfile of ModelingTookit and start my script again → working

I have the same exact setup: Julia 1.10.3 with Windows 11, but OrdinaryDiffEq v6.77.0 is not working, ModelingToolkit precompile hangs for over 15 minutes.

The only difference I see in the Manifest is OrdinaryDiffEq

Manifest.v6.76.0.toml (55.5 KB)
Manifest.v6.77.0.toml (55.5 KB)

OK, so it’s clear that this problem is not fully repeatable. I just walked the commit list from v6.76.0 to v6.77.0, and got thru the whole list. So that means previously v6.77.0 didn’t work, but now it is!

1 Like

I have 6.77.0 and 6.78.0 not working, but 6.77.1 seems to work.

Never mind, this was just another case of it not being repeatable. I got it to work on 6.77.1, but it failed after clearing .julia\compiled\v1.10 and trying again.

Yeah, so what we’re searching for now is reports of the oldest-known broken commit (as opposed to the last working commit). I think that’s still v6.77.0. If anyone sees this failure earlier (or on a specific commit between v6.76 and v6.77) then those would be significantly helpful reports.

I suppose it’s not too surprising this is a heisenbug given GC’s involvement.

3 Likes

I’m confused. When I add and remove packages, it is as if they are not removed at all.

  • If I add OrdinaryDiffEq, say, 6.77.0, it takes a few minutes to precompile, and shows up with the status command.
  • If I then remove OrdinaryDiffEq, it does not show up in the status command.
  • However, if I add OrdinaryDiffEq again, precompilation takes place instantaneously.

Seems like I have to delete both subdirectories compiled and environments to properly get rid of the packages.

[My point is that when I stepped up through version numbers of OrdinaryDiffEq until crash, and then started to step down again – without deleting the subdirectories – the behavior was different for a specific version when stepping up, than when stepping down. So there seemed to be some residuals.]

So I have now started to delete both compiled and environments between each attempt. In other words, there is no trace of packages between each attempt (I think…). Here is my finding:

  • When add OrdinaryDiffEq v6.78.0, precompilation seems to stall. When I interrupt it, go to the Julia prompt, and do using OrdinaryDiffEq, Julia seems to accept that.
    – I then add ModelingToolkit. This also stalls during precompilation. If I interrupt the precompilation, and do using ModelingToolkit at the Julia prompt, Julia does not accept this, and goes into a precompilation loop again.
  • I then delete compiles and environments directory, and do add OrdinaryDiffEq@6.77.1. Precompilation completes.
    – I then add ModelingToolkit. After a while, precompilation completes.

My guess is thus that the problem is introduced in the upgrade from OrdinaryDiffEq v 6.77.1 - 6.78.0.

Yes, because the hang is happening when precompiling, you need to clear out previously working things in the compiled directory. Adding and removing packages from a given environment does not remove them from your disk (neither the package source nor its compiled image).

Again, the important thing here is the oldest commit on which we’ve observed the issue.

I wonder if passing an absurdly small heap size hint would help make this more repeatable as it should get the GC involved more often. Folks on the bug hunt here could try starting Julia with the flag --heap-size-hint=200M. Do those flags propagate to the precompile workers?

Inconclusive, but fix in place ci · SciML/OrdinaryDiffEq.jl@fd37f75 · GitHub failed twice (once without and once with --heap-size-hint=200M) and succeeded once without the heap size hint. The preceding commit succeeded once without the heap size hint. Will re-test set atmp · SciML/OrdinaryDiffEq.jl@c6ec039 · GitHub with heap size hint now.

1 Like

Detected a failure on set atmp · SciML/OrdinaryDiffEq.jl@c6ec039 · GitHub on the second attempt with the heap size hint.

1 Like

Hm… I get a problem with MethodOfLines, too. Will do some checking.

Weird: If I delete environments and compiled, add OrdinaryDiffEq@6.77.1 and then pin OrdinaryDiffEq followed by MethodOfLines, MethodOfLines now precompiles.

I’m pretty sure I got problems previously when I tried to install MethodOfLines after I had installed a number of other packages… I’ll try again, maybe my head starts to spin at this moment :open_mouth: