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
[3.7.5+] Parallel Import encounters null exception following migration from VRCSettings to VRCPackageSettings
With SDK version 3.7.5 several settings were migrated from the static class VRCSettings , existing within the VRCSDKBase-Editor.dll library provided alongside the SDK to VRCPackageSettings , the change also included a refactor of the class, introducing a static property Instance , used to get or create an instance of the class, an instance is attempted to be created by the PerceptualPostProcessor as DPID settings were part of the migration, however this fails because of a null exception: VRCPackageSettings.Instance.dpidMipmaps within PerceptualPostProcessor executes VRCPackageSettings.Instance_get VRCPackageSettings._instance is null so Create() is called, which calls Load() Load() and calls within it, including EnsurePathExists() expect GetPath() to not be null, causing a null exception when it is because GetPath() calls GetPathFromType(GetType()) which calls UnityEditor.PackageManager.PackageInfo.FindForAssembly(t.Assembly) and returns null when executed by a worker process, GetPathFromType then returns null (a comment assumes this would only occur when the SDK is not located within the Packages folder) but this execution path was seemingly never tested and so methods that expect valid strings such as Directory.CreateDirectory within EnsurePathExists() throw null exceptions. Simply resolving the null exceptions is not enough as the current implementation would cause Load() to not load any data when it's meant to, leading to VRCPackageSettings.Instance to contain default values when executed by worker processes ( AssetDatabase.IsAssetImportWorkerProcess() ), you cannot simply abort execution because that invalidates the use of Parallel Import and would cause textures marked as "dirty" to not actually be updated to have mipmaps re-generated, a proper solution leading to the same settings file must be implemented, the whole dependency on the assembly's package info seems extreme. This can be easily reproduced on any 3.7.5+ project with Parallel Import enabled (Project Settings -> Editor, mine is configured with 8 desired workers and 2 on standby) by enabling/disabling "Override Kaiser mipmapping" in the SDK settings.
1
·
Bug Report
·
tracked
Uploading Avatar may freeze when antivirus software holds handle for lastly uploaded .vrca files
When we uploaded multiple avatars in a row relatively quickly, we encountered an issue where the upload process would freeze without any error message shown on the console or in the log files. This issue comes from two main causes: Firstly, the VRChat SDK silently ignores exceptions that occur in VRC_SdkBuilder.RunExportAvatarBlueprint . The catch clauses has comment // Errors are handled by the error callback , but most of the exceptions do not initiate error callback, including this one. Secondly, the VRChat SDK does not handle the exception occurred when trying to delete the last uploaded .vrca file. Removing the last uploaded .vrca file is not a critical step in the upload process, so it should not cause upload to freeze. However, currently, if the deletion fails, the upload process will not continue, leading to a freeze. When we replaced catch clauses to catch (Exception e) { Debug.LogError(e); } , we were able to see the following error message in the console: System.IO.IOException: The process cannot access the file 'C:\Users\****\AppData\Local\Temp\****\****\637e8e6c-8eb6-4cd2-a651-241fb7aa6ed3.vrca' because it is being used by another process. at System.IO.FileSystem.DeleteFile (System.String fullPath) [0x0001a] in <27124aa0e30a41659b903b822b959bc7>:0 at System.IO.File.Delete (System.String path) [0x00014] in <27124aa0e30a41659b903b822b959bc7>:0 at VRC.SDK3.Builder.VRCAvatarBuilder.ExportCurrentAvatarResource (UnityEngine.Object avatarResource, System.Boolean testAsset, System.Boolean buildAssetBundle, System.String& avatarPrefabPath, System.Action`1[T] onProgress, System.Action`1[T] onContentProcessed) [0x003bc] in <81261fc1c1e94d15bda5671000ac0e16>:0 at VRC.SDK3.Builder.VRCAvatarBuilder.ExportAvatarBlueprint (UnityEngine.GameObject externalReference) [0x00021] in <81261fc1c1e94d15bda5671000ac0e16>:0 at VRC.SDK3A.Editor.VRCSdkControlPanelAvatarBuilder.Build (UnityEngine.GameObject target, System.Boolean testAvatar) [0x0040b] in .\Packages\com.vrchat.avatars\Editor\VRCSDK\SDK3A\VRCSdkControlPanelAvatarBuilder.cs:2600 UnityEngine.StackTraceUtility:ExtractStackTrace () UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[]) UnityEngine.Logger:Log (UnityEngine.LogType,object) UnityEngine.Debug:LogError (object) VRC.SDK3A.Editor.VRCSdkControlPanelAvatarBuilder/<Build>d__132:MoveNext () (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/VRCSdkControlPanelAvatarBuilder.cs:2605) System.Runtime.CompilerServices.AsyncMethodBuilderCore/MoveNextRunner:InvokeMoveNext (object) System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) System.Runtime.CompilerServices.AsyncMethodBuilderCore/MoveNextRunner:Run () System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation/<>c:<.cctor>b__7_0 (object) UnityEngine.UnitySynchronizationContext/WorkRequest:Invoke () UnityEngine.UnitySynchronizationContext:Exec () UnityEngine.UnitySynchronizationContext:ExecuteTasks () When we disabled the real-time protection of the antivirus software for the temporary folder, the upload process worked as expected without freezing. Therefore, we conclude that the issue is related to antivirus software holding a handle on the last uploaded .vrca file, which prevents it from being deleted.
1
·
Bug Report
·
tracked
Adding another network-related component causes an assign network IDs error
After a successful build, adding a network-related component to a GameObject with another network-related component causes an error relating to network IDs when the next build. Repro steps Create a new scene and put the VRCSceneDescriptor Add a network-related component to a GameObject Build the world Add another network-related component to the GameObject in step 2 Build the world You'll see the dialog (see the 1st attached image) Preprocess Callback Failed The VRCSDK build was aborted because the IVRCSDKPreprocessSceneCallback 'AssignSceneNetworkIDs' reported a failure. The network-related components here are VRCObjectSync , VRCPickup , UdonBehavior etc. That needs a network ID. VRCPlayerObject of the ongoing Persistence open beta also causes this issue. Note 1 The console shows the errors after closing the dialog (2nd attached image) Failed to assign network IDs, 1 errors encountered! Try using the Network ID Utility to resolve them. Note 2 If you press the "Build & Reload" button on step 5, you'll see the "Build Succeeded!" message in the SDK tab. But the build has not succeeded. NetworkIDs in VRCSceneDescriptor has not been appropriately updated (in particular, the Serialized Type Names of the GameObject). This (showing false "succeeded") seems to be another defect. Note 3 If you press "Build and Upload", you'll see the "This file was already uploaded" error popup. And the SDK also shows "This file was already uploaded" as details. This message is incorrect since the building file is incomplete. This also seems to be another defect. Version Worlds 3.7.2
1
·
Bug Report
·
tracked
Load More