[clang] [Clang] Fix assertion failure in SDiagsWriter when finish() is not called (PR #181712)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 16 10:47:27 PST 2026
================
@@ -0,0 +1,10 @@
+// RUN: clang-check %s -- -Wdoes-not-exist --serialize-diagnostics %t.dia 2>&1 | FileCheck %s
----------------
zeyi2 wrote:
I've verified that the testcase would crash without this fix:
```text
warning: unknown warning option '-Wdoes-not-exist'; did you mean '-Wmicrosoft-exists'? [-Wunknown-warning-option]
warning: unknown warning option '-Wdoes-not-exist'; did you mean '-Wmicrosoft-exists'? [-Wunknown-warning-option]
1 warning generated.
clang-check: ~/projects/llvm-project/llvm/include/llvm/Bitstream/BitstreamWriter.h:168: llvm::BitstreamWriter::~BitstreamWriter(): Assertion `BlockScope.empty() && CurAbbrevs.empty() && "Block imbalance"'
failed.
#0 0x00007f23f1cb7208 __interceptor_backtrace (/usr/lib/libasan.so.8+0xb7208)
#1 0x000055a06e132c11 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./build/bin/clang-check+0x80a3c11)
#2 0x000055a06e123ada llvm::sys::RunSignalHandlers() (./build/bin/clang-check+0x8094ada)
#3 0x000055a06e124393 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#4 0x00007f23f164d2d0 (/usr/lib/libc.so.6+0x3e2d0)
#5 0x00007f23f16a7a2c (/usr/lib/libc.so.6+0x98a2c)
#6 0x00007f23f164d1a0 raise (/usr/lib/libc.so.6+0x3e1a0)
#7 0x00007f23f16345fe abort (/usr/lib/libc.so.6+0x255fe)
#8 0x00007f23f1635697 (/usr/lib/libc.so.6+0x26697)
#9 0x00007f23f16450b2 __assert_fail (/usr/lib/libc.so.6+0x360b2)
#10 0x000055a07101210a std::_Sp_counted_ptr_inplace<(anonymous namespace)::SDiagsWriter::SharedState, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (.cold) SerializedDiagnosticPrinter.cpp:0:0
#11 0x000055a071014370 (anonymous namespace)::SDiagsWriter::~SDiagsWriter() SerializedDiagnosticPrinter.cpp:0:0
#12 0x000055a070a59ccb clang::ChainedDiagnosticConsumer::~ChainedDiagnosticConsumer() ChainedDiagnosticConsumer.cpp:0:0
#13 0x000055a06e82c742 clang::DiagnosticsEngine::~DiagnosticsEngine() (./build/bin/clang-check+0x879d742)
#14 0x000055a072a29c08 clang::tooling::ToolInvocation::run() (./build/bin/clang-check+0xc99ac08)
#15 0x000055a072a30f59 clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (./build/bin/clang-check+0xc9a1f59)
#16 0x000055a06c5b2d7f main (./build/bin/clang-check+0x6523d7f)
#17 0x00007f23f16366c1 (/usr/lib/libc.so.6+0x276c1)
#18 0x00007f23f16367f9 __libc_start_main (/usr/lib/libc.so.6+0x277f9)
#19 0x000055a06c5a45a5 _start (./build/bin/clang-check+0x65155a5)
bash: line 1: 93529 Aborted ./build/bin/clang-check clang/test/Tooling/serialize-diagnostics.cpp -- -Wdoes-not-exist --serialize-diagnostics test.dia
```
https://github.com/llvm/llvm-project/pull/181712
More information about the cfe-commits
mailing list