www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Another Mac OS crash

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;
}
Jun 13 2013