[cfe-dev] Diagnostics in plugins fail with assert
Florian Weimer
fweimer at redhat.com
Fri Sep 14 05:36:52 PDT 2012
Passing -an-error to the example plugin
(trunk/examples/PrintFunctionNames/PrintFunctionNames.cpp) results in a
failed assert at include/clang/Basic/Diagnostic.h:1037:
1035 inline DiagnosticBuilder DiagnosticsEngine::Report(SourceLocation Loc,
1036 unsigned DiagID){
1037 assert(CurDiagID == ~0U && "Multiple diagnostics in flight at
once!");
1038 CurDiagLoc = Loc;
1039 CurDiagID = DiagID;
1040 return DiagnosticBuilder(this);
1041 }
#4 0x00007ffff7d70cc9 in Report (DiagID=4620, Loc=..., this=0x4481100)
at /opt/llvm-3.2/include/clang/Basic/Diagnostic.h:1037
#5 Report (DiagID=4620, this=0x4481100) at
/opt/llvm-3.2/include/clang/Basic/Diagnostic.h:1043
#6 (anonymous namespace)::PrintFunctionNamesAction::ParseArgs
(this=<optimized out>, CI=..., args=...)
at plugin.cpp:53
#7 0x0000000000bf2487 in
clang::FrontendAction::CreateWrappedASTConsumer (this=0x447fec0, CI=...,
InFile=...)
at
/home/fweimer/src/ext/llvm/trunk/tools/clang/lib/Frontend/FrontendAction.cpp:149
#8 0x0000000000bf2bd5 in clang::FrontendAction::BeginSourceFile
(this=0x447fec0, CI=..., Input=...)
at
/home/fweimer/src/ext/llvm/trunk/tools/clang/lib/Frontend/FrontendAction.cpp:245
#9 0x0000000000bca4f3 in clang::CompilerInstance::ExecuteAction
(this=0x447cd30, Act=...)
at
/home/fweimer/src/ext/llvm/trunk/tools/clang/lib/Frontend/CompilerInstance.cpp:671
#10 0x0000000000b9b648 in clang::ExecuteCompilerInvocation (Clang=0x447cd30)
at
/home/fweimer/src/ext/llvm/trunk/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:189
#11 0x0000000000b893e2 in cc1_main (ArgBegin=0x7fffffffd058,
ArgEnd=0x7fffffffd208,
Argv0=0x447b668 "/opt/llvm-3.2/bin/clang", MainAddr=0xb94ec8)
at
/home/fweimer/src/ext/llvm/trunk/tools/clang/tools/driver/cc1_main.cpp:165
#12 0x0000000000b96707 in main (argc_=56, argv_=0x7fffffffdc68)
at
/home/fweimer/src/ext/llvm/trunk/tools/clang/tools/driver/driver.cpp:358
This seems to affect all error reporting from plugins. Is some
initialization step missing from the example plugin?
This happens with clang trunk (r163897) compiled on Fedora 17 (x86_64),
in Release and Debug+Asserts builds.
Apart from the missing ability for error reporting, plug-ins seem to run
just fine.
--
Florian Weimer / Red Hat Product Security Team
More information about the cfe-dev
mailing list