moose
moose copied to clipboard
Cannot request old nonlinear state on the fly in threaded regions
Bug Description
As functors could be called with an older state inpredictably, the code to get the older state for variables was set to not error when the old state was missing, but rather pause and allocate it. This was naturally difficult in a threaded region because you need mutex to only perform this kind of work once
this was evidenced by this failure: https://civet.inl.gov/job/2468035/ That test was not requesting the old state, so the old state was obtained on the fly, in a steady region
Steps to Reproduce
Run the NavierStokes test suite with enough things to trigger a crash:
- 2 threads
- 2 mpi + distributed mesh (this condition is likely coincidental)
- don't fix the affected test (kepsilon + wall + energy + physics), forget to request the old nonlinear solution
Impact
Previously random failure on next, fixed already by adjusting the K-Epsilon turbulence physics Currently, a risky API for other developers
[Optional] Diagnostics
No response