Infinite hang when reloading a scene contains a manually spawned NetworkObject with a SpriteLibrary and a SpriteResolver
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 55/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- csharp, unity
- Bereich
- game-dev, networking
Rechercherichtung
Beginne damit, das Setup mit aktiviertem NetworkManager, UnityTransport, InstantiateAndSpawn, SpriteLibrary, SpriteResolver und destroyWithScene nachzustellen, und verfolge dann NetworkManager.SceneManager.LoadScene während wiederholter Neuladungen. Vergleiche das Verhalten über die gemeldeten Unity- und Netcode-Versionen hinweg; abgeschlossen ist die Aufgabe, wenn die Szene alle 3 Sekunden neu geladen wird, ohne dass sich der Unity-Editor aufhängt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
Infinite hang when reloading a scene contains a manually spawned NetworkObject with a SpriteLibrary and a SpriteResolver
Reproduce Steps
- Create an empty scene
- Add a NetworkManager, with UnityTransport
- Create a new prefab with NetworkObject, SpriteRenderer, Animator, SpriteLibrary, SpriteResolver (following basically this tutorial: https://www.youtube.com/watch?v=4xPHqEEa-V0)
- Create an empty object
TestCrashwith the following code, and link the prefab from (3) in the inspector
public class TestCrash : NetworkBehaviour
{
[SerializeField] public GameObject prefab = null!;
private bool _alreadyCalled;
private void Start()
{
var networkManager = NetworkManager.Singleton;
var unityTransport = networkManager.GetComponent<UnityTransport>();
// Start local server
unityTransport.UseWebSockets = false; // if applicable
unityTransport.SetConnectionData("0.0.0.0", 7777);
networkManager!.NetworkConfig.NetworkTransport = unityTransport;
networkManager.StartHost();
NetworkManager.Singleton.SpawnManager.InstantiateAndSpawn(
prefab!.GetComponent<NetworkObject>(),
OwnerClientId,
destroyWithScene: true,
position: Vector3.zero
);
}
private void Update()
{
if (_alreadyCalled) return;
if (Time.timeSinceLevelLoad < 3f) return;
_alreadyCalled = true;
NetworkManager.Singleton.SceneManager.LoadScene(SceneManager.GetActiveScene().name, LoadSceneMode.Single);
}
}
TestCrash is some code that
- starts a local server
- spawns the prefab
- waits 3 seconds
- reloads the scene
Actual Outcome
After a few attempts, the scene never reloads and the Unity editor hangs forever (has to be force quitted)
Expected Outcome
The scene reloads every 3s
Environment
- OS: Windows 11
- Unity Version: 6000.4.7f1
- Netcode Version: 2.12.0
Additional Context
- This bug did not happen with 2.12.0 and Unity 6000.3.11f1 (started happening after upgrading to 6000.4.7f1)
- The bug doesn't happen without
destroyWithScene: true, - Removing the SpriteResolver/SpriteLibrary stops the bug from happening
- The NetworkObject must be spawned with
InstantiateAndSpawn, if the prefab is added to the scene, the bug doesn't happen
Here is a dump of the Main Thread stack when the editor is hanging. The CPU is at 0% at that point. Maybe a lock contention?
<unknown> 0x00007ff973d63cb4
<unknown> 0x00007ff973c30543
<unknown> 0x00007ff97107e558
UnityClassic::Baselib_SystemFutex_Wait(int * __ptr64,int,unsigned int) 0x00007ff8886af7f6
ProfilerMutexLock(Mutex & __ptr64,char const * __ptr64,profiling::Marker & __ptr64,char const * __ptr64,int) 0x00007ff88b1a4450
PersistentManager::Lock(PersistentManager::LockFlags,profiling::Marker * __ptr64) __ptr64 0x00007ff88b1a1b83
PersistentManager::GetPathName(EntityId) __ptr64 0x00007ff88b1968bb
GetGUIDFromEntityId(EntityId) 0x00007ff888e786fe
AssetChangedNotifier::UnsubscribeFromAll(EntityId) __ptr64 0x00007ff88a209aee
SpriteRenderer::MainThreadCleanup(void) __ptr64 0x00007ff88b631e42
delete_object_internal_step1(Object * __ptr64) 0x00007ff88b8cd380
CommitBatchDelete(BatchDelete & __ptr64) 0x00007ff88b5286d2
DestroyObjectHighLevel_Internal(Object * __ptr64,bool) 0x00007ff88b532e31
DestroyObjectHighLevel(Object * __ptr64,bool) 0x00007ff88b532ba8
DelayedDestroyCallback(Object * __ptr64,void * __ptr64) 0x00007ff88b7963cb
DelayedCallManager::Update(int) __ptr64 0x00007ff88b797ac8
<unknown> 0x00007ff88b4f9d6b
ExecutePlayerLoop(NativePlayerLoopSystem * __ptr64) 0x00007ff88b517f5b
ExecutePlayerLoop(NativePlayerLoopSystem * __ptr64) 0x00007ff88b51811a
PlayerLoop(void) 0x00007ff88b51d105
EditorPlayerLoop::Execute(void) __ptr64 0x00007ff889ab957a
PlayerLoopController::InternalUpdateScene(bool,bool) __ptr64 0x00007ff889ab2a9c
PlayerLoopController::UpdateSceneIfNeededFromMainLoop(void) __ptr64 0x00007ff889ab4dad
Application::TickTimer(void) __ptr64 0x00007ff889acc4c3
<unknown> 0x00007ff8894bfb2c
UnityMain 0x00007ff8894c8693
<unknown> 0x00007ff6ae972f2a
<unknown> 0x00007ff97360e957
<unknown> 0x00007ff973caad6c
- Vorherrschende Sprache
- C#
- Sterne
- 2.3k
- Forks
- 461
- Ø Merge
- 3 T. 16 Std.
- Gemergte PRs (30 T.)
- 20
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Unity-Technologies/com.unity.netcode.gameobjects
-
stat:import type:bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 68/100
-
stat:awaiting-triage stat:Investigating type:bug
Unity-Technologies/com.unity.netcode.gameobjects#3912 · 5 Kommentare · 1 zugewiesene Person ·
-
Tracking type:feature-2.x
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
Unity-Technologies/com.unity.netcode.gameobjects#3870 · 5 Kommentare ·
-
Tracking type:feature
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
Unity-Technologies/com.unity.netcode.gameobjects#3830 · 7 Kommentare ·
-
stat:awaiting-response stat:imported type:bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
Unity-Technologies/com.unity.netcode.gameobjects#3802 · 2 Kommentare ·
Alle Issues in Unity-Technologies/com.unity.netcode.gameobjects
Ähnliche Issues
-
bug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
sillsdev/languageforge-lexbox#2665 ·
-
bug documentation frontend
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
azurenoops/spin_agent#975 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
SubtitleEdit/subtitleedit#15108 · 1 Kommentar ·