I get dmd ouput:
"unable to fork: Cannot allocate memory"

when compiling the following code:


import std.stdio;

import gio.Application : GioApplication = Application;
import gtk.Application;
import gtk.ApplicationWindow;
import gtk.Widget;
import gdk.Keysyms;

int main(string[] args)
{
        Application application;
        
        bool onKeyPress(GdkEventKey* eventKey, Widget widget)
        {
                writeln(GdkKeysyms.GDK_Escape);
                return false;
        }
        
        void activate(GioApplication app)
        {
                ApplicationWindow win = new ApplicationWindow(application);
                win.addOnKeyPress(&onKeyPress);
                win.showAll();
        }
        
application = new Application("org.gtkd.demo.cairo.clock", GApplicationFlags.FLAGS_NONE);
        application.addOnActivate(&activate);
        return application.run(args);
}


with this commandline..
dmd -v -L-lgtkd-3 -run test2.d

..it hangs for a some seconds at..
import core.checkedint (/usr/include/dmd/druntime/import/core/checkedint.d)

..while memory usage grows up to 100%, then continues with other imports..
code      test2
function  D main
function  test2.main.onKeyPress
function  test2.main.activate
function  std.stdio.writeln!(GdkKeysyms).writeln
function  std.stdio.File.write!(GdkKeysyms, char).write
function std.format.formattedWrite!(LockingTextWriter, char, GdkKeysyms).formattedWrite
...

then finally..
cc test2.o -o /tmp/dmd_run6k9PhI -m64 -L/usr/lib/x86_64-linux-gnu -Xlinker --export-dynamic -Xlinker -Bstatic -lphobos2 -Xlinker -Bdynamic -lpthread -lm -lrt -ldl
unable to fork: Cannot allocate memory

if i comment-out the line..
writeln(GdkKeysyms.GDK_Escape);

then it compiles/links/runs fine.


I actually want to close the application if escape key is pressed with
if (eventKey.keyval == GdkKeysyms.GDK_Escape) ...

but i don't know if my imports and the event handler are correct, and i dont know how to close the application yet.
I guess there is something wrong during the compilation process?


DMD64 D Compiler v2.078.1

gtkd import path is in /etc/dmd.conf:
...
[Environment64]
DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import -I/usr/include/dmd/gtkd3 -L-L/usr/lib/x86_64-linux-gnu -L--export-dynamic -fPIC
...

Reply via email to