diff --git a/stepmania/src/archutils/Unix/CrashHandler.cpp b/stepmania/src/archutils/Unix/CrashHandler.cpp index 5b827f976a..812b169b19 100644 --- a/stepmania/src/archutils/Unix/CrashHandler.cpp +++ b/stepmania/src/archutils/Unix/CrashHandler.cpp @@ -100,6 +100,12 @@ static void parent_process( int to_child, void **BacktracePointers, int SignalRe parent_write(to_child, &size, sizeof(size)); parent_write(to_child, ps[i], size); } + + /* 6. Write CHECKPOINTs. */ + p = GetCheckpointLogs("$$"); + size = strlen(p)+1; + parent_write(to_child, &size, sizeof(size)); + parent_write(to_child, p, size); close(to_child); } diff --git a/stepmania/src/archutils/Unix/CrashHandlerChild.cpp b/stepmania/src/archutils/Unix/CrashHandlerChild.cpp index 36fbea149e..d48aa51114 100644 --- a/stepmania/src/archutils/Unix/CrashHandlerChild.cpp +++ b/stepmania/src/archutils/Unix/CrashHandlerChild.cpp @@ -313,6 +313,13 @@ static void child_process() ret = read(3, Recent[i], size); } + /* 6. Read CHECKPOINTs. */ + ret = read(3, &size, sizeof(size)); + char *temp = new char [size]; + ret = read(3, temp, size); + CStringArray Checkpoints; + split(temp, "$$", Checkpoints); + /* Wait for the child to either finish cleaning up or die. XXX: * This should time out, in case something deadlocks. */ @@ -392,6 +399,9 @@ static void child_process() fprintf(CrashDump, "\nPartial log:\n"); for( int i = 0; i < cnt; ++i ) fprintf(CrashDump, "%s\n", Recent[i] ); + fprintf(CrashDump, "\nCheckpoints:\n"); + for (unsigned i=0; i