digitalmars.D.bugs - [Issue 10364] New: Mac OS 10.8 program crash
- d-bugmail puremagic.com (44/44) Jun 15 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10364
- d-bugmail puremagic.com (61/61) Jun 15 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10364
- d-bugmail puremagic.com (14/14) Jul 28 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10364
- d-bugmail puremagic.com (9/9) Jul 28 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10364
- d-bugmail puremagic.com (23/29) Jul 28 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10364
- d-bugmail puremagic.com (8/8) Aug 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10364
http://d.puremagic.com/issues/show_bug.cgi?id=10364 Summary: Mac OS 10.8 program crash Product: D Version: D2 Platform: x86_64 OS/Version: Mac OS X Status: NEW Severity: critical Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: spam kalekold.net --- Created an attachment (id=1226) Sample crash log The following code produces a program crash on Mac OS 10.8. Nothing is output to the opened file and a crash is reported to /etc/log/system.log. import core.sys.posix.unistd; import std.c.stdlib; import std.process; import std.stdio; import std.string; int main(string[] args) { pid_t pid = fork(); if (pid < 0) { exit(EXIT_FAILURE); } if (pid > 0) { exit(EXIT_SUCCESS); } auto logFile = File("/Users/gary/Desktop/test.log", "a"); logFile.writeln("Opened file"); string command = format("logger -t %s %s", "hello", "This is a test"); executeShell(command); logFile.writeln("Done"); return 0; } See attached for sample crash log. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 15 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10364 --- Another example of maybe the same bug? This also crashes but does so silently with no system.log entry or crash dump. 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; } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 15 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10364 Lars T. Kyllingstad <bugzilla kyllingen.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzilla kyllingen.net 08:11:16 PDT --- I can not reproduce this on Linux. It would be great to get confirmation from someone else on OSX, to verify that it isn't a local issue. One thing I've noticed is that you call exit() in the parent process after a successful fork(). You should call _exit() instead, to avoid double-flushing buffers etc. This probably won't fix your problem, but it's worth a try. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 28 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10364 Lars T. Kyllingstad <bugzilla kyllingen.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED AssignedTo|nobody puremagic.com |bugzilla kyllingen.net -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 28 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10364 ---I can not reproduce this on Linux. It would be great to get confirmation from someone else on OSX, to verify that it isn't a local issue. One thing I've noticed is that you call exit() in the parent process after a successful fork(). You should call _exit() instead, to avoid double-flushing buffers etc. This probably won't fix your problem, but it's worth a try.I've reduced it to this: import std.stdio; import std.string; import std.process; extern (C) { int daemon(int nochdir, int noclose); } void main(string[] args) { daemon(0, 0); auto logFile = File("/Users/gary/Desktop/test.log", "a"); logFile.writeln("Opened file"); string command = format("logger -t %s %s", "Hello", "This is a test."); executeShell(command); // Crash dump logged at /var/log/system.log logFile.writeln("Done!"); // Never executes. } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 28 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10364 Lars T. Kyllingstad <bugzilla kyllingen.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|critical |major -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 06 2013