Gabriel Busnot has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/45025 )

Change subject: base: Fix truncated compressed output upon panic()
......................................................................

base: Fix truncated compressed output upon panic()

When panic was called, the non-flushed debug log was truncated if a compressed output file was used. This is fixed by manually destructing the `simout` global
variable before calling abort().

Debug output has also been speedup by removing all explicit stream flushes
involved in the debug printing (some might ). Using stdout as the debug output
is now as fast as file redirection and prevents log truncation in all cases
thanks to cout being tied to cerr.

Change-Id: Id01397eca608b5dc9e4bfe3fbdd864b6f07e4ad9
---
M src/base/cprintf.cc
M src/base/logging.cc
M src/base/stats/text.cc
M src/base/trace.cc
4 files changed, 11 insertions(+), 8 deletions(-)



diff --git a/src/base/cprintf.cc b/src/base/cprintf.cc
index 7a3e958..9b2b576 100644
--- a/src/base/cprintf.cc
+++ b/src/base/cprintf.cc
@@ -78,13 +78,13 @@
             break;

           case '\n':
-            stream << std::endl;
+            stream << '\n';
             ++ptr;
             break;
           case '\r':
             ++ptr;
             if (*ptr != '\n')
-                stream << std::endl;
+                stream << '\n';
             break;

           default:
@@ -289,13 +289,13 @@
             break;

           case '\n':
-            stream << std::endl;
+            stream << '\n';
             ++ptr;
             break;
           case '\r':
             ++ptr;
             if (*ptr != '\n')
-                stream << std::endl;
+                stream << '\n';
             break;

           default:
diff --git a/src/base/logging.cc b/src/base/logging.cc
index 1290455..7021a65 100644
--- a/src/base/logging.cc
+++ b/src/base/logging.cc
@@ -43,6 +43,7 @@
 #include <sstream>

 #include "base/hostinfo.hh"
+#include "base/output.hh"

 namespace {

@@ -59,6 +60,9 @@
         ccprintf(ss, "Memory Usage: %ld KBytes\n", memUsage());
         Logger::log(loc, s + ss.str());
     }
+
+    void
+    exit() override {simout.~OutputDirectory();}
 };

 class FatalLogger : public ExitLogger
diff --git a/src/base/stats/text.cc b/src/base/stats/text.cc
index 26f1622..0d08889 100644
--- a/src/base/stats/text.cc
+++ b/src/base/stats/text.cc
@@ -297,7 +297,7 @@
         if (units && !unitStr.empty()) {
             ccprintf(stream, " (%s)", unitStr);
         }
-        stream << std::endl;
+        stream << '\n';
     }
 }

@@ -394,7 +394,7 @@
             if (units && !unitStr.empty()) {
                 ccprintf(stream, " (%s)", unitStr);
             }
-            stream << std::endl;
+            stream << '\n';
         }
     }

@@ -572,7 +572,7 @@
         if (units && !unitStr.empty()) {
             ccprintf(stream, " (%s)", unitStr);
         }
-        stream << std::endl;
+        stream << '\n';
     }

     if (data.type == Dist && data.overflow != NAN) {
diff --git a/src/base/trace.cc b/src/base/trace.cc
index eee6a4d..a80b39a 100644
--- a/src/base/trace.cc
+++ b/src/base/trace.cc
@@ -158,7 +158,6 @@
         stream << name << ": ";

     stream << message;
-    stream.flush();

     if (DTRACE(FmtStackTrace)) {
         print_backtrace();

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/45025
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Id01397eca608b5dc9e4bfe3fbdd864b6f07e4ad9
Gerrit-Change-Number: 45025
Gerrit-PatchSet: 1
Gerrit-Owner: Gabriel Busnot <garbage2collec...@gmail.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to