Ping - CompilerInstance problem

ping - Any ideas? Searching around I found a similar problem (I think on stackoverflow), but no responses…

I’m updating a project from Clang 3.4 to the latest version of Clang, and
am having problems getting it to work. It’s a project with a
RecursiveASTVisitor, running on Windows with MinGW-32. Everything seems to
go well until I get to the destructor of the CompilerInstance. The code
looks something like:
{
CompilerInstance compiler;
DiagnosticOptions &diagOpts = compiler.getDiagnosticOpts();
string verr_string;
raw_string_ostream vErr(verr_string);

TextDiagnosticPrinter *pTextDiagnosticPrinter =
new TextDiagnosticPrinter(vErr, &diagOpts);
compiler.createDiagnostics(pTextDiagnosticPrinter);

// Create an invocation that passes any flags to preprocessor
unique_ptr Invocation(new CompilerInvocation);
CompilerInvocation::CreateFromArgs(*Invocation, argv + 1, argv + argc,
compiler.getDiagnostics());

Invocation->setLangDefaults(compiler.getLangOpts(),
clang::IK_CXX,
options.langStandard);

compiler.setInvocation(Invocation.release());

// Set default target triple
shared_ptr pto( new TargetOptions());
pto->Triple = llvm::sys::getDefaultTargetTriple();
shared_ptr
pti(TargetInfo::CreateTargetInfo(compiler.getDiagnostics(), pto));
compiler.setTarget(pti.get());

compiler.createFileManager();
compiler.createSourceManager(compiler.getFileManager());

compiler.createPreprocessor(TU_Module);
compiler.getPreprocessorOpts().UsePredefines = false;

compiler.createASTContext();

SourceManager &sourceMgr = compiler.getSourceManager();

// Initialize rewriter
Rewriter Rewrite;
Rewrite.setSourceMgr(sourceMgr, compiler.getLangOpts());

// Get filename
string fileName(argv[argc - 1]);

const FileEntry *pFile = compiler.getFileManager().getFile(fileName);
sourceMgr.setMainFileID(sourceMgr.createFileID(pFile, SourceLocation(),
SrcMgr::C_User));
if (pFile == NULL)
{
// File not found
return false;
}

compiler.getDiagnosticClient().BeginSourceFile(compiler.getLangOpts(),
&compiler.getPreprocessor());

MyASTConsumer astConsumer(Rewrite);

try {
// Parse the AST
ParseAST(compiler.getPreprocessor(),
&astConsumer,
compiler.getASTContext());
} catch(exception &e)
{
return false;
}

compiler.getDiagnosticClient().EndSourceFile();

return true; // Return success
}

Everything works fine till the return, when it crashes with:

libstdc+±6!_ZNSs4_Rep10_M_destroyERKSaIcE C:\Qt\Qt5.4.1\5.4\mingw491_32\bin\libstdc+±6.dll
clang::DiagnosticsEngine::~DiagnosticsEngine
clang::CompilerInstance::~CompilerInstance

Any ideas what I did wrong? Something with using the TextDiagnosticPrinter? This is with:
clang version 3.7.0 (trunk 230884)
Target: i686-pc-windows-gnu
Thread model: posix

Thanks!

Robert