New issue
Advanced search Search tips

Issue 599978 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: iOS , Mac
Pri: 2
Type: Bug

Blocked on:
issue 601774



Sign in to add a comment

crash in clang ToT when using __attribute((ns_consumed))

Project Member Reported by sdefresne@chromium.org, Apr 1 2016

Issue description

Command-line:

third_party/llvm-build/Release+Asserts/bin/clang -cc1 -emit-obj -fblocks -fobjc-arc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk scoped_nsobject_unittest_arc-6041b8.mm

Content of scoped_nsobject_unittest_arc-6041b8.mm:

#import <Foundation/Foundation.h>

struct t {
  t(__attribute((ns_consumed)) id object, int policy);
};

void ScopedNSObjectTestARCScopedNSObject() {
  t p(nil, 0);
}

Crash:

Assertion failed: (paramInfos.empty() || paramInfos.size() == argTypes.size()), function create, file /b/build/slave/build_and_upload_clang/build/src/third_party/llvm/tools/clang/lib/CodeGen/CGCall.cpp, line 709.
0  clang                    0x000000010840781b llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 43
1  clang                    0x0000000108406a36 llvm::sys::RunSignalHandlers() + 70
2  clang                    0x0000000108408094 abort + 916
3  libsystem_platform.dylib 0x00007fff9ba2a52a _sigtramp + 26
4  clang                    0x000000010aac22b9 clang::Stmt::StatisticsEnabled + 106189
5  clang                    0x0000000108407d0e abort + 14
6  clang                    0x0000000108407cf1 __assert_rtn + 81
7  clang                    0x0000000108630d91 clang::CodeGen::CGFunctionInfo::create(unsigned int, bool, bool, clang::FunctionType::ExtInfo const&, llvm::ArrayRef<clang::FunctionProtoType::ExtParameterInfo>, clang::CanQual<clang::Type>, llvm::ArrayRef<clang::CanQual<clang::Type> >, clang::CodeGen::RequiredArgs) + 417
8  clang                    0x000000010862ccf9 clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo(clang::CanQual<clang::Type>, bool, bool, llvm::ArrayRef<clang::CanQual<clang::Type> >, clang::FunctionType::ExtInfo, llvm::ArrayRef<clang::FunctionProtoType::ExtParameterInfo>, clang::CodeGen::RequiredArgs) + 569
9  clang                    0x000000010862da33 clang::CodeGen::CodeGenTypes::arrangeCXXStructorDeclaration(clang::CXXMethodDecl const*, clang::CodeGen::StructorType) + 915
10 clang                    0x000000010862aa08 clang::CodeGen::CodeGenModule::getAddrOfCXXStructor(clang::CXXMethodDecl const*, clang::CodeGen::StructorType, clang::CodeGen::CGFunctionInfo const*, llvm::FunctionType*, bool, bool) + 152
11 clang                    0x00000001086524ab clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(clang::CXXConstructorDecl const*, clang::CXXCtorType, bool, bool, clang::CodeGen::Address, clang::CXXConstructExpr const*) + 827
12 clang                    0x00000001086bce63 clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(clang::CXXConstructExpr const*, clang::CodeGen::AggValueSlot) + 2883
13 clang                    0x00000001086b612e clang::CodeGen::CodeGenFunction::EmitAggregateCopy(clang::CodeGen::Address, clang::CodeGen::Address, clang::QualType, bool, bool) + 18094
14 clang                    0x00000001086b1762 clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*, clang::CodeGen::AggValueSlot) + 770
15 clang                    0x000000010867e77e clang::CodeGen::CodeGenFunction::EmitExprAsInit(clang::Expr const*, clang::ValueDecl const*, clang::CodeGen::LValue, bool) + 654
16 clang                    0x000000010867d209 clang::CodeGen::CodeGenFunction::EmitAutoVarInit(clang::CodeGen::CodeGenFunction::AutoVarEmission const&) + 713
17 clang                    0x0000000108679e27 clang::CodeGen::CodeGenFunction::EmitVarDecl(clang::VarDecl const&) + 343
18 clang                    0x000000010877c11b clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&) + 155
19 clang                    0x0000000108774ebc clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 316
20 clang                    0x00000001087740d8 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 200
21 clang                    0x000000010877cdfb clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 91
22 clang                    0x00000001087aee1f clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 1679
23 clang                    0x00000001087c14c2 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) + 450
24 clang                    0x00000001087bd6d8 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) + 184
25 clang                    0x00000001087c3322 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 226
26 clang                    0x000000010883f8df clang::CreateLLVMCodeGen(clang::DiagnosticsEngine&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, clang::HeaderSearchOptions const&, clang::PreprocessorOptions const&, clang::CodeGenOptions const&, llvm::LLVMContext&, clang::CoverageSourceInfo*) + 1199
27 clang                    0x00000001087a85c5 clang::EmitObjAction::EmitObjAction(llvm::LLVMContext*) + 805
28 clang                    0x0000000108f61b62 clang::ParseAST(clang::Sema&, bool, bool) + 482
29 clang                    0x00000001089c0079 clang::FrontendAction::Execute() + 73
30 clang                    0x00000001089835e1 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 1089
31 clang                    0x0000000108a18e81 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 4465
32 clang                    0x00000001070f2183 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1363
33 clang                    0x00000001070f0b53 main + 11699
34 clang                    0x00000001070edd34 start + 52
35 clang                    0x0000000000000008 start + 4176552712
Stack dump:
0.	Program arguments: ../third_party/llvm-build/Release+Asserts/bin/clang -cc1 -emit-obj -fblocks -fobjc-arc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk scoped_nsobject_unittest_arc-6041b8.mm 
1.	<eof> parser at end of file
2.	scoped_nsobject_unittest_arc-6041b8.mm:7:6: LLVM IR generation of declaration 'ScopedNSObjectTestARCScopedNSObject'
3.	scoped_nsobject_unittest_arc-6041b8.mm:7:6: Generating code for declaration 'ScopedNSObjectTestARCScopedNSObject'
scoped_nsobject_unittest_arc-6041b8.sh: line 1: 17284 Illegal instruction: 4  ../third_party/llvm-build/Release+Asserts/bin/clang -cc1 -emit-obj -fblocks -fobjc-arc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk scoped_nsobject_unittest_arc-6041b8.mm

 
Removing the second parameter policy fixes the crash.
failure.zip
2.6 KB Download
Status: ExternalDependency (was: Assigned)
Fixed in upstream r265324, just needs a clang roll.
Cc: stkhapugin@chromium.org
Blockedon: 601774

Comment 7 by thakis@chromium.org, Apr 19 2016

Status: Fixed (was: ExternalDependency)

Sign in to add a comment