[cfe-dev] FullSourceLoc, getSpellingLineNumber segmentation fault

Mikhail Ramalho via cfe-dev cfe-dev at lists.llvm.org
Mon Feb 29 11:16:28 PST 2016


Hi,

I used to face a lot of crashes on this method, it would usually explode at
some #__SSE2__ code in a static method called ComputeLineNumbers inside
clang.

Are you using virtual files? Are you generating the AST more than once (I
mean, calling Tool.BuildAST() more than once)?

I don't quite remember how I fixed, but I _think_ those two might have
something to do with the problem.

Cheers,


2016-02-29 18:22 GMT+00:00 victor via cfe-dev <cfe-dev at lists.llvm.org>:

> Hi,
>
> Does somebody know what can make the method getSpellingLineNumber from
> FullSourceLoc to generate a segmentation fault? I'm using clang 3.6.
>
>
> http://clang.llvm.org/doxygen/classclang_1_1FullSourceLoc.html#a52927fcf23cf662c209e5e996bf59917
>
> Before using this method, I have checked that the FullSourceLoc is valid.
> This is the code:
>
>  if(loc.isValid()){
>
>          if(!(loc.getFileID().isInvalid())){
>
>
> if(Context->getSourceManager().getFileEntryForID(loc.getFileID()) != NULL){
>
>                    unsigned int = loc.getSpellingLineNumber();
>             }
>          }
>   }
>
> I can't find anything special in the code which I'm using to check if my
> program works:
>
>     void DeleteNode( XMLNode* node )    {
>         node->_parent->DeleteChild( node );
>     }
>
> And this is the tree:
>
> | | |-CXXMethodDecl 0x26b4090 <line:1576:5, line:1578:5> line:1576:10
> DeleteNode 'void (class tinyxml2::XMLNode *)'
> | | | |-ParmVarDecl 0x26b4010 <col:22, col:31> col:31 used node 'class
> tinyxml2::XMLNode *'
> | | | |-CompoundStmt 0x26c9500 <col:38, line:1578:5>
> | | | | `-CXXMemberCallExpr 0x26c94b8 <line:1577:9, col:42> 'void'
> | | | |   |-MemberExpr 0x26c9460 <col:9, col:24> '<bound member function
> type>' ->DeleteChild 0x2699420
> | | | |   | `-ImplicitCastExpr 0x26c9448 <col:9, col:15> 'class
> tinyxml2::XMLNode *' <LValueToRValue>
> | | | |   |   `-MemberExpr 0x26c9418 <col:9, col:15> 'class
> tinyxml2::XMLNode *' lvalue ->_parent 0x269a310
> | | | |   |     `-ImplicitCastExpr 0x26c9400 <col:9> 'class
> tinyxml2::XMLNode *' <LValueToRValue>
> | | | |   |       `-DeclRefExpr 0x26c93d8 <col:9> 'class tinyxml2::XMLNode
> *' lvalue ParmVar 0x26b4010 'node' 'class tinyxml2::XMLNode *'
>
> The object "loc" contains the location of the MemberExpr "_parent".
>
> Thanks.
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>


-- 

Mikhail Ramalho.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160229/bb5eae74/attachment.html>


More information about the cfe-dev mailing list