www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 22616] New: Infinity loop instead of

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

          Issue ID: 22616
           Summary: Infinity loop instead of InvalidMemoryOperationError
                    during GC routine
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: regression
          Priority: P1
         Component: druntime
          Assignee: nobody puremagic.com
          Reporter: feklushkin.denis gmail.com

Issue was introduced in v2.097.0

/+ dub.json:
{
  "name": "test"
}
+/

class C
{
    int i;

    ~this ()
    {
        // It is wrong to allocate during GC collection,
        // but this failed assert allocates and must throw
        // InvalidMemoryOperationError.
        assert(i == 123);
    }
}

void main()
{
    auto c = new C;
}
```

DMD64 D Compiler v2.096.1 - OK

$ dub -f --compiler=dmd --single test.d
Performing "debug" build using dmd for x86_64.
test ~master: building configuration "application"...
Linking...
Running test 
core.exception.InvalidMemoryOperationError src/core/exception.d(647): Invalid
memory operation
----------------
Program exited with code 1
(as expected)

DMD64 D Compiler v2.097.0 - Infinity wait

$ dub -f --compiler=dmd --single test.d
Performing "debug" build using dmd for x86_64.
test ~master: building configuration "application"...
Linking...
Running test 
(stalled)

Stack after ctrl+c:

options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30


dub.generators.build.BuildGenerator.runTarget(dub.internal.vibecompat.inet.path.NativePath,
in dub.compilers.buildsettings.BuildSettings, immutable(char)[][],
dub.generators.generator.GeneratorSettings) ()

dub.generators.build.BuildGenerator.performPostGenerateActions(dub.generators.generator.GeneratorSettings,
in dub.generators.generator.ProjectGenerator.TargetInfo[immutable(char)[]]) ()

dub.generators.generator.ProjectGenerator.generate(dub.generators.generator.GeneratorSettings)
()

immutable(char)[][], immutable(char)[][]) ()

immutable(char)[][], immutable(char)[][]) ()

dub.commandline.runDubCommandLine(immutable(char)[][]) ()

int(char[][]) function).runAll() ()



argc=5, argv=0x7fffffffe7d8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffe7c8) at ../csu/libc-start.c:332


--
Dec 21 2021