Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[2019.3.3f1] AudioSettings.Reset crash

Discussion in 'Windows' started by Kamyker, Mar 7, 2020.

  1. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    1,085
    Platform: Windows 64x with il2cpp

    Crash happens at reloading main scene (going to menu from the game) around 5-10 times randomly.

    Code (CSharp):
    1. Unloading 4 Unused Serialized files (Serialized files now loaded: 0)
    2. UnloadTime: 2.334800 ms
    3.  
    4. Unloading 978 unused Assets to reduce memory usage. Loaded Objects now: 3922.
    5. Total: 85.487000 ms (FindLiveObjects: 0.431500 ms CreateObjectMapping: 0.151500 ms MarkObjects: 80.010500 ms  DeleteObjects: 4.893100 ms)
    6.  
    7. Crash!!!
    8. <useless stuff>
    9.  
    dmp:
    Code (CSharp):
    1. Unhandled exception at 0x00007FFA7AECFD92 (UnityPlayer.dll) in crash.dmp: 0xC0000005: Access violation writing location 0x00000000000001E8.
    Stack from .dmp:
    Code (CSharp):
    1. >    UnityPlayer.dll!block_remove()    Unknown
    2.      UnityPlayer.dll!tlsf_free()    Unknown
    3.      UnityPlayer.dll!DynamicHeapAllocator::Deallocate(void *)    Unknown
    4.      UnityPlayer.dll!DynamicHeapAllocator::Reallocate(void *,unsigned __int64,int)    Unknown
    5.      UnityPlayer.dll!DualThreadAllocator<class DynamicHeapAllocator>::Reallocate(void *,unsigned __int64,int)    Unknown
    6.      UnityPlayer.dll!MemoryManager::Reallocate(void *,unsigned __int64,unsigned __int64,struct MemLabelId,enum AllocateOptions,char const *,int)    Unknown
    7.      UnityPlayer.dll!realloc_internal(void *,unsigned __int64,unsigned __int64,struct MemLabelId,enum AllocateOptions,char const *,int)    Unknown
    8.      UnityPlayer.dll!dynamic_array_detail::dynamic_array_data::resize_buffer(unsigned __int64,enum ResizePolicy,unsigned __int64,unsigned __int64)    Unknown
    9.      UnityPlayer.dll!dynamic_array<unsigned char,4>::resize_buffer_nocheck(unsigned __int64,enum ResizePolicy)    Unknown
    10.      UnityPlayer.dll!ShaderPropertySheet::AddNewPropertyUninitialized(struct ShaderLab::FastPropertyName,enum ShaderPropertySheetType,unsigned int)    Unknown
    11.      UnityPlayer.dll!ShaderPropertySheet::CreateTextureAuxPropertyUninitialized(struct ShaderLab::FastPropertyName,struct ShaderLab::FastPropertyName,char const *)    Unknown
    12.      UnityPlayer.dll!ShaderPropertySheet::AddTextureFromInfo(struct FastTexturePropertyName const &,struct ShaderLab::SerializedTextureProperty const *)    Unknown
    13.      UnityPlayer.dll!CreateSheetFromSerializedProperties()    Unknown
    14.      UnityPlayer.dll!ShaderLab::IntShader::CreateFromSerializedShader(struct ShaderLab::SerializedShader const &,class std::vector<class PPtr<class Shader>,class std::allocator<class PPtr<class Shader> > > &,bool,class Shader *)    Unknown
    15.      UnityPlayer.dll!ShaderFromSerializedShader(struct ShaderLab::SerializedShader const *,class std::vector<class PPtr<class Shader>,class std::allocator<class PPtr<class Shader> > > &,bool,class Shader *)    Unknown
    16.      UnityPlayer.dll!Shader::CreateFromParsedForm(void)    Unknown
    17.      UnityPlayer.dll!Shader::AwakeFromLoad(enum AwakeFromLoadMode)    Unknown
    18.      UnityPlayer.dll!AwakeFromLoadQueue::PersistentManagerAwakeSingleObject(class Object &,enum AwakeFromLoadMode)    Unknown
    19.      UnityPlayer.dll!PersistentManager::IntegrateObjectAndUnlockIntegrationMutexInternal(int)    Unknown
    20.      UnityPlayer.dll!TimeSliceAwakeFromLoadQueue::IntegrateTimeSliced(int)    Unknown
    21.      UnityPlayer.dll!LoadSceneOperation::IntegrateTimeSliced(int)    Unknown
    22.      UnityPlayer.dll!PreloadManager::UpdatePreloadingSingleStep(enum PreloadManager::UpdatePreloadingFlags,int)    Unknown
    23.      UnityPlayer.dll!PreloadManager::WaitForAllAsyncOperationsToComplete(void)    Unknown
    24.      UnityPlayer.dll!PreloadManager::UpdatePreloading(void)    Unknown
    25.      UnityPlayer.dll!ExecutePlayerLoop(struct NativePlayerLoopSystem *)    Unknown
    26.      UnityPlayer.dll!PlayerLoop(void)    Unknown
    27.      UnityPlayer.dll!PerformMainLoop()    Unknown
    28.      UnityPlayer.dll!MainMessageLoop()    Unknown
    29.      UnityPlayer.dll!UnityMainImpl(struct HINSTANCE__ *,struct HINSTANCE__ *,wchar_t *,int)    Unknown
    30.      UnityPlayer.dll!UnityMain()    Unknown
    31.      BeatAim.exe!00007ff7a84311f2()    Unknown
    32.      kernel32.dll!BaseThreadInitThunk()    Unknown
    33.      ntdll.dll!RtlUserThreadStart()    Unknown
    34.  
    Works fine in editor and development build. I've tried Unity 2019.3.4f1 but couldn't build the project (very weird il2cpp issue).

    Edit
    I've managed to get the bug in dev build:

    Stack:
    Code (CSharp):
    1.      00000212a2f93060()    Unknown
    2.      UnityPlayer.dll!FMOD::ChannelPool::release(void)    Unknown
    3.      UnityPlayer.dll!FMOD::OutputSoftware::release(void)    Unknown
    4.      UnityPlayer.dll!FMOD::SystemI::closeEx(bool)    Unknown
    5.      UnityPlayer.dll!FMOD::System::close(void)    Unknown
    6.      UnityPlayer.dll!AudioManager::CloseFMOD(void)    Unknown
    7.      UnityPlayer.dll!AudioManager::ShutdownReinitializeAndReload(enum FMOD_OUTPUTTYPE,enum FMOD_OUTPUTTYPE *)    Unknown
    8.      UnityPlayer.dll!AudioManager::SetConfiguration(struct AudioConfigurationScripting const &)    Unknown
    9.      UnityPlayer.dll!AudioSettings_CUSTOM_SetConfiguration_Injected(struct AudioConfigurationScripting const &)    Unknown
    10.      [Inline Frame] GameAssembly.dll!AudioSettings_SetConfiguration_Injected_mBC4455683733B749B088E92EB838791892CFD7DA(AudioConfiguration_t8A7131649ECC3D2A89BCEFCB3691937168E3565E *) Line 3127    C++
    11.      [Inline Frame] GameAssembly.dll!AudioSettings_SetConfiguration_m1B464DC06A0907AC0A2D2B5A9E09CADB8CC2E68E(AudioConfiguration_t8A7131649ECC3D2A89BCEFCB3691937168E3565E) Line 3057    C++
    12.      GameAssembly.dll!AudioSettings_Reset_m6E39EA77EC8C47D1356A23785C0C0FCFE50167AE(AudioConfiguration_t8A7131649ECC3D2A89BCEFCB3691937168E3565E ___config0, const MethodInfo * method) Line 3088    C++
    13. >    GameAssembly.dll!MusicPlayer_Awake_m6E0068C73CC2E7CF5C102354DED9ADFAEF7BC94A(MusicPlayer_t13173D4C7382E94861E66C49194D87F110D0BFD7 * __this, const MethodInfo * method) Line 58339    C++
    14.      GameAssembly.dll!RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017(void(*)() methodPointer, const MethodInfo * methodMetadata, void * obj, void * * args) Line 137732    C++
    15.      GameAssembly.dll!il2cpp::vm::Runtime::Invoke(const MethodInfo * method, void * obj, void * * params, Il2CppException * * exc) Line 506    C++
    16.      UnityPlayer.dll!scripting_method_invoke(class ScriptingMethodPtr,class ScriptingObjectPtr,struct ScriptingArguments &,class ScriptingExceptionPtr *,bool)    Unknown
    17.      UnityPlayer.dll!ScriptingInvocation::Invoke(class ScriptingExceptionPtr *,bool)    Unknown
    18.      UnityPlayer.dll!ScriptingInvocation::InvokeChecked(class ScriptingExceptionPtr *)    Unknown
    19.      UnityPlayer.dll!SerializableManagedRef::CallMethod(class Object &,class ScriptingMethodPtr)    Unknown
    20.      UnityPlayer.dll!MonoBehaviour::CallAwake(void)    Unknown
    21.      UnityPlayer.dll!MonoBehaviour::AddToManager(void)    Unknown
    22.      UnityPlayer.dll!MonoBehaviour::AwakeFromLoad(enum AwakeFromLoadMode)    Unknown
    23.      UnityPlayer.dll!AwakeFromLoadQueue::InvokePersistentManagerAwake(struct AwakeFromLoadQueue::Item *,unsigned int,enum AwakeFromLoadMode)    Unknown
    24.      UnityPlayer.dll!AwakeFromLoadQueue::PersistentManagerAwakeFromLoad(void)    Unknown
    25.      UnityPlayer.dll!LoadSceneOperation::CompleteAwakeSequence(void)    Unknown
    26.      UnityPlayer.dll!LoadSceneOperation::IntegrateMainThread(void)    Unknown
    27.      UnityPlayer.dll!PreloadManager::UpdatePreloadingSingleStep(enum PreloadManager::UpdatePreloadingFlags,int)    Unknown
    28.      UnityPlayer.dll!PreloadManager::WaitForAllAsyncOperationsToComplete(void)    Unknown
    29.      UnityPlayer.dll!PreloadManager::UpdatePreloading(void)    Unknown
    30.      UnityPlayer.dll!`InitPlayerLoopCallbacks'::`2'::EarlyUpdateUpdatePreloadingRegistrator::Forward()    Unknown
    31.      UnityPlayer.dll!ExecutePlayerLoop(struct NativePlayerLoopSystem *)    Unknown
    32.      UnityPlayer.dll!PlayerLoop(void)    Unknown
    33.      UnityPlayer.dll!PerformMainLoop()    Unknown
    34.      UnityPlayer.dll!MainMessageLoop()    Unknown
    35.      UnityPlayer.dll!UnityMainImpl(struct HINSTANCE__ *,struct HINSTANCE__ *,wchar_t *,int)    Unknown
    36.      UnityPlayer.dll!UnityMain()    Unknown
    37.      BeatAim.exe!__scrt_common_main_seh()    Unknown
    38.      kernel32.dll!BaseThreadInitThunk()    Unknown
    39.      ntdll.dll!RtlUserThreadStart()    Unknown
    40.  
    So in the end following line crashes:
    Code (CSharp):
    1. AudioSettings.Reset( configuration );
    In my rhythm game players can set DspBufferSize in options. It's also loaded on menu start. I'll be disabling it for now.

    Just check normal build and it finally stopped crashing, not sure about the first stack trace. VS couldn't find few symbols so I've added them from https://symbolserver.unity3d.com.

    Player.log also looked a bit different:
    Code (CSharp):
    1. Unloading 977 unused Assets to reduce memory usage. Loaded Objects now: 3817.
    2. Total: 79.468900 ms (FindLiveObjects: 0.455800 ms CreateObjectMapping: 0.151800 ms MarkObjects: 73.104600 ms  DeleteObjects: 5.755900 ms)
    3.  
    4. Shader 'Custom/AdditiveTintable': fallback shader 'Particles/Additive (Soft)' not found
    5. (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)
    6.  
    7. Crash!!!
    Changed that line to "Legacy Shaders/Particles/Additive (Soft)" just to be safe.
     
    Last edited: Mar 7, 2020
  2. janusl

    janusl

    Unity Technologies

    Joined:
    Aug 8, 2018
    Posts:
    24
    Thanks for your investigation. Definitely looks like a bug, sounds like it is fairly deterministic? Can I convince you to open a bug report for this?

    As a workaround, perhaps you could try stopping all sounds just before issuing the reset call?

    Wait are you saying it works for you now? Or only after you removed the reset line?
     
  3. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    1,085
    Sorry for a little bit chaotic post. Yes I did remove AudioSettings.Reset() but I'm not sure if that was the reason of crash. Possibly it was caused by a bug in my code that was accessing NativeArray out of range.
    From il2cpp but I guess it's similar:
    There is no way (I think?) to enable safety checks for NativeArray in built players. I'll try AudioSettings.Reset() again after resolving other issues to see if it still crashes.

    Edit
    There's a way to enable safety checks https://forum.unity.com/threads/ind...vearray-crashes-the-game.843544/#post-5573635
     
    Last edited: Mar 10, 2020