Fznamznon wrote:

@tahonermann thank you for your investigation, and sorry for the delay.

> Is it known which platforms are affected by this issue?

The issue is reported on Linux with a makefile as a reproducer. I'm not aware 
if that is the case on Windows.

> I think it is worth cleaning this up to see if that 1) fixes the reported 
> problem, and 2) causes any regressions (which would then prompt improving the 
> comments to better explain the intent).

Well, simply commenting out the code preventing buffering for console
```
--- a/llvm/lib/Support/raw_ostream.cpp
+++ b/llvm/lib/Support/raw_ostream.cpp
@@ -854,8 +854,8 @@ size_t raw_fd_ostream::preferred_buffer_size() const {
   // If this is a terminal, don't use buffering. Line buffering
   // would be a more traditional thing to do, but it's not worth
   // the complexity.
-  if (S_ISCHR(statbuf.st_mode) && is_displayed())
-    return 0;
+  // if (S_ISCHR(statbuf.st_mode) && is_displayed())
+  //   return 0;
   // Return the preferred block size.
   return statbuf.st_blksize;
 #endif
```
and setting incoming OS in TextDiagnostic to be buffered 
```
 TextDiagnostic::TextDiagnostic(raw_ostream &OS, const LangOptions &LangOpts,
                                DiagnosticOptions *DiagOpts,
                                const Preprocessor *PP)
-    : DiagnosticRenderer(LangOpts, DiagOpts), OS(OS), PP(PP) {}
+    : DiagnosticRenderer(LangOpts, DiagOpts), OS(OS), PP(PP) {
+    OS.SetBuffered();}

-TextDiagnostic::~TextDiagnostic() {}
+TextDiagnostic::~TextDiagnostic() {OS.SetUnbuffered();
+}

```
does help to make the output more stable, however **I think** due to llvm::errs 
being easily accessible by any parts of LLVM, I'm currently having troubles 
with sporadic memory corruption in clang tooling tests. I suppose this happens 
due to setting llvm::errs to buffered/unbuffered in several threads. So, either 
raw_ostream needs to become thread-safe somehow and/or setting llvm::errs to 
buffer does seem really unsafe. I feel I'm stuck. WDYT?

https://github.com/llvm/llvm-project/pull/113440
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to