[Issue 20562] New: [dmd] Memory allocation failed (ERROR: This is a compiler bug)

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Feb 5 09:54:22 UTC 2020


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

          Issue ID: 20562
           Summary: [dmd] Memory allocation failed (ERROR: This is a
                    compiler bug)
           Product: D
           Version: D2
          Hardware: x86
                OS: Windows
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: zorael at gmail.com

After updating to 2.088.1 from 2.087.1, my project no longer compiles with dmd
under Windows and just throws an OutOfMemoryError.

I bisected it to https://github.com/dlang/dmd/pull/10446, which adds a stack
size linker parameter to dmd's compilation, and thus breaks mine.

> diff --git a/src/build.d b/src/build.d
> index 8b5d59373..592ceb8a8 100755
> --- a/src/build.d
> +++ b/src/build.d
> @@ -361,13 +361,16 @@ alias dmdExe = memoize!(function(string targetSuffix, string[] extraFlags...)
>          target = env["DMD_PATH"] ~ targetSuffix;
>          msg = "(DC) DMD%s %-(%s, %)".format(targetSuffix, dmdSources.map!(e => e.baseName).array);
>          deps = [versionFile, sysconfDirFile, lexer, backend];
> +        string[] platformArgs;
> +        version (Windows)
> +            platformArgs = ["-L/STACK:8388608"];
>          command = [
>              env["HOST_DMD_RUN"],
>              "-of" ~ target,
>              "-vtls",
>              "-J"~env["G"],
>              "-J../res",
> -        ].chain(extraFlags).chain(flags["DFLAGS"], sources).array;
> +        ].chain(extraFlags, platformArgs, flags["DFLAGS"], sources).array;
>      }
>      return new DependencyRef(dep);
>  });

I don't know enough. Assuming it's there for a reason and can't be reverted,
can we at least increase the size? Or is there some other way for me to be able
to keep using dmd?

To test (assuming Windows):

> git clone https://github.com/zorael/kameloso
> cd kameloso
> dub build -c vanilla  # lightest build

C:\Temp\kameloso>dub build -c vanilla
Performing "debug" build using C:\D\dmd2\windows\bin\dmd.exe for x86_64.
lu:core 0.1.2: target for configuration "library" is up to date.
lu:meld 0.1.2: target for configuration "library" is up to date.
dialect 0.3.2: target for configuration "library" is up to date.
lu 0.1.2: target for configuration "library" is up to date.
kameloso 1.5.0+commit.15.g588f6e55: building configuration "vanilla"...
---
ERROR: This is a compiler bug.
Please report it via https://issues.dlang.org/enter_bug.cgi
with, preferably, a reduced, reproducible example and the information below.
DustMite (https://github.com/CyberShadow/DustMite/wiki) can help with the
reduction.
---
DMD v2.090.0-dirty
predefs   WithAdminPlugin WithAutomodePlugin WithBashQuotesPlugin
WithChanQueriesService WithChatbotPlugin WithConnectService WithCTCPService
WithHelpPlugin WithNotesPlugin WithOnelinersPlugin WithPersistenceService
WithPipelinePlugin WithPrinterPlugin WithQuotesPlugin WithSedReplacePlugin
WithSeenPlugin WithWebtitlesPlugin WithPlugins Have_kameloso Have_dialect
Have_lu FlagAsUpdated Have_lu_core Have_lu_meld DigitalMars Windows
CRuntime_Microsoft CppRuntime_Microsoft LittleEndian D_Version2 all D_SIMD
D_InlineAsm_X86_64 X86_64 Win64 D_LP64 assert D_ModuleInfo D_Exceptions
D_TypeInfo D_HardFloat
binary    C:\D\dmd2\windows\bin\dmd.exe
version   v2.090.0-dirty
config    C:\D\dmd2\windows\bin\sc.ini
DFLAGS    -IC:\D\dmd2\windows\bin\..\..\src\phobos
-IC:\D\dmd2\windows\bin\..\..\src\druntime\import -L/OPT:NOICF
---

core.exception.OutOfMemoryError at src\core\exception.d(647): Memory allocation
failed

> dub remove dialect --version=*
> dub remove lu --version=*

Bisection results:

digger: Finding shortest path between 77f556acec92e295ac04e96f800f6d81a8b53ec0
and 2ca17849f4ce2585cb288026241337425385a590...
digger: 0 commits (about 0 tests) remaining.
digger: 2ca17849f4ce2585cb288026241337425385a590 is the first bad commit
commit 2ca17849f4ce2585cb288026241337425385a590
Author: The Dlang Bot <code+dlang-bot at dawg.eu>
Date:   Fri Oct 4 01:17:22 2019 +0200

    dmd: Merge pull request #10446 from marler8997/compileDmdBuildD

    https://github.com/dlang/dmd/pull/10446

    Compile dmd exe in build.d
    merged-on-behalf-of: Nicholas Wilson
<thewilsonator at users.noreply.github.com>

--


More information about the Digitalmars-d-bugs mailing list