When we receive a signal while processing another signal (e.g., we segfault while we're constructing a backtrace in response to an abort), we detect that case and try to end the process using the default handler for the second signal (in this example, segfault). The goal is to avoid deadlock by starting our signal handler logic re-entrantly, which may result in it trying to take the MallocFreeOStream lock recursively.
However, it can be the case that the signal we're trying to send is blocked. In that case, we will deadlock.