SDK Bug & Feature Requests

Please check out the following rules and use the provided template when posting a bug report! Off-topic posts will be deleted.http://bit.ly/vrchat-bug-reports
Race condition in ContactManager often crashes contacts in the editor
If a contact is enabled in the editor play mode while contacts are being processed in their background thread, the addition of that contact crashes with the following stack trace, and fails to process from that point on. This issue is new in VRCSDK 3.7.3 and still exists in 3.7.4. InvalidOperationException: The previously scheduled job ContactManager:UpdateReceivers writes to the Unity.Collections.NativeArray`1[VRC.Dynamics.ContactManager+ReceiverData] UpdateReceivers.receivers. You must call JobHandle.Complete() on the job ContactManager:UpdateReceivers, before you can read from the Unity.Collections.NativeArray`1[VRC.Dynamics.ContactManager+ReceiverData] safely. Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckReadAndThrowNoEarlyOut (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckReadAndThrow (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].CheckElementReadAccess (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].get_Item (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) VRC.Dynamics.ContactManager.FindAvailableId () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactManager.AddContact (VRC.Dynamics.ContactBase contact) (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactBase.Start () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactReceiver.Start () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) And then every frame after that (because the contact was not added to the manager properly): IndexOutOfRangeException: Index 65535 is out of range of '4096' Length. Unity.Collections.NativeArray`1[T].FailOutOfRangeError (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].CheckElementReadAccess (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].get_Item (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) VRC.Dynamics.ContactReceiver.UpdateContact () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactManager.HandleDynamicsFrameComplete () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.VRCAvatarDynamicsScheduler.FinalizeJob (System.Boolean force) (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.VRCAvatarDynamicsScheduler.OnCameraPreCull (UnityEngine.Camera cam) (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) UnityEngine.Camera.FireOnPreCull (UnityEngine.Camera cam) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0)
3
·
available in future release
[SDK 3.8.1+] Excessive SDK console log spam due to undefined log category
In VRCSDK 3.8.1 and later several log invokations ( VRC.Core.Logger.Log() ) in internal SDK assemblies (e.g. VRCSDKBase-Editor.dll and VRCCore-Editor.dll ) as well as VRC.SDKBase.Editor.EnvConfig.cs do not define the log category anymore, resulting in excessive console logging with no real added value to the end user. In 3.7.5 and earlier SDKs with old logger, DebugLevel.All enum was passed as a parameter every time these messages would be logged, resulting in nothing being visible to the end user. From 3.7.6 up to 3.8.0 after SDK logger rewrite, "All" string was passed as a parameter due to the DebugLevel enum getting replaced by a generic category string parameter, still resulting in all messages being hidden. In previous versions of the SDK not a single log entry would appear in the editor's console unless something important was actually happening and the end user should be informed about it. In 3.8.1 many of the category parameters were mysteriously removed, resulting in 14 entries appearing in the console on every assembly reload (see attachments). The increased logging takes up third of the console window's footprint on every assembly reload and makes it very difficult to spot actually important log entries. Below I have listed the different messages originating from DLLs in the SDK with their stack traces. (The rest are primarily from VRC.Editor.EnvConfig:ConfigurePlayerSettings() located in the VRC.SDKBase.Editor assembly) Reloading Assemblies UnityEngine.Debug:Log (object,UnityEngine.Object) VRC.Core.Logger:Log (string,string,UnityEngine.Object) VRC.SDK3.Editor.EditorAssemblies:OnCompileScripts () No local config found at 'C:/Users/[REDACTED]/AppData/LocalLow/[REDACTED]/[REDACTED]\config.json' UnityEngine.Debug:Log (object,UnityEngine.Object) VRC.Core.Logger:Log (string,string,UnityEngine.Object) VRC.Core.LocalConfig:FetchConfig (System.Action,System.Action) VRC.Core.LocalConfig:.ctor (string,bool,bool) VRC.Core.ConfigManager:.cctor () VRC.Editor.EnvConfig:ConfigureSettings () (at ./Packages/com.vrchat.base/Editor/VRCSDK/Dependencies/VRChat/EnvConfig.cs:125) VRC.Editor.EnvConfig:EditorUpdate () (at ./Packages/com.vrchat.base/Editor/VRCSDK/Dependencies/VRChat/EnvConfig.cs:91) UnityEditor.EditorApplication:Internal_CallUpdateFunctions () No local config found at 'C:/Users/[REDACTED]/AppData/LocalLow/[REDACTED]/[REDACTED]\null' UnityEngine.Debug:Log (object,UnityEngine.Object) VRC.Core.Logger:Log (string,string,UnityEngine.Object) VRC.Core.LocalConfig:FetchConfig (System.Action,System.Action) VRC.Core.LocalConfig:.ctor (string,bool,bool) VRC.Core.ConfigManager:.cctor () VRC.Editor.EnvConfig:ConfigureSettings () (at ./Packages/com.vrchat.base/Editor/VRCSDK/Dependencies/VRChat/EnvConfig.cs:125) VRC.Editor.EnvConfig:EditorUpdate () (at ./Packages/com.vrchat.base/Editor/VRCSDK/Dependencies/VRChat/EnvConfig.cs:91) UnityEditor.EditorApplication:Internal_CallUpdateFunctions () FetchConfig UnityEngine.Debug:Log (object,UnityEngine.Object) VRC.Core.Logger:Log (string,string,UnityEngine.Object) VRC.Core.RemoteConfig:FetchConfig (System.Action,System.Action) VRC.Core.BaseConfig:Init (System.Action,System.Action,bool) VRC.Editor.EnvConfig:ConfigureSettings () (at ./Packages/com.vrchat.base/Editor/VRCSDK/Dependencies/VRChat/EnvConfig.cs:128) VRC.Editor.EnvConfig:EditorUpdate () (at ./Packages/com.vrchat.base/Editor/VRCSDK/Dependencies/VRChat/EnvConfig.cs:91) UnityEditor.EditorApplication:Internal_CallUpdateFunctions () finshed fetching and set config UnityEngine.Debug:Log (object,UnityEngine.Object) VRC.Core.Logger:Log (string,string,UnityEngine.Object) VRC.Core.RemoteConfig/<>c__DisplayClass1_0:<FetchConfig>b__0 (VRC.Core.ApiContainer) VRC.Core.APIResponseHandler/<HandleResponse>d__5:MoveNext () Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskVoid`1<VRC.Core.APIResponseHandler/<HandleResponse>d__5>:Run () (at ./Packages/com.vrchat.base/Runtime/VRCSDK/Plugins/UniTask/Runtime/CompilerServices/StateMachineRunner.cs:104) Cysharp.Threading.Tasks.Internal.ContinuationQueue:RunCore () (at ./Packages/com.vrchat.base/Runtime/VRCSDK/Plugins/UniTask/Runtime/Internal/ContinuationQueue.cs:194) Cysharp.Threading.Tasks.Internal.ContinuationQueue:Update () (at ./Packages/com.vrchat.base/Runtime/VRCSDK/Plugins/UniTask/Runtime/Internal/ContinuationQueue.cs:159) Cysharp.Threading.Tasks.Internal.ContinuationQueue:Run () (at ./Packages/com.vrchat.base/Runtime/VRCSDK/Plugins/UniTask/Runtime/Internal/ContinuationQueue.cs:118)
3
·
Bug Report
·
available in future release
Load More