[cfe-dev] Crash with -serialize

Argiris Kirtzidis akyrtzi at gmail.com
Sat Aug 9 14:27:33 PDT 2008


Nico Weber wrote:
> 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.
>   

How about having all Consumers do work in the HandleTranslationUnit 
method, instead of their destructor, wouldn't this fix the problem ?


-Argiris



More information about the cfe-dev mailing list