Thread overview
[Issue 22778] druntime: infinite loop in gc_term if an object destructor throws
Feb 16, 2022
Iain Buclaw
Dec 17, 2022
Iain Buclaw
February 16, 2022
https://issues.dlang.org/show_bug.cgi?id=22778

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ibuclaw@gdcproject.org

--- Comment #1 from Iain Buclaw <ibuclaw@gdcproject.org> ---
There's already this guard in defaultTraceHandler:
---
// avoid recursive GC calls in finalizer
import core.memory : GC;
if (GC.inFinalizer)
    return null;
---

So if the GC cannot be avoided entirely in allocating, there would need to be a similar check for when GC.collect() is running.

--
December 17, 2022
https://issues.dlang.org/show_bug.cgi?id=22778

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P2

--
April 21
https://issues.dlang.org/show_bug.cgi?id=22778

Steven Schveighoffer <schveiguy@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |schveiguy@gmail.com

--- Comment #2 from Steven Schveighoffer <schveiguy@gmail.com> ---
I think this can be closed. The behavior doesn't happen anymore, and I think we've fixed a few of these chicken-and-egg problems that were there before.

--