Hello guys,
I upgraded my project to the new Unity LTS version and the new entities package and all of the sudden I constantly get a console message that tells me that Unity detects a varying amount of leaks/persistent indiviual allocations.
So I went to Edit->Preferences->Jobs->Leak Detection Level, set it to “Enabled With Stack Trace” and tried to figure out at which point I made a mistake by going through the callstack in the “found x leak(s) from callstack” messages. Unfortunately, I never got to any of my scripts, just a series of Unity scripts calling each other.
Next I tried to remove as many objects and subscenes as possible to narrow down what causes the problem but the leaks wouldnt disapper. Thus, I decided to create a new project instead and add stuff until the leaks show up again, which, unfortunately, happened almost immediately. Here’s what I did:
- Create a new project (using the 3D URP template)
- Import the Entities Graphics package (which auto imports a some other DOTS packages)
- Add a subscene to sample scene.
- Add a 3d Object (Cube) to the subscene
And - upon entering and leaving play mode - the leaks are back! This isnt supposed to happen, right?
A typical “found leak” message looks like this:
Found 2 leak(s) from callstack:
0x0000021ab9f131c3 (Mono JIT Code) Unity.Collections.Memory/Unmanaged/Array:Resize (void*,long,long,Unity.Collections.AllocatorManager/AllocatorHandle,long,int) (at ./Library/PackageCache/com.unity.collections@2.1.4/Unity.Collections/Memory.cs:79)
0x0000021ab9f13063 (Mono JIT Code) Unity.Collections.Memory/Unmanaged:Allocate (long,int,Unity.Collections.AllocatorManager/AllocatorHandle) (at ./Library/PackageCache/com.unity.collections@2.1.4/Unity.Collections/Memory.cs:20)
0x0000021bdd91595b (Mono JIT Code) Unity.Entities.EntityQueryImpl:Allocate () (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/Iterators/EntityQuery.cs:1968)
0x0000021bdd9157fb (Mono JIT Code) Unity.Entities.EntityQuery:Construct (Unity.Entities.EntityQueryData*,Unity.Entities.EntityDataAccess*) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/Iterators/EntityQuery.cs:2148)
0x0000021bdd911823 (Mono JIT Code) Unity.Entities.EntityQueryManager:CreateEntityQuery (Unity.Entities.EntityDataAccess*,Unity.Entities.ArchetypeQuery*,int,Unity.Entities.ComponentType*,int) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/Iterators/EntityQueryManager.cs:720)
0x0000021bdd90ab53 (Mono JIT Code) Unity.Entities.EntityQueryManager:CreateEntityQuery (Unity.Entities.EntityDataAccess*,Unity.Entities.EntityQueryBuilder) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/Iterators/EntityQueryManager.cs:536)
0x0000021bdd93896b (Mono JIT Code) Unity.Entities.EntityManager:CreateEntityQueryUnowned (Unity.Entities.EntityQueryBuilder&) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/EntityManager.cs:4243)
0x0000021bdd95e8b3 (Mono JIT Code) Unity.Entities.EntityManager:CreateEntityQuery (Unity.Entities.EntityQueryBuilder&) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/EntityManager.cs:4237)
0x0000021be16f3c0b (Mono JIT Code) Unity.Entities.EntityManager:CreateEntityQuery (Unity.Entities.EntityQueryDesc[ ]) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/EntityManager.cs:4225)
0x0000021be1755103 (Mono JIT Code) Unity.Entities.BakingCompanionComponentSystem:UpdateCompanionQuery () (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities.Hybrid/Baking/BakingCompanionComponentSystem.cs:248)
0x0000021be1752b83 (Mono JIT Code) Unity.Entities.BakingCompanionComponentSystem:CreateCompanionGameObjects () (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities.Hybrid/Baking/BakingCompanionComponentSystem.cs:81)
0x0000021be17526bb (Mono JIT Code) Unity.Entities.BakingCompanionComponentSystem:OnUpdate () (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities.Hybrid/Baking/BakingCompanionComponentSystem.cs:222)
0x0000021be16d8243 (Mono JIT Code) Unity.Entities.SystemBase:Update () (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities/SystemBase.cs:420)
0x0000021be174f2fc (Mono JIT Code) Unity.Entities.BakingUtility:postprocessBake (Unity.Entities.World,Unity.Entities.BakingSettings,Unity.Entities.BakingSystem) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities.Hybrid/Baking/BakingUtility.cs:170)
0x0000021be17042ab (Mono JIT Code) Unity.Entities.BakingUtility:BakeScene (Unity.Entities.World,UnityEngine.SceneManagement.Scene,Unity.Entities.BakingSettings,bool,Unity.Entities.IncrementalBakingChangeTracker) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Entities.Hybrid/Baking/BakingUtility.cs:87)
0x0000021be1702deb (Mono JIT Code) Unity.Scenes.Editor.LiveConversionDiffGenerator:Bake (Unity.Entities.BakingUtility/BakingFlags) (at ./Library/PackageCache/com.unity.entities@1.0.10/Unity.Scenes.Editor/LiveConversion/LiveConversionDiffGenerator.cs:214)
0x0000021be16f2313 (Mono JIT Code) Unity.Scenes.Editor.LiveConversionDiffGenerator:UpdateLiveConversion (UnityEngine.SceneManagement.Scene,Unity.Entities.Hash128,Unity.Scenes.Editor.LiveConversionDiffGenerator&,Unity.Scenes.LiveConversionMode,ulong,UnityEditor.GUID,Unity.Entities.Build.IEntitiesPlayerSettings,Unity.Scenes.LiveConversionChangeSet&