[cfe-dev] Crash with -serialize

Nico Weber nicolasweber at gmx.de
Sat Aug 9 11:53:07 PDT 2008


Hi,

`clang -serialize` does crash for all input files. This is because of  
the following commit:

     URL: http://llvm.org/viewvc/llvm-project?rev=54502&view=rev
     Log:
     ParseAST now never releases the passed ASTConsumer.  This is the  
responsibility of the client.

While I understand why not deleting the Consumer is nice, it's not as  
simple as this patch pretends: The TranslationUnit is a local variable  
of ParseAST() and is destroyed as soon as the function exits. Most  
Consumers keep a reference to the TU and do work in their destructor,  
which will now be always run when the TU is already dead (e.g. the  
ASTSerializers).

So, either that commit is undone, or the TranslationUnit has to be  
allocated on the stack somehow.

Nico



More information about the cfe-dev mailing list