How can I diagnose / get more information about this Julia error?

Viewed 245

Background

I'm trying to create a chemical equation of state solver in Julia. It utilizes multiple libraries, namely, Optim.jl, BlackBoxOptim.jl, and Measurements.jl. To my knowledge, the error I'm facing isn't completely caused by any of these libraries, but is related to them somehow. It doesn't completely crash the program either, it correctly and completely solves both the Optim.jl and BlackBoxOptim.jl steps and doesn't formally report an exception aside from the terminal output.

What I want from this post

The project is rather large in terms of putting together a minimum working example, so I haven't included one (yet), but all I'm trying to do at this point is understand what this error means and what information I can take from it. Then I might be able to understand what is happening in my code.

Basically, I'd like any and all information about what this Stack Overflow Error means.

This error- to my knowledge -doesn't point to any line within my own project, but rather core Julia libraries.

What I (might) know so far

Since there are a lot of typeinfer calls, my guess is that Julia is failing to understand something about a return type or input type in my code when the method is being compiled.

I've stuck throw(Exception) lines everywhere to try to narrow down a specific line within calculations or methods that might be responsible, to little avail, but have localized the issue to at least this chain of methods:

if typeof(p) <: Measurement
    p_uncertainty = p.err
    v_err = PRVolumeSolver.solve_volume_uncertainty(components, mole_fractions, kijmatrix, p_uncertainty, v_val, t)
else
    v_err = 0.
end
...

function solve_volume_uncertainty(components, mole_fractions, kijmatrix, p_uncertainty, v, t)
    target_function = create_volume_uncertainty_target(components, mole_fractions, kijmatrix, p_uncertainty, v, t)

    res = bboptimize(target_function; SearchRange=(0.0, 10.0), NumDimensions=1, Method=:de_rand_1_bin)  # todo set better range later
    return best_candidate(res)[1]
end
...
function create_volume_uncertainty_target(components, mole_fractions, kij_table, p_uncertainty_atm, volume_l_mol, t_k)
    target = function(volume_uncertainty_guess_l_mol)
        _t_k = t_k.val ± t_k.err
        volume = volume_l_mol ± volume_uncertainty_guess_l_mol[1]
        
        resulting_pressure = PengRobinsonState(components, mole_fractions, kij_table; t=_t_k, v=volume, minimal_calculations=true, using_measurements=true).pressure
        return (resulting_pressure.err - p_uncertainty_atm)^2
    end
    return target
end

The error

The error is a Stack Overflow Error of some sort. It is tens of thousands of lines, but roughly follows this pattern:

It starts with this:

Internal error: encountered unexpected error in runtime:
StackOverflowError()
save_env at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:147
forall_exists_subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1448

Then this section repeats thousands of times

subtype_ccheck at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:521
var_lt at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:584
subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1256
subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1256
with_tvar at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:745
subtype_unionall at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:839 [inlined]
subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1285
exists_subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1426 [inlined]
forall_exists_subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1454

Later it switches to this (once):

subtype_ccheck at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:521
var_gt at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:623
subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1259
exists_subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1426 [inlined]
forall_exists_subtype at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1454
subtype_in_env_ at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1909
subtype_bounds_in_env at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:1919 [inlined]
subtype_in_env_existential at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2235
intersect_invariant at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2841
intersect at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:3121
intersect_unionall_ at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2569
intersect_unionall at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2614
intersect at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:3068
intersect_tuple at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2717 [inlined]
intersect at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:3085
intersect_unionall_ at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2565
intersect_unionall at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2614
intersect at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:3071
intersect_unionall_ at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2565
intersect_unionall at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:2614
intersect at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:3071
intersect_all at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:3166
jl_type_intersection_env_s at /cygdrive/c/buildbot/worker/package_win64/build/src\subtype.c:3412
jl_typemap_intersection_node_visitor at /cygdrive/c/buildbot/worker/package_win64/build/src\typemap.c:454
jl_typemap_intersection_visitor at /cygdrive/c/buildbot/worker/package_win64/build/src\typemap.c:621
jl_typemap_intersection_array_visitor at /cygdrive/c/buildbot/worker/package_win64/build/src\typemap.c:404
jl_typemap_intersection_visitor at /cygdrive/c/buildbot/worker/package_win64/build/src\typemap.c:607
jl_typemap_intersection_array_visitor at /cygdrive/c/buildbot/worker/package_win64/build/src\typemap.c:404
jl_typemap_intersection_visitor at /cygdrive/c/buildbot/worker/package_win64/build/src\typemap.c:583
jl_typemap_intersection_visitor at /cygdrive/c/buildbot/worker/package_win64/build/src\typemap.c:542
ml_matches at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2752
jl_matching_methods at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:1885
_methods_by_ftype at .\reflection.jl:867 [inlined]
#findall#216 at .\compiler\methodtable.jl:57 [inlined]
findall##kw at .\compiler\methodtable.jl:54
jfptr_findallYY.YY.kw_9379.clone_1 at C:\Users\Will\AppData\Local\Programs\Julia-1.6.0\lib\julia\sys.dll (unknown line)
#218 at .\compiler\methodtable.jl:67
get! at .\iddict.jl:163 [inlined]
#findall#217 at .\compiler\methodtable.jl:66 [inlined]
findall##kw at .\compiler\methodtable.jl:65
jfptr_findallYY.YY.kw_9374.clone_1 at C:\Users\Will\AppData\Local\Programs\Julia-1.6.0\lib\julia\sys.dll (unknown line)

And then repeats this section:

abstract_call at .\compiler\abstractinterpretation.jl:1040
abstract_eval_statement at .\compiler\abstractinterpretation.jl:1167
typeinf_local at .\compiler\abstractinterpretation.jl:1462
typeinf_nocycle at .\compiler\abstractinterpretation.jl:1520
_typeinf at .\compiler\typeinfer.jl:214
typeinf at .\compiler\typeinfer.jl:209
typeinf_edge at .\compiler\typeinfer.jl:806
abstract_call_method at .\compiler\abstractinterpretation.jl:490
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:143
abstract_call at .\compiler\abstractinterpretation.jl:1054
abstract_call at .\compiler\abstractinterpretation.jl:1040
abstract_eval_statement at .\compiler\abstractinterpretation.jl:1167
typeinf_local at .\compiler\abstractinterpretation.jl:1462
typeinf_nocycle at .\compiler\abstractinterpretation.jl:1520
_typeinf at .\compiler\typeinfer.jl:214
typeinf at .\compiler\typeinfer.jl:209
typeinf_edge at .\compiler\typeinfer.jl:806

Before finally ending with this:

_typeinf at .\compiler\typeinfer.jl:214
typeinf at .\compiler\typeinfer.jl:209
typeinf_ext at .\compiler\typeinfer.jl:892
typeinf_ext_toplevel at .\compiler\typeinfer.jl:925
typeinf_ext_toplevel at .\compiler\typeinfer.jl:921
jfptr_typeinf_ext_toplevel_10069.clone_1 at C:\Users\Will\AppData\Local\Programs\Julia-1.6.0\lib\julia\sys.dll (unknown line)
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2237 [inlined]
jl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2419 [inlined]
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_type_infer at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:298
jl_generate_fptr at /cygdrive/c/buildbot/worker/package_win64/build/src\jitlayers.cpp:340
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:1970
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:1924 [inlined]
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2229 [inlined]
jl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2419
#bboptimize#85 at C:\Users\Will\.julia\packages\BlackBoxOptim\ZdVko\src\bboptimize.jl:71
bboptimize##kw at C:\Users\Will\.julia\packages\BlackBoxOptim\ZdVko\src\bboptimize.jl:70
bboptimize##kw at C:\Users\Will\.julia\packages\BlackBoxOptim\ZdVko\src\bboptimize.jl:70
solve_volume_uncertainty at c:\git\julia-polymer-membranes\PolymerMembranes.jl\StaticPengRobinson.jl:266
#PengRobinsonState#1 at c:\git\julia-polymer-membranes\PolymerMembranes.jl\StaticPengRobinson.jl:90
Type##kw at c:\git\julia-polymer-membranes\PolymerMembranes.jl\StaticPengRobinson.jl:63
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:575
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:669
top-level scope at c:\git\julia-polymer-membranes\PolymerMembranes.jl\test.jl:29
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:825
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
include_string at .\loading.jl:1094
include_string at .\loading.jl:1104
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_f__call_latest at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:714
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:670
#invokelatest#2 at .\essentials.jl:708
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:670
invokelatest at .\essentials.jl:706
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:670
#inlineeval#70 at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\eval.jl:193
inlineeval##kw at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\eval.jl:191 [inlined]
#65 at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\eval.jl:151
withpath at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\repl.jl:142
#64 at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\eval.jl:149
hideprompt at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\repl.jl:36
#63 at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\eval.jl:117
unknown function (ip: 0000000061063a51)
with_logstate at .\logging.jl:491
with_logger at .\logging.jl:603 [inlined]
#62 at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\eval.jl:183
unknown function (ip: 0000000061060a13)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_f__call_latest at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:714
#invokelatest#2 at .\essentials.jl:708 [inlined]
invokelatest at .\essentials.jl:706
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:670
macro expansion at c:\Users\Will\.vscode\extensions\julialang.language-julia-1.1.38\scripts\packages\VSCodeServer\src\eval.jl:34 [inlined]
#60 at .\task.jl:406
unknown function (ip: 0000000061044b73)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
start_task at /cygdrive/c/buildbot/worker/package_win64/build/src\task.c:839
0 Answers
Related