diff --git a/kernel/driver.cc b/kernel/driver.cc
index 45cdd461d..5cfc4171d 100644
--- a/kernel/driver.cc
+++ b/kernel/driver.cc
@@ -509,6 +509,11 @@ int main(int argc, char **argv)
 		free(hist_list);
 #endif
 
+	log_flush();
+#ifdef _WIN32
+	_Exit(0);
+#endif
+
 	yosys_shutdown();
 
 	return 0;
diff --git a/kernel/log.cc b/kernel/log.cc
index 229b82746..3f1d88819 100644
--- a/kernel/log.cc
+++ b/kernel/log.cc
@@ -208,7 +208,7 @@ void logv_error(const char *format, va_list ap)
 	log_files = backup_log_files;
 	throw 0;
 #else
-	exit(1);
+	_Exit(1);
 #endif
 }