KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've found an unusual crasher with NSCoder when using the Apple LLVM Compiler 3.0 and compiled with -O3. It only crashes on devices. I've tested an iPhone 4 running iOS 5, an iPad 2 running iOS 5 and an iPad 1 running iOS 4. All crash identically. Here's the relevant section of code: -(id)initWithCoder:(NSCoder*)decoder { if (![super init]) { return nil; } NSUInteger length = 0; uint8_t* data = (uint8_t*)[decoder decodeBytesForKey:BBKey returnedLength:&length]; m_value = *(BBPointI32*)data; return self; } And here's what a BBPointI32 is: typedef struct { NSInteger x; NSInteger y; } BBPointI32; The EXC_BAD_ACCESS happens when data is dereferenced. This is not a null pointer issue. If I attach GDB, I can see that length is 8, sizeof(BBPointI) is also 8 and the data is correct. If I look at the disassembly, the crash is happening on: ldrd r2, r3, [r0] Which looks fine. r0 contains 0xb546e, which is the address of data . When I inspect that memory, I can see that it contains the data I expect. For anyone who's interested, r2 contains 72 (not sure what that is) and r3 contains 8 (most probably the value of length ). Can anyone shed some light on this issue?
Tags (comma-separated)
Save Edits
Cancel