diff --git a/src/doomdef.h b/src/doomdef.h
index e1cda6f429d12359af84f59842b7c4a3c59a6536..52abc95972cf4a2ed4b57c1dc939654d84f32906 100644
--- a/src/doomdef.h
+++ b/src/doomdef.h
@@ -118,7 +118,6 @@
 
 #ifdef LOGMESSAGES
 extern FILE *logstream;
-extern FILE *crashstream;
 extern char logfilename[1024];
 #endif
 
diff --git a/src/sdl/i_main.c b/src/sdl/i_main.c
index 03783d1effa627a017c7dfb17fbfab26d9a240a4..1dee379c0d8d95db186f1e9e3bb301554ed0549f 100644
--- a/src/sdl/i_main.c
+++ b/src/sdl/i_main.c
@@ -52,7 +52,6 @@ extern int SDL_main(int argc, char *argv[]);
 
 #ifdef LOGMESSAGES
 FILE *logstream = NULL;
-FILE *crashstream = NULL;
 char logfilename[1024];
 #endif
 
@@ -250,9 +249,6 @@ int main(int argc, char **argv)
 	// startup SRB2
 	CONS_Printf("Setting up SRB2...\n");
 	D_SRB2Main();
-
-	crashstream = fopen(va("%s" PATHSEP "%s", srb2home, "crash-log.txt"), "at");
-
 #ifdef LOGMESSAGES
 	if (!M_CheckParm("-nolog"))
 		CONS_Printf("Logfile: %s\n", logfilename);
diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
index 528d495c73e74075c6d9875b18fd2e6f92e90fd1..7c870c0c7bbe6f7ee086be81a218c4f851cbeb43 100644
--- a/src/sdl/i_system.c
+++ b/src/sdl/i_system.c
@@ -264,18 +264,10 @@ static void write_backtrace(INT32 signal)
 	const char *error = "An error occurred within SRB2! Send this stack trace to someone who can help!\n";
 	const char *error2 = "(Or find crash-log.txt in your SRB2 directory.)\n"; // Shown only to stderr.
 
-	if (!crashstream)
-		crashstream = fopen(va("%s" PATHSEP "%s", srb2home, "crash-log.txt"), "at");
+	fd = open(va("%s" PATHSEP "%s", srb2home, "crash-log.txt"), O_CREAT|O_APPEND|O_RDWR, S_IRUSR|S_IWUSR);
 
-	if (!crashstream)
+	if (fd == -1)
 		I_OutputMsg("\nWARNING: Couldn't open crash log for writing! Make sure your permissions are correct. Please save the below report!\n");
-	else
-	{
-		fd = fileno(crashstream);
-
-		if (fd == -1)
-			fd = open(va("%s" PATHSEP "%s", srb2home, "crash-log.txt"), O_CREAT|O_APPEND);
-	}
 
 	time(&rawtime);
 	timeinfo = localtime(&rawtime);