Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clang 3.4 failed to compile C++ code that works with clang 3.3 (Segmentation fault) #18847

Closed
llvmbot opened this issue Jan 14, 2014 · 12 comments
Labels
bugzilla Issues migrated from bugzilla clang Clang issues not falling into any other category compile-fail Use [accepts-invalid] and [rejects-valid] instead

Comments

@llvmbot
Copy link
Collaborator

llvmbot commented Jan 14, 2014

Bugzilla Link 18473
Resolution FIXED
Resolved on Mar 30, 2014 18:03
Version unspecified
OS Linux
Attachments the preprocessed c++ source file
Reporter LLVM Bugzilla Contributor
CC @DougGregor,@zygoloid,@tstellar

Extended Description

Upgrading to 3.4 breaks my old c++ code

Step to reproduce:

"/usr/bin/clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -disable-free -disable-llvm-verifier -main-file-name second_order_approximation.cc -mrelocation-model static -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.24 -momit-leaf-frame-pointer -D "NDEBUG" -O3 -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-sign-conversion -Wno-exit-time-destructors -Wno-float-equal -Wno-global-constructors -Wno-missing-declarations -Wno-unused-parameter -Wno-padded -Wno-shadow -Wno-weak-vtables -Wno-missing-prototypes -std=c++11 -fdeprecated-macro -ferror-limit 2 -fmessage-length 239 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -x c++ second_order_approximation-99534a.cpp

Actual Results:
0 libLLVM-3.4.so 0x00007f3a5b6fdb22 llvm::sys::PrintStackTrace(_IO_FILE*) + 34
1 libLLVM-3.4.so 0x00007f3a5b6fd6cc
2 libpthread.so.0 0x00007f3a5a613870
3 clang 0x00000000011465a8 clang::Expr::EvaluateAsInitializer(clang::APValue&, clang::ASTContext const&, clang::VarDecl const*, llvm::SmallVectorImpl<std::pair<clang::SourceLocation, clang::PartialDiagnostic> >&) const + 40
4 clang 0x00000000010c5159 clang::VarDecl::evaluateValue(llvm::SmallVectorImpl<std::pair<clang::SourceLocation, clang::PartialDiagnostic> >&) const + 121
5 clang 0x00000000010cd302 clang::VarDecl::checkInitIsICE() const + 242
6 clang 0x0000000000b504d7 clang::Sema::ActOnFinishFullExpr(clang::Expr*, clang::SourceLocation, bool, bool, bool) + 1911
7 clang 0x0000000000bf01c0 clang::Sema::ActOnCapScopeReturnStmt(clang::SourceLocation, clang::Expr*) + 752
8 clang 0x0000000000bf095f clang::Sema::ActOnReturnStmt(clang::SourceLocation, clang::Expr*) + 703
9 clang 0x0000000000981940 clang::Parser::ParseReturnStatement() + 112
10 clang 0x0000000000985d5a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) + 282
11 clang 0x0000000000986925 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*) + 117
12 clang 0x000000000098a085 clang::Parser::ParseCompoundStatementBody(bool) + 1765
13 clang 0x000000000096ba22 clang::Parser::ParseLambdaExpressionAfterIntroducer(clang::LambdaIntroducer&) + 2962
14 clang 0x000000000096ce73 clang::Parser::ParseLambdaExpression() + 275
15 clang 0x0000000000958347 clang::Parser::ParseCastExpression(bool, bool, bool&, clang::Parser::TypeCastState) + 6455
16 clang 0x000000000095923d clang::Parser::ParseCastExpression(bool, bool, clang::Parser::TypeCastState) + 29
17 clang 0x00000000009592cf clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 31
18 clang 0x000000000096f130 clang::Parser::ParseBraceInitializer() + 368
19 clang 0x00000000009336b8 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&) + 920
20 clang 0x000000000093d3b9 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 1833
21 clang 0x00000000009415cf clang::Parser::ParseSimpleDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, unsigned int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&, bool, clang::Parser::ForRangeInit*) + 815
22 clang 0x000000000094187a clang::Parser::ParseDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, unsigned int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&) + 218
23 clang 0x0000000000986100 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) + 1216
24 clang 0x0000000000986925 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*) + 117
25 clang 0x000000000098a085 clang::Parser::ParseCompoundStatementBody(bool) + 1765
26 clang 0x000000000098c20e clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) + 190
27 clang 0x0000000000996ac4 clang::Parser::ParseLexedMethodDef(clang::Parser::LexedMethod&) + 308
28 clang 0x00000000009968e0 clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&) + 112
29 clang 0x00000000009507cc clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::Parser::ParsedAttributesWithRange&, unsigned int, clang::Decl*) + 1548
30 clang 0x0000000000951ddc clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::Parser::ParsedAttributesWithRange&) + 2060

31 clang 0x000000000093672d clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*) + 4701
32 clang 0x0000000000990527 clang::Parser::ParseSingleDeclarationAfterTemplate(unsigned int, clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 855
33 clang 0x0000000000991bf3 clang::Parser::ParseTemplateDeclarationOrSpecialization(unsigned int, clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 867
34 clang 0x0000000000991ef9 clang::Parser::ParseDeclarationStartingWithTemplate(unsigned int, clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 121
35 clang 0x00000000009419e8 clang::Parser::ParseDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, unsigned int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&) + 584
36 clang 0x000000000092e6c4 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) + 324
37 clang 0x000000000094b408 clang::Parser::ParseInnerNamespace(std::vector<clang::SourceLocation, std::allocatorclang::SourceLocation >&, std::vector<clang::IdentifierInfo*, std::allocatorclang::IdentifierInfo* >&, std::vector<clang::SourceLocation, std::allocatorclang::SourceLocation >&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) + 376
38 clang 0x000000000094b994 clang::Parser::ParseNamespace(unsigned int, clang::SourceLocation&, clang::SourceLocation) + 1204
39 clang 0x0000000000941a40 clang::Parser::ParseDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, unsigned int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&) + 672
40 clang 0x000000000092e6c4 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) + 324
41 clang 0x000000000092ecc6 clang::Parser::ParseTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&) + 182
42 clang 0x000000000092536b clang::ParseAST(clang::Sema&, bool, bool) + 283
43 clang 0x00000000006610b9 clang::FrontendAction::Execute() + 169
44 clang 0x0000000000640858 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 296
45 clang 0x000000000062a7d3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1683
46 clang 0x0000000000626218 cc1_main(char const**, char const**, char const*, void*) + 1144
47 clang 0x0000000000624a4d main + 7597
48 libc.so.6 0x00007f3a59f77b05 __libc_start_main + 245
49 clang 0x00000000006252af
Stack dump:
0. Program arguments: /usr/bin/clang -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -disable-free -disable-llvm-verifier -main-file-name second_order_approximation.cc -mrelocation-model static -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.24 -momit-leaf-frame-pointer -D NDEBUG -O3 -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-sign-conversion -Wno-exit-time-destructors -Wno-float-equal -Wno-global-constructors -Wno-missing-declarations -Wno-unused-parameter -Wno-padded -Wno-shadow -Wno-weak-vtables -Wno-missing-prototypes -std=c++11 -fdeprecated-macro -ferror-limit 2 -fmessage-length 239 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -x c++ second_order_approximation-99534a.cpp

  1.  include/f/variate_generator/vg/distribution/burr.hpp:91:66: current parser token ';'
    
  2.  include/f/variate_generator/vg/distribution/burr.hpp:28:1: parsing namespace 'f'
    
  3.  include/f/variate_generator/vg/distribution/burr.hpp:32:5: parsing struct/union/class body 'burr'
    
  4.  include/f/variate_generator/vg/distribution/burr.hpp:77:13: parsing function body 'direct_burr_impl'
    
  5.  include/f/variate_generator/vg/distribution/burr.hpp:77:13: in compound statement ('{}')
    
  6.  include/f/variate_generator/vg/distribution/burr.hpp:90:21: lambda expression parsing
    
  7.  include/f/variate_generator/vg/distribution/burr.hpp:91:21: in compound statement ('{}')
    

./second_order_approximation-99534a.sh: line 1: 12116 Segmentation fault (core dumped) "/usr/bin/clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -disable-free -disable-llvm-verifier -main-file-name second_order_approximation.cc -mrelocation-model static -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.24 -momit-leaf-frame-pointer -D "NDEBUG" -O3 -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-sign-conversion -Wno-exit-time-destructors -Wno-float-equal -Wno-global-constructors -Wno-missing-declarations -Wno-unused-parameter -Wno-padded -Wno-shadow -Wno-weak-vtables -Wno-missing-prototypes -std=c++11 -fdeprecated-macro -ferror-limit 2 -fmessage-length 239 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -x c++ second_order_approximation-99534a.cpp

Expected Results:
clang3.4 compiles my code as clang3.3 does

Build Date & Platform:
Linux 3.10.24-1-lts #​1 SMP Tue Jan 14 12:53:09 CET 2014 x86_64 GNU/Linux

@llvmbot
Copy link
Collaborator Author

llvmbot commented Jan 14, 2014

Full log of clang run
Reduced:

template < typename final_type >
void direct_burr_impl()
{
static const final_type l(1);

[](const final_type u) -> final_type { return -l + u; };

}

Compiling this with clang r199081 (3.5, trunk) results in (full log attached):

@llvmbot
Copy link
Collaborator Author

llvmbot commented Jan 14, 2014

Changing the line

static const final_type l(1)

to

static const float l(1)

that is a non-dependent type, makes the code compile.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Jan 16, 2014

I tested the following code:

template < typename final_type >
void direct_burr_impl()
{
static const final_type l(1);

[](const final_type u) -> final_type { return -l + u; };

}

int main()
{
direct_burr_impl();
direct_burr_impl();
direct_burr_impl();
direct_burr_impl();

return 0;

}

successful with VS2012, clang3.2, clang3.3, g++4.5.3, g++4.6.4, g++4.7.3, g++4.8.1, g++4.9.0, Icc13.0.1, ONLY clang3.4 crashes.

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Jan 16, 2014

*** Bug llvm/llvm-bugzilla-archive#18509 has been marked as a duplicate of this bug. ***

@llvmbot
Copy link
Collaborator Author

llvmbot commented Jan 19, 2014

A patch that should fix this bug has been submitted for review:
http://llvm-reviews.chandlerc.com/D2575

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Feb 7, 2014

*** Bug #18799 has been marked as a duplicate of this bug. ***

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Feb 7, 2014

*** Bug llvm/llvm-bugzilla-archive#18719 has been marked as a duplicate of this bug. ***

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Feb 7, 2014

Fixed in r200954.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Feb 11, 2014

Could this fix be backported to the 3.4 branch so it gets into the 3.4.1 release?

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Feb 18, 2014

Seems like a good candidate for 3.4.1.

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Nov 26, 2021

mentioned in issue llvm/llvm-bugzilla-archive#18509

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Nov 26, 2021

mentioned in issue llvm/llvm-bugzilla-archive#18719

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 9, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla clang Clang issues not falling into any other category compile-fail Use [accepts-invalid] and [rejects-valid] instead
Projects
None yet
Development

No branches or pull requests

1 participant