【Addressable】关于开启ProfilerEvents后导致自动清理缓存报错问题

关于开启事件收集导致清理缓存报错异常问题

版本1.19.19
报错信息:

Exception: Attempting to use an invalid operation handle
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.get_InternalOp () (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/AsyncOperations/AsyncOperationHandle.cs:453)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.GetDependencies (System.Collections.Generic.List`1[T] deps) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/AsyncOperations/AsyncOperationHandle.cs:436)
UnityEngine.AddressableAssets.Utility.ResourceManagerDiagnostics.SumDependencyNameHashCodes (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle handle) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/Utility/ResourceManagerEventCollector.cs:43)
UnityEngine.AddressableAssets.Utility.ResourceManagerDiagnostics.SumDependencyNameHashCodes (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle handle) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/Utility/ResourceManagerEventCollector.cs:49)
UnityEngine.AddressableAssets.Utility.ResourceManagerDiagnostics.CalculateHashCode (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle handle) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/Utility/ResourceManagerEventCollector.cs:59)
UnityEngine.AddressableAssets.Utility.ResourceManagerDiagnostics.OnResourceManagerDiagnosticEvent (UnityEngine.ResourceManagement.ResourceManager+DiagnosticEventContext eventContext) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/Utility/ResourceManagerEventCollector.cs:120)
UnityEngine.ResourceManagement.ResourceManager.PostDiagnosticEvent (UnityEngine.ResourceManagement.ResourceManager+DiagnosticEventContext context) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/ResourceManager.cs:315)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].Complete (TObject result, System.Boolean success, System.Exception exception, System.Boolean releaseDependenciesOnFailure) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:414)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].Complete (TObject result, System.Boolean success, System.String errorMsg, System.Boolean releaseDependenciesOnFailure) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:386)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].Complete (TObject result, System.Boolean success, System.String errorMsg) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:370)
UnityEngine.AddressableAssets.CleanBundleCacheOperation.CompleteInternal (System.Boolean result, System.Boolean success, System.String errorMsg) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/Initialization/CleanBundleCacheOperation.cs:42)
UnityEngine.AddressableAssets.CleanBundleCacheOperation.RemoveCacheEntries () (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/Initialization/CleanBundleCacheOperation.cs:117)
UnityEngine.AddressableAssets.CleanBundleCacheOperation.UnityEngine.ResourceManagement.IUpdateReceiver.Update (System.Single unscaledDeltaTime) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/Initialization/CleanBundleCacheOperation.cs:106)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].UpdateCallback (System.Single unscaledDeltaTime) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:354)
DelegateList`1[T].Invoke (T res) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/Util/DelegateList.cs:69)
UnityEngine.Debug:LogException(Exception)
DelegateList`1:Invoke(Single) (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/Util/DelegateList.cs:73)
UnityEngine.ResourceManagement.ResourceManager:Update(Single)
MonoBehaviourCallbackHooks:Update() (at Library/PackageCache/com.unity.addressables@1.19.19/Runtime/ResourceManager/Util/MonoBehaviourCallbackHooks.cs:26)

今天本来想看下加载的信息,开启了这个信息收集的功能,之后更新时报错,看了log并且打断点跟了下,发现是AA在执行清理缓存的Operation时,在任务完成时,先清理了持有的依赖的AsyncOperationHandle,然后又在基类的Complete方法中收集信息时,访问了其依赖的AsyncOperationHandle并递归访问其依赖的依赖,但由于其依赖已经被释放,无法访问到依赖的依赖,则抛出异常。

若开启ProfilerEvents

信息收集时递归遍历依赖

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值