www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 22778] New: druntime: infinite loop in gc_term if an object

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

          Issue ID: 22778
           Summary: druntime: infinite loop in gc_term if an object
                    destructor throws
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: critical
          Priority: P1
         Component: druntime
          Assignee: nobody puremagic.com
          Reporter: ibuclaw gdcproject.org

---
struct S8
{
    int b;
    ~this()
    {
        assert(b == 7);
    }
}

void main()
{
    S8 *s = new S8(9);
}
---

Backtrace
---

flags=flags entry=0, req=0x7fffffffd3c0, rem=0x7fffffffd3d0) at
../sysdeps/unix/sysv/linux/clock_nanosleep.c:78

out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25

()

()


core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.mallocNoSync(ulong,
uint, ref ulong, const(TypeInfo)), core.in
ternal.gc.impl.conservative.gc.mallocTime,
core.internal.gc.impl.conservative.gc.numMallocs, ulong, uint, ulong,
const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo))
()

core.internal.gc.impl.conservative.gc.ConservativeGC.malloc(ulong, uint,
const(TypeInfo)) ()







core.internal.gc.impl.conservative.gc.Gcx.fullcollect(bool, bool, bool) ()

core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.fullCollectNoStack().go(core.internal.gc.impl.conservative.gc.
Gcx*), core.internal.gc.impl.conservative.gc.Gcx*).runLocked(ref
core.internal.gc.impl.conservative.gc.Gcx*) ()

core.internal.gc.impl.conservative.gc.ConservativeGC.fullCollectNoStack() ()

core.internal.gc.impl.conservative.gc.ConservativeGC.collectNoStack() ()


---


To highlight more specifically
---
...





...


---

D runtime should not be using `_d_newclass` here.

--
Feb 16 2022