@@ -1175,7 +1175,6 @@ function maybe_build_initialization_problem(
11751175 sys, initializeprob. f. sys; p_constructor)
11761176 end
11771177
1178- reqd_syms = parameter_symbols (initializeprob)
11791178 # we still want the `initialization_data` because it helps with `remake`
11801179 if initializeprobmap === nothing && initializeprobpmap === nothing
11811180 update_initializeprob! = nothing
@@ -1186,7 +1185,9 @@ function maybe_build_initialization_problem(
11861185 filter! (punknowns) do p
11871186 is_parameter_solvable (p, op, defs, guesses) && get (op, p, missing ) === missing
11881187 end
1189- pvals = getu (initializeprob, punknowns)(initializeprob)
1188+ # See comment below for why `getu` is not used here.
1189+ _pgetter = build_explicit_observed_function (initializeprob. f. sys, punknowns)
1190+ pvals = _pgetter (state_values (initializeprob), parameter_values (initializeprob))
11901191 for (p, pval) in zip (punknowns, pvals)
11911192 p = unwrap (p)
11921193 op[p] = pval
@@ -1198,7 +1199,13 @@ function maybe_build_initialization_problem(
11981199 end
11991200
12001201 if time_dependent_init
1201- uvals = getu (initializeprob, collect (missing_unknowns))(initializeprob)
1202+ # We can't use `getu` here because that goes to `SII.observed`, which goes to
1203+ # `ObservedFunctionCache` which uses `eval_expression` and `eval_module`. If
1204+ # `eval_expression == true`, this then runs into world-age issues. Building an
1205+ # RGF here is fine since it is always discarded. We can't use `eval_module` for
1206+ # the RGF since the user may not have run RGF's init.
1207+ _ugetter = build_explicit_observed_function (initializeprob. f. sys, collect (missing_unknowns))
1208+ uvals = _ugetter (state_values (initializeprob), parameter_values (initializeprob))
12021209 for (v, val) in zip (missing_unknowns, uvals)
12031210 op[v] = val
12041211 end
0 commit comments