The functions that could lock this mutex, i.e., SetMiscWarning(), {S,G}etfLargeWorkForkFound(), SetfLargeWorkInvalidChainFound(), GetWarnings(), do not call itself recursively, and do not call each other either directly or indirectly. Therefore, the g_warnings_mutex could be a non-recursive mutex.
This is a backport of core#19220