美文网首页
[FA] Unity Crash记录 - 04 [Positio

[FA] Unity Crash记录 - 04 [Positio

作者: _Walker__ | 来源:发表于2023-08-03 16:42 被阅读0次

AB包模式下,清缓存崩溃(全平台问题)

1、环境
  • Unity 2021.3.21f1
2、报错堆栈
  • Unity 2021.3.21f1
The file 'archive:/CAB-1b26a77402291f349e8d079535a5160f/CAB-1b26a77402291f349e8d079535a5160f' is corrupted! Remove it and launch unity again!
[Position out of bounds!]
UnityEngine.StackTraceUtility:ExtractStackTrace ()
UnityEngine.AssetBundle:LoadAsset (string,System.Type)
UnityEngine.AssetBundle:LoadAsset<UnityEngine.GameObject> (string)

Crash!!!

========== OUTPUTTING STACK TRACE ==================

0x00007FFFE7E4CF19 (KERNELBASE) RaiseException
0x00007FF76C45595F (Unity) LaunchBugReporter
0x00007FF76BEA7D99 (Unity) EditorMonoConsole::LogToConsoleImplementation
0x00007FF76BEA86CD (Unity) EditorMonoConsole::LogToConsoleImplementation
0x00007FF76CACADC7 (Unity) DebugStringToFilePostprocessedStacktrace
0x00007FF76CACA51D (Unity) DebugStringToFile
0x00007FF76B0C61EA (Unity) CachedReader::OutOfBoundsError
0x00007FF76B0C6B94 (Unity) CachedReader::UpdateReadCache
0x00007FF76AD21DF4 (Unity) StreamedBinaryRead::Transfer<ImmediatePtr<Unity::Component> >
0x00007FF76AD21646 (Unity) StreamedBinaryRead::Transfer<dynamic_array<GameObject::ComponentPair,0> >
0x00007FF76AD25176 (Unity) GameObject::Transfer<StreamedBinaryRead>
0x00007FF76AD325A5 (Unity) GameObject::VirtualRedirectTransfer
0x00007FF76B44A0B1 (Unity) SerializedFile::ReadObject
0x00007FF76B42ED02 (Unity) PersistentManager::ReadAndActivateObjectThreaded
0x00007FF76B42C6E5 (Unity) PersistentManager::LoadObjectsThreaded
0x00007FF76B42C43B (Unity) PersistentManager::LoadObjects
0x00007FF76B868271 (Unity) ProcessAssetBundleEntries
0x00007FF76B866E93 (Unity) LoadNamedObjectFromAssetBundle
0x00007FF76B859343 (Unity) AssetBundle::LoadAsset_Internal
0x00007FF76A7A97A5 (Unity) AssetBundle_CUSTOM_LoadAsset_Internal
0x00000283A89D2347 (Mono JIT Code) (wrapper managed-to-native) UnityEngine.AssetBundle:LoadAsset_Internal (UnityEngine.AssetBundle,string,System.Type)
0x00000283A89D2103 (Mono JIT Code) UnityEngine.AssetBundle:LoadAsset (string,System.Type)
0x00000283AB5AC4AB (Mono JIT Code) UnityEngine.AssetBundle:LoadAsset<T_REF> (string)
0x00000283AA864A6B (Mono JIT Code) [G:\FA2\client\Assets\ArtNoBuild\Demo.cs:24] Demo:OnGUI () 
0x00000283440CF818 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
0x00007FFF83BAFEB4 (mono-2.0-bdwgc) [C:\build\output\Unity-Technologies\mono\mono\mini\mini-runtime.c:3445] mono_jit_runtime_invoke 
0x00007FFF83AEE764 (mono-2.0-bdwgc) [C:\build\output\Unity-Technologies\mono\mono\metadata\object.c:3066] do_runtime_invoke 
0x00007FFF83AEE8FC (mono-2.0-bdwgc) [C:\build\output\Unity-Technologies\mono\mono\metadata\object.c:3113] mono_runtime_invoke 
0x00007FF76B3A1B74 (Unity) scripting_method_invoke
0x00007FF76B381374 (Unity) ScriptingInvocation::Invoke
0x00007FF76B9A85BA (Unity) MonoBehaviourDoGUI
0x00007FF76B9AA380 (Unity) IMGUIModule::MonoBehaviourDoGUI
0x00007FF76B36B627 (Unity) MonoBehaviour::DoGUI
0x00007FF76B9A264A (Unity) GUIManager::DoGUIEvent
0x00007FF76B9A9227 (Unity) GUIManager::SendQueuedEvents
0x00007FF76B9A5294 (Unity) `GUIManager::InitGUIManager'::`2'::PreUpdateIMGUISendQueuedEventsRegistrator::Forward
0x00007FF76B055BDA (Unity) ExecutePlayerLoop
0x00007FF76B055D66 (Unity) ExecutePlayerLoop
0x00007FF76B05BE29 (Unity) PlayerLoop
0x00007FF76BFCE3E9 (Unity) PlayerLoopController::UpdateScene
0x00007FF76BFCC58B (Unity) Application::TickTimer
0x00007FF76C421AAA (Unity) MainMessageLoop
0x00007FF76C42637B (Unity) WinMain
0x00007FF76D802E1E (Unity) __scrt_common_main_seh
0x00007FFFEA2F7614 (KERNEL32) BaseThreadInitThunk
0x00007FFFEA5626B1 (ntdll) RtlUserThreadStart

========== END OF STACKTRACE ===========

3、原因&解决方案

  Crash的原因是AB包加载后(AssetBundle对象),AB包的文件被删了。后面再从Bundle里加载资源,就会Crash!!!

特别说明一点:
  正常访问一个文件的过程中,其它地方是不能对其进行修改(增、删、改)操作的。如果做了,也会抛出文件被占用的异常。
  但是,AB包加载后并没有这个限制,似乎是AssetBundle.LoadFromFile完成之后,Unity没有持有文件指针?

解决方案比较粗暴、直接:清理文件之前,停止所有的加载、下载操作。

相关文章

网友评论

      本文标题:[FA] Unity Crash记录 - 04 [Positio

      本文链接:https://www.haomeiwen.com/subject/brvmpdtx.html