moose icon indicating copy to clipboard operation
moose copied to clipboard

Cannot request old nonlinear state on the fly in threaded regions

Open GiudGiud opened this issue 1 year ago • 0 comments

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

GiudGiud avatar Oct 04 '24 01:10 GiudGiud