Accessing synthesized ivar from cmethod in ObjC++ crashes LLVM

Originator:joachimb
Number:rdar://10593227 Date Originated:16-Dec-2011 05:45 PM
Status:Open Resolved:
Product:Developer Tools Product Version:4.2.1
Classification:Crash Reproducible:Always
 
16-Dec-2011 05:45 PM Joachim Bengtsson:
'IVarAccessFromClassLLVMCrash.zip' was successfully uploaded

16-Dec-2011 05:45 PM Joachim Bengtsson:
Summary:
Accessing a synthesized instance variable from a class method crashes LLVM.

Example input (also attached, and http://cl.ly/1d3N3T3E06410X2v0i43):
@interface CNAppDelegate ()
@property (nonatomic,retain) id foo;
@end

@implementation CNAppDelegate
@synthesize foo;
+(void)myClassMethod;
{
	foo = [NSObject new];
}
@end

Example output:


CompileC /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/Objects-normal/i386/CNAppDelegate.o IVarAccessFromClassLLVMCrash/CNAppDelegate.mm normal i386 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Users/nevyn/Desktop/IVarAccessFromClassLLVMCrash
    setenv LANG en_US.US-ASCII
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -x objective-c++ -arch i386 -fmessage-length=0 -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -O0 -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -Wno-arc-abi -Wc++0x-extensions -DDEBUG=1 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -fexceptions -fasm-blocks -mmacosx-version-min=10.6 -gdwarf-2 -fvisibility-inlines-hidden -Wno-sign-conversion -fobjc-abi-version=2 -fobjc-legacy-dispatch "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000 -iquote /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-generated-files.hmap -I/Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-own-target-headers.hmap -I/Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-all-target-headers.hmap -iquote /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-project-headers.hmap -I/Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Products/Debug-iphonesimulator/include -I/Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/DerivedSources/i386 -I/Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/DerivedSources -F/Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Products/Debug-iphonesimulator -include /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/PrecompiledHeaders/IVarAccessFromClassLLVMCrash-Prefix-gbunedaqhbshfnediifnyyygyxsj/IVarAccessFromClassLLVMCrash-Prefix.pch -MMD -MT dependencies -MF /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/Objects-normal/i386/CNAppDelegate.d -c /Users/nevyn/Desktop/IVarAccessFromClassLLVMCrash/IVarAccessFromClassLLVMCrash/CNAppDelegate.mm -o /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/Objects-normal/i386/CNAppDelegate.o

0  clang             0x0000000109c42312 _ZL15PrintStackTracePv + 34
1  clang             0x0000000109c427e9 _ZL13SignalHandleri + 633
2  libsystem_c.dylib 0x00007fff993cecfa _sigtramp + 26
3  libsystem_c.dylib 0x0000000000000277 _sigtramp + 18446603337945257367
4  clang             0x0000000108f76094 clang::ASTContext::getDeclAlign(clang::Decl const*, bool) const + 964
5  clang             0x000000010910bf53 clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(clang::DeclRefExpr const*) + 51
6  clang             0x000000010910bb6a clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) + 250
7  clang             0x000000010910f902 clang::CodeGen::CodeGenFunction::EmitCheckedLValue(clang::Expr const*) + 34
8  clang             0x000000010949e321 clang::StmtVisitorBase<clang::make_ptr, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) + 3601
9  clang             0x0000000108f770f8 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 72
10 clang             0x000000010910d129 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) + 57
11 clang             0x000000010910f8c9 clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 41
12 clang             0x0000000108f76722 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 194
13 clang             0x0000000108f76cdb clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 267
14 clang             0x0000000108f76a98 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 152
15 clang             0x0000000108f76680 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 32
16 clang             0x00000001094a54ca clang::CodeGen::CodeGenFunction::GenerateObjCMethod(clang::ObjCMethodDecl const*) + 58
17 clang             0x0000000108ecf331 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 881
18 clang             0x0000000108ecef9f (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) + 95
19 clang             0x0000000108ecef11 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) + 161
20 clang             0x0000000108ea2ff2 clang::ParseAST(clang::Sema&, bool) + 290
21 clang             0x0000000108ea1aaf clang::CodeGenAction::ExecuteAction() + 671
22 clang             0x0000000108e8d89b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 875
23 clang             0x0000000108e8b918 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 2696
24 clang             0x0000000108e80115 cc1_main(char const**, char const**, char const*, void*) + 5333
25 clang             0x0000000108e6327b main + 667
26 clang             0x0000000108e62fd4 start + 52
27 clang             0x0000000000000060 start + 18446744069265281216
Stack dump:
0.	Program arguments: /Developer/usr/bin/clang -cc1 -triple i386-apple-macosx10.6.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name CNAppDelegate.mm -pic-level 1 -mdisable-fp-elim -relaxed-aliasing -masm-verbose -target-cpu yonah -target-linker-version 127.2 -g -coverage-file /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/Objects-normal/i386/CNAppDelegate.o -resource-dir /Developer/usr/bin/../lib/clang/3.0 -dependency-file /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/Objects-normal/i386/CNAppDelegate.d -MT dependencies -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -iquote /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-generated-files.hmap -iquote /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-project-headers.hmap -include-pch /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/PrecompiledHeaders/IVarAccessFromClassLLVMCrash-Prefix-gbunedaqhbshfnediifnyyygyxsj/IVarAccessFromClassLLVMCrash-Prefix.pch.pth -D DEBUG=1 -D IBOutlet=__attribute__((iboutlet)) -D IBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName))) -D IBAction=void)__attribute__((ibaction) -D __IPHONE_OS_VERSION_MIN_REQUIRED=50000 -I /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-own-target-headers.hmap -I /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/IVarAccessFromClassLLVMCrash-all-target-headers.hmap -I /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Products/Debug-iphonesimulator/include -I /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/DerivedSources/i386 -I /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/DerivedSources -F/Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Products/Debug-iphonesimulator -O0 -Wno-trigraphs -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -Wno-arc-abi -Wc++0x-extensions -Wno-sign-conversion -fdeprecated-macro -ferror-limit 19 -fmessage-length 0 -fvisibility-inlines-hidden -fdiagnostics-print-source-range-info -fdiagnostics-parseable-fixits -stack-protector 1 -fblocks -fobjc-runtime-has-arc -fobjc-runtime-has-weak -fobjc-nonfragile-abi -fobjc-exceptions -fcxx-exceptions -fexceptions -fpascal-strings -fdiagnostics-show-option -fdiagnostics-show-category id -o /Users/nevyn/Library/Developer/Xcode/DerivedData/IVarAccessFromClassLLVMCrash-aazfeggntetrdncnoevsqrxoduun/Build/Intermediates/IVarAccessFromClassLLVMCrash.build/Debug-iphonesimulator/IVarAccessFromClassLLVMCrash.build/Objects-normal/i386/CNAppDelegate.o -x objective-c++ /Users/nevyn/Desktop/IVarAccessFromClassLLVMCrash/IVarAccessFromClassLLVMCrash/CNAppDelegate.mm 
1.	/Users/nevyn/Desktop/IVarAccessFromClassLLVMCrash/IVarAccessFromClassLLVMCrash/CNAppDelegate.mm:23:1: current parser token '@'
2.	/Users/nevyn/Desktop/IVarAccessFromClassLLVMCrash/IVarAccessFromClassLLVMCrash/CNAppDelegate.mm:19:1: LLVM IR generation of declaration 'CNAppDelegate::myClassMethod'
3.	/Users/nevyn/Desktop/IVarAccessFromClassLLVMCrash/IVarAccessFromClassLLVMCrash/CNAppDelegate.mm:20:1: LLVM IR generation of compound statement ('{}')
clang: error: unable to execute command: Segmentation fault: 11
clang: error: clang frontend command failed due to signal 2 (use -v to see invocation)


16-Dec-2011 05:46 PM Joachim Bengtsson:
Sorry, forgot to mention: This is only from Objective-C++.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!