[Lldb-commits] [lldb] c4144ca - [lldb/Reproducer] Disable buffering of stdout during replay

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Wed Jan 22 16:17:24 PST 2020


Author: Jonas Devlieghere
Date: 2020-01-22T16:17:08-08:00
New Revision: c4144caf9b865a2064e49afcdfff474426fc5d47

URL: https://github.com/llvm/llvm-project/commit/c4144caf9b865a2064e49afcdfff474426fc5d47
DIFF: https://github.com/llvm/llvm-project/commit/c4144caf9b865a2064e49afcdfff474426fc5d47.diff

LOG: [lldb/Reproducer] Disable buffering of stdout during replay

Different buffering behavior during capture and replay caused some of
the shell tests to fail when run from a reproducer. By disabling stdout
buffering we get a better approximation of how things get flushed during
an regular debug session. There is a performance impact but since this
only affects replay this is acceptable.

Added: 
    

Modified: 
    lldb/source/Utility/ReproducerInstrumentation.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Utility/ReproducerInstrumentation.cpp b/lldb/source/Utility/ReproducerInstrumentation.cpp
index 473786ef4d3e..0b74acaacb7e 100644
--- a/lldb/source/Utility/ReproducerInstrumentation.cpp
+++ b/lldb/source/Utility/ReproducerInstrumentation.cpp
@@ -8,6 +8,7 @@
 
 #include "lldb/Utility/ReproducerInstrumentation.h"
 #include "lldb/Utility/Reproducer.h"
+#include <stdio.h>
 
 using namespace lldb_private;
 using namespace lldb_private::repro;
@@ -47,6 +48,10 @@ bool Registry::Replay(llvm::StringRef buffer) {
   Log *log = GetLogIfAllCategoriesSet(LIBLLDB_LOG_API);
 #endif
 
+  // Disable buffering stdout so that we approximate the way things get flushed
+  // during an interactive session.
+  setvbuf(stdout, nullptr, _IONBF, 0);
+
   Deserializer deserializer(buffer);
   while (deserializer.HasData(1)) {
     unsigned id = deserializer.Deserialize<unsigned>();


        


More information about the lldb-commits mailing list