June 13, 2013
Another crash (Mac OS 10.8) here but this one doesn't seem to
raise a crash dump. Also it seems to work fine on Ubuntu 12.04

import core.sys.posix.sys.stat;
import core.sys.posix.unistd;
import std.c.stdio;
import std.c.stdlib;
import std.process;
import std.stdio;
import std.string;
import std.file;
import std.datetime;

class Logger
{
     private File _logFile;

     public this(string logFile)
     {
         this._logFile = File(logFile, "a");
     }

     public void info(string, A...)(string text, A args)
     {
         this._logFile.writefln(format(text, args));
     }
}

int main(string[] args)
{
     pid_t pid, sid;

     pid = fork();
     if (pid < 0)
     {
         exit(EXIT_FAILURE);
     }

     if (pid > 0)
     {
         exit(EXIT_SUCCESS);
     }

     umask(0);

     sid = setsid();
     if (sid < 0)
     {
         exit(EXIT_FAILURE);
     }

     if ((core.sys.posix.unistd.chdir("/")) < 0)
     {
         exit(EXIT_FAILURE);
     }

     close(STDIN_FILENO);
     close(STDOUT_FILENO);
     close(STDERR_FILENO);

     auto logger = new Logger("/Users/gary/Desktop/test.log");

     // Crash!
     logger.info("Reading file");

     string configFileContents = readText("/etc/hosts");

     // Never executes!
     logger.info(configFileContents);

     return 0;
}