Hi Konstantin,

What Clang version are you using? I can't reproduce the hanging behavior with a couple of versions:

* llvm-3.3-release-binary downloaded from llvm's site;
* llvm-3.3-debug-version (I built it with --enable-assertion and --disable-optimization); * r187631 from today's svn (built with --enable-assertion and --enable-optimization);

- Yang

On 7/29/13 11:37 AM, Konstantin Tokarev wrote:

29.07.2013, 18:43, "Yang Chen"<[email protected]>:
Hi Konstantin,

I start traveling today and won't have constant internet access until
Thursday. I will investigate it soon. Thanks!

- Yang

On 7/29/13 6:13 AM, Konstantin Tokarev wrote:

  29.07.2013, 12:42, "Konstantin Tokarev"<[email protected]>:
  Hi all,

  A couple of times I got clang_delta running infinitely with 100% CPU load. It 
would be great if there was some pre-defined or adpative time limit for it.
  Attached test case for clang_delta hanging.
Attached reduced test case.

We have infinite recursion on operator<<  here:

operator<<
CXXMethodDecl 0x3417b00<clang_delta_hang.cpp:8:3, col:35>  operator<<  'class 
basic_ostream<char, int>  (_Bool)'
`-ParmVarDecl 0x3417a40<col:30, col:35>  '_Bool'

gdb trace:

0x00000000006d332d in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::getDerived (this=0x166a470) at 
/usr/local/include/clang/AST/RecursiveASTVisitor.h:143
143       Derived&getDerived() { return *static_cast<Derived*>(this); }
(gdb) bt
#0  0x00000000006d332d in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::getDerived (this=0x166a470) at 
/usr/local/include/clang/AST/RecursiveASTVisitor.h:143
#1  0x00000000006ef68d in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromImplicitCastExpr 
(this=0x166a470, S=0x1685500) at /usr/local/include/clang/AST/StmtNodes.inc:393
#2  0x00000000006d98af in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseImplicitCastExpr 
(this=0x166a470, S=0x1685500) at 
/usr/local/include/clang/AST/RecursiveASTVisitor.h:1993
#3  0x0000000000684e9e in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x1685500) at /usr/local/include/clang/AST/StmtNodes.inc:393
#4  0x00000000006d991a in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseImplicitCastExpr 
(this=0x166a470, S=0x1685518) at 
/usr/local/include/clang/AST/RecursiveASTVisitor.h:1993
#5  0x0000000000684e9e in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x1685518) at /usr/local/include/clang/AST/StmtNodes.inc:393
#6  0x000000000068148c in RNFStatementVisitor::VisitCallExpr (this=0x166a470, 
CallE=0x1685570) at RemoveNestedFunction.cpp:142
#7  0x00000000006eff7a in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCallExpr 
(this=0x166a470, S=0x1685570) at /usr/local/include/clang/AST/StmtNodes.inc:299
#8  0x00000000006f0007 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCXXOperatorCallExpr 
(this=0x166a470, S=0x1685570) at /usr/local/include/clang/AST/StmtNodes.inc:315
#9  0x00000000006f9f76 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverseNode 
(this=0x166a470, S=0x1685570, EnqueueChildren=@0x7ffffffeb30f: true) at 
/usr/local/include/clang/AST/StmtNodes.inc:315
#10 0x00000000006d3511 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverse (this=0x166a470, 
S=0x1685678) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:453
#11 0x0000000000683615 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x1685678) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:541
#12 0x000000000068148c in RNFStatementVisitor::VisitCallExpr (this=0x166a470, 
CallE=0x1685820) at RemoveNestedFunction.cpp:142
#13 0x00000000006eff7a in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCallExpr 
(this=0x166a470, S=0x1685820) at /usr/local/include/clang/AST/StmtNodes.inc:299
#14 0x00000000006f0007 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCXXOperatorCallExpr 
(this=0x166a470, S=0x1685820) at /usr/local/include/clang/AST/StmtNodes.inc:315
#15 0x00000000006f9f76 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverseNode 
(this=0x166a470, S=0x1685820, EnqueueChildren=@0x7ffffffedf9f: true) at 
/usr/local/include/clang/AST/StmtNodes.inc:315
#16 0x00000000006d3511 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverse (this=0x166a470, 
S=0x1685820) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:453
#17 0x0000000000683615 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x1685820) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:541
#18 0x000000000068148c in RNFStatementVisitor::VisitCallExpr (this=0x166a470, 
CallE=0x1685928) at RemoveNestedFunction.cpp:142
#19 0x00000000006eff7a in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCallExpr 
(this=0x166a470, S=0x1685928) at /usr/local/include/clang/AST/StmtNodes.inc:299
#20 0x00000000006f0007 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCXXOperatorCallExpr 
(this=0x166a470, S=0x1685928) at /usr/local/include/clang/AST/StmtNodes.inc:315
#21 0x00000000006f9f76 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverseNode 
(this=0x166a470, S=0x1685928, EnqueueChildren=@0x7fffffff0c2f: true) at 
/usr/local/include/clang/AST/StmtNodes.inc:315
#22 0x00000000006d3511 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverse (this=0x166a470, 
S=0x1685928) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:453
#23 0x0000000000683615 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x1685928) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:541
#24 0x000000000068148c in RNFStatementVisitor::VisitCallExpr (this=0x166a470, 
CallE=0x1685ad0) at RemoveNestedFunction.cpp:142
#25 0x00000000006eff7a in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCallExpr 
(this=0x166a470, S=0x1685ad0) at /usr/local/include/clang/AST/StmtNodes.inc:299
#26 0x00000000006f0007 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCXXOperatorCallExpr 
(this=0x166a470, S=0x1685ad0) at /usr/local/include/clang/AST/StmtNodes.inc:315
#27 0x00000000006f9f76 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverseNode 
(this=0x166a470, S=0x1685ad0, EnqueueChildren=@0x7fffffff38bf: true) at 
/usr/local/include/clang/AST/StmtNodes.inc:315
#28 0x00000000006d3511 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverse (this=0x166a470, 
S=0x1685d90) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:453
#29 0x0000000000683615 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x1685d90) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:541
#30 0x000000000068148c in RNFStatementVisitor::VisitCallExpr (this=0x166a470, 
CallE=0x1685e98) at RemoveNestedFunction.cpp:142
#31 0x00000000006eff7a in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCallExpr 
(this=0x166a470, S=0x1685e98) at /usr/local/include/clang/AST/StmtNodes.inc:299
#32 0x00000000006f0007 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCXXOperatorCallExpr 
(this=0x166a470, S=0x1685e98) at /usr/local/include/clang/AST/StmtNodes.inc:315
#33 0x00000000006f9f76 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverseNode 
(this=0x166a470, S=0x1685e98, EnqueueChildren=@0x7fffffff654f: true) at 
/usr/local/include/clang/AST/StmtNodes.inc:315
#34 0x00000000006d3511 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverse (this=0x166a470, 
S=0x16860c8) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:453
#35 0x0000000000683615 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x16860c8) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:541
#36 0x000000000068148c in RNFStatementVisitor::VisitCallExpr (this=0x166a470, 
CallE=0x1686218) at RemoveNestedFunction.cpp:142
#37 0x00000000006eff7a in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCallExpr 
(this=0x166a470, S=0x1686218) at /usr/local/include/clang/AST/StmtNodes.inc:299
#38 0x00000000006f0007 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::WalkUpFromCXXOperatorCallExpr 
(this=0x166a470, S=0x1686218) at /usr/local/include/clang/AST/StmtNodes.inc:315
#39 0x00000000006f9f76 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverseNode 
(this=0x166a470, S=0x1686218, EnqueueChildren=@0x7fffffff91df: true) at 
/usr/local/include/clang/AST/StmtNodes.inc:315
#40 0x00000000006d3511 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::dataTraverse (this=0x166a470, 
S=0x1686888) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:453
#41 0x0000000000683615 in 
clang::RecursiveASTVisitor<RNFStatementVisitor>::TraverseStmt (this=0x166a470, 
S=0x1686888) at /usr/local/include/clang/AST/RecursiveASTVisitor.h:541
#42 0x000000000068148c in RNFStatementVisitor::VisitCallExpr (this=0x166a470, 
CallE=0x16869b0) at RemoveNestedFunction.cpp:142





Reply via email to