Unity3d(4.7.1f1) App Crash when calls Resources.UnloadUnusedAssets() On IOS with IL2CPP

I have call Resources.UnloadUnusedAssets() after destory Gameobejcts in the scene. It crashed with EXC_BAD_ACCESS.

the callstack is :

#0	0x0000000102794534 in il2cpp::vm::MetadataCache::GetTypeInfoFromTypeDefinitionIndex(int) at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/MetadataCache.cpp:750
#1	0x00000001027a4864 in il2cpp::vm::Type::GetClass(Il2CppType const*) [inlined] at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Type.cpp:851
#2	0x00000001027a485c in il2cpp::vm::Type::IsEnum(Il2CppType const*) at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Type.cpp:820
#3	0x000000010278d214 in il2cpp::vm::Class::GetArrayElementSize(TypeInfo const*) at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Class.cpp:1527
#4	0x00000001027925bc in il2cpp::vm::LivenessState::TraverseArray(Il2CppArray*, il2cpp::vm::LivenessState*) at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Liveness.cpp:283
#5	0x000000010279260c in il2cpp::vm::LivenessState::TraverseObjects() [inlined] at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Liveness.cpp:133
#6	0x00000001027925fc in il2cpp::vm::LivenessState::TraverseArray(Il2CppArray*, il2cpp::vm::LivenessState*) at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Liveness.cpp:291

..........

..........

..........
#25623	0x0000000102792ea0 in il2cpp::vm::LivenessState::TraverseGenericObject(Il2CppObject*, il2cpp::vm::LivenessState*) [inlined] at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Liveness.cpp:171
#25624	0x0000000102792e4c in il2cpp::vm::LivenessState::TraverseObjects() [inlined] at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Liveness.cpp:133
#25625	0x0000000102792e2c in il2cpp::vm::Liveness::FromStatics(void*) at /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/vm/Liveness.cpp:460
#25626	0x0000000102255424 in MarkManagedStaticVariableRoots(GarbageCollectorState&) [inlined] at /Users/builduser/buildslave/unity/build/Runtime/Misc/GarbageCollectSharedAssets.cpp:510
#25627	0x0000000102255414 in GarbageCollectSharedAssets(bool) at /Users/builduser/buildslave/unity/build/Runtime/Misc/GarbageCollectSharedAssets.cpp:242
#25628	0x000000010225f64c in UnloadUnusedAssetsOperation::IntegrateMainThread() at /Users/builduser/buildslave/unity/build/Runtime/Misc/PreloadManager.cpp:867
#25629	0x000000010225e17c in PreloadManager::UpdatePreloadingSingleStep(bool) at /Users/builduser/buildslave/unity/build/Runtime/Misc/PreloadManager.cpp:488
#25630	0x000000010225ec08 in PreloadManager::UpdatePreloading() at /Users/builduser/buildslave/unity/build/Runtime/Misc/PreloadManager.cpp:586
#25631	0x000000010225b864 in PlayerLoop(bool, bool, IHookEvent*) at /Users/builduser/buildslave/unity/build/Runtime/Misc/Player.cpp:1800

Anyone has encountered this one before?

Thanks,

@povilas, @JoshPeterson

From my time with IOS i have found that you shouldnt destroy gameobjects. Instead just deactivate them with:

gameobject.setactive(false);

I believe that this bug has already been corrected. However, we have not shipped updates for the 4.7 release series in a while, so you may need to move to the latest patch releases in 5.3 to try it.