Crash in File::getSpecialLocation


#1

I received a Crashlytics crash report tell me that our iOS app crashed inside File::getSpecialLocation.  This is the top of the callstack

libobjc.A.dylib_objc_trap() + 18446744073709552000

libobjc.A.dylib objc_autoreleasePoolPush + 140
ZyaStoreTest juce_mac_Files.mm line 181 juce::File::getSpecialLocation(juce::File::SpecialLocationType)
ZyaStoreTest juce_File.cpp line 874 juce::File::createTempFile(juce::StringRef)

And this function that call createTempFile was simply executing 

temp = File::createTempFile("zya");

Besides from juce::File::getSpecialLocation(), the only other place in my callstack that I see an auto release pool is way at the bottom of the callstack at juce::juce_threadEntryPoint()

Does anybody have any idea?  From the callstack, objc_autoreleasePoolPush, does this indicate that there is an issue putting one autoreleasepool inside another?  This should be something legal to do in objective C.  The line report for the crash is the { after the autorelease pool, so I'm guessing it is not code inside this function, but I don't know for sure.

Thanks in advance for any suggestions.

John Lawrie


#2

Wow.. bizarre. Obviously it's fine to have nested autorelease pools, and that function definitely works on iOS.

All I can think is that maybe something else in your code has corrupted the stack before calling this, so that the code which pushes the release pool fails to work.