[LLVMbugs] [Bug 15896] New: parser crash
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed May 1 22:33:40 PDT 2013
http://llvm.org/bugs/show_bug.cgi?id=15896
Bug ID: 15896
Summary: parser crash
Product: clang
Version: 3.2
Hardware: PC
OS: All
Status: NEW
Severity: release blocker
Priority: P
Component: C++11
Assignee: unassignedclangbugs at nondot.org
Reporter: lenx.wei at gmail.com
CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
Classification: Unclassified
When I build my libproton v1.1.2 at https://github.com/LenxWei/libproton, clang
3.1, 3.2 and 3.3(from svn) are all crashed. However, apple clang(Apple LLVM
version 4.2 (clang-425.0.27) (based on LLVM 3.2svn)) survived.
I simplify libproton to this small program:
##############
constexpr.cpp
##############
#include <iostream>
#include <tuple>
using namespace std;
constexpr long index(long i, long size)
{
return (i<0)?i:(i+size);
}
template<long i, typename ...T>
struct at_index{
const tuple<T...>* p;
typedef decltype(get<i>(*p)) type;
};
template<long i, typename ...T>
typename at_index<index(i, sizeof...(T)), T...>::type at(const tuple<T...>& x)
{
return get<index(i,sizeof...(T))>(x);
}
int main()
{
tuple<long, long> a;
cout << at<-1>(a) << endl;
}
##################
It can crash clang 3.2 easily as following:
##################
lenx at intel0:~/src$ clang++ -I /usr/include/x86_64-linux-gnu/c++/4.7
constexpr.cpp -std=c++11 -o t
clang: SemaTemplateInstantiate.cpp:2683: llvm::PointerUnion<clang::Decl*,
llvm::SmallVector<clang::Decl*, 4u>*>*
clang::LocalInstantiationScope::findInstantiationOf(const clang::Decl*):
Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this scope"'
failed.
0 clang 0x00000000020b3dff
1 clang 0x00000000020b4329
2 libpthread.so.0 0x00007fe7f37e5cb0
3 libc.so.6 0x00007fe7f2a33425 gsignal + 53
4 libc.so.6 0x00007fe7f2a36b8b abort + 379
5 libc.so.6 0x00007fe7f2a2c0ee
6 libc.so.6 0x00007fe7f2a2c192
7 clang 0x0000000000d7c278
clang::LocalInstantiationScope::findInstantiationOf(clang::Decl const*) + 376
8 clang 0x0000000000dac358
clang::Sema::FindInstantiatedDecl(clang::SourceLocation, clang::NamedDecl*,
clang::MultiLevelTemplateArgumentList const&) + 472
9 clang 0x0000000000d786f6
10 clang 0x0000000000d8ee21
11 clang 0x0000000000d8dbd9
12 clang 0x0000000000d93fb2
13 clang 0x0000000000d9782e
14 clang 0x0000000000d97936
15 clang 0x0000000000d8dbfa
16 clang 0x0000000000d84f98
17 clang 0x0000000000d886f8
18 clang 0x0000000000d89148
19 clang 0x0000000000d89b36
20 clang 0x0000000000d8a202
21 clang 0x0000000000d7f788
22 clang 0x0000000000d80d82
23 clang 0x0000000000d80f17
24 clang 0x0000000000d816ef clang::Sema::SubstType(clang::QualType,
clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation,
clang::DeclarationName) + 143
25 clang 0x0000000000d4d8f1
clang::Sema::SubstituteExplicitTemplateArguments(clang::FunctionTemplateDecl*,
clang::TemplateArgumentListInfo&,
llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&,
llvm::SmallVectorImpl<clang::QualType>&, clang::QualType*,
clang::sema::TemplateDeductionInfo&) + 1681
26 clang 0x0000000000d72ad3
clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*,
clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>,
clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&) + 627
27 clang 0x0000000000ccd7f2
clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*,
clang::DeclAccessPair, clang::TemplateArgumentListInfo*,
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) + 386
28 clang 0x0000000000ccf4fd
clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*,
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) + 445
29 clang 0x0000000000ccf7b6
clang::Sema::buildOverloadedCallSet(clang::Scope*, clang::Expr*,
clang::UnresolvedLookupExpr*, clang::Expr**, unsigned int,
clang::SourceLocation, clang::OverloadCandidateSet*,
clang::ActionResult<clang::Expr*, true>*) + 310
30 clang 0x0000000000cd0041
clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*,
clang::UnresolvedLookupExpr*, clang::SourceLocation, clang::Expr**, unsigned
int, clang::SourceLocation, clang::Expr*, bool) + 273
31 clang 0x0000000000c26bc7 clang::Sema::ActOnCallExpr(clang::Scope*,
clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*, bool) + 1383
32 clang 0x0000000000a8053f
clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*,
true>) + 2719
33 clang 0x0000000000a797bb clang::Parser::ParseCastExpression(bool,
bool, bool&, clang::Parser::TypeCastState) + 235
34 clang 0x0000000000a7bd2d clang::Parser::ParseCastExpression(bool,
bool, clang::Parser::TypeCastState) + 29
35 clang 0x0000000000a7a641 clang::Parser::ParseCastExpression(bool,
bool, bool&, clang::Parser::TypeCastState) + 3953
36 clang 0x0000000000a7bd2d clang::Parser::ParseCastExpression(bool,
bool, clang::Parser::TypeCastState) + 29
37 clang 0x0000000000a7c7d6
clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*,
true>, clang::prec::Level) + 2614
38 clang 0x0000000000a7d2af
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 47
39 clang 0x0000000000a7e379
clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 9
40 clang 0x0000000000ab2342 clang::Parser::ParseExprStatement() + 50
41 clang 0x0000000000aae67f
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&)
+ 2607
42 clang 0x0000000000aae88e
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*) + 142
43 clang 0x0000000000aab5b7
clang::Parser::ParseCompoundStatementBody(bool) + 663
44 clang 0x0000000000ab2efd
clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) + 141
45 clang 0x0000000000a529d9
clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) +
2505
46 clang 0x0000000000a68173
clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int, bool,
clang::SourceLocation*, clang::Parser::ForRangeInit*) + 2131
47 clang 0x0000000000a4f065
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier) + 245
48 clang 0x0000000000a4f739
49 clang 0x0000000000a4f7af
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier) + 31
50 clang 0x0000000000a50bd9
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 105
51 clang 0x0000000000a51438
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 184
52 clang 0x0000000000a48e4d clang::ParseAST(clang::Sema&, bool, bool)
+ 509
53 clang 0x00000000007865f9 clang::FrontendAction::Execute() + 153
54 clang 0x0000000000769f58
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 344
55 clang 0x0000000000751826
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1478
56 clang 0x000000000074a720 cc1_main(char const**, char const**, char
const*, void*) + 1248
57 clang 0x0000000000732d73 main + 787
58 libc.so.6 0x00007fe7f2a1e76d __libc_start_main + 237
59 clang 0x000000000074a0dd
Stack dump:
0. Program arguments: /home/lenx/bin/clang -cc1 -triple
x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name
constexpr.cpp -mrelocation-model static -mdisable-fp-elim -fmath-errno
-masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array
-target-cpu x86-64 -target-linker-version 2.22 -momit-leaf-frame-pointer
-resource-dir /home/lenx/bin/../lib/clang/3.2 -I
/usr/include/x86_64-linux-gnu/c++/4.7 -fmodule-cache-path
/var/tmp/clang-module-cache -c-isystem /usr/include/x86_64-linux-gnu
-cxx-isystem /usr/include/x86_64-linux-gnu -internal-isystem
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7 -internal-isystem
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/x86_64-linux-gnu
-internal-isystem
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/backward
-internal-isystem /usr/local/include -internal-isystem
/home/lenx/bin/../lib/clang/3.2/include -internal-externc-isystem
/usr/include/x86_64-linux-gnu -internal-externc-isystem /include
-internal-externc-isystem /usr/include -std=c++11 -fdeprecated-macro
-fdebug-compilation-dir /home/lenx/src -ferror-limit 19 -fmessage-length 128
-mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions
-fdiagnostics-show-option -fcolor-diagnostics -o /tmp/constexpr-wGcazJ.o -x c++
constexpr.cpp
1. constexpr.cpp:26:20: current parser token ')'
2. constexpr.cpp:24:1: parsing function body 'main'
3. constexpr.cpp:24:1: in compound statement ('{}')
clang: error: unable to execute command: Aborted (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 3.2 (tags/RELEASE_32/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
clang: note: diagnostic msg: PLEASE submit a bug report to
http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and
associated run script.
clang: note: diagnostic msg:
################
The generated cpp is attached.
The generated sh is as:
lenx at intel0:~/src$ cat /tmp/constexpr-3SlfGe.sh
/home/lenx/bin/clang -cc1 -triple x86_64-unknown-linux-gnu -emit-obj
-mrelax-all -disable-free -main-file-name constexpr.cpp -mrelocation-model
static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases
-munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.22
-momit-leaf-frame-pointer -c-isystem /usr/include/x86_64-linux-gnu -cxx-isystem
/usr/include/x86_64-linux-gnu -std=c++11 -fdeprecated-macro -ferror-limit 19
-fmessage-length 128 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions
-fexceptions -fdiagnostics-show-option -fcolor-diagnostics -x c++
constexpr-3SlfGe.cpp
thanks,
Lenx Tao Wei
http://lenx.100871.net
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130502/0b124c9c/attachment.html>
More information about the llvm-bugs
mailing list