terminal-recall icon indicating copy to clipboard operation
terminal-recall copied to clipboard

Thread Deadlock on level load

Open cjritola opened this issue 10 months ago • 0 comments

VisualVM report:

Found one Java-level deadlock:
=============================
"Transient Thread":
  waiting to lock monitor 0x00007f26d4011400 (object 0x00000000e0569b58, a org.jtrfp.trcl.pool.IndexPool),
  which is held by "TerrainSystem 685160367"
"TerrainSystem 685160367":
  waiting to lock monitor 0x00007f26d4011900 (object 0x00000000e0530dd8, a org.jtrfp.trcl.pool.IndexPool),
  which is held by "Transient Thread"

Java stack information for the threads listed above:
===================================================
"Transient Thread":
        at org.jtrfp.trcl.pool.IndexPool.compact(IndexPool.java:66)
        - waiting to lock <0x00000000e0569b58> (a org.jtrfp.trcl.pool.IndexPool)
        at org.jtrfp.trcl.mem.MemoryWindow.compact(MemoryWindow.java:622)
        at org.jtrfp.trcl.gpu.GPU.compactRootBuffer(GPU.java:171)
        at org.jtrfp.trcl.mem.PagedByteBuffer.resize(PagedByteBuffer.java:118)
        at org.jtrfp.trcl.mem.MemoryWindow$1.grow(MemoryWindow.java:122)
        at org.jtrfp.trcl.pool.IndexPool.growthPop(IndexPool.java:251)
        at org.jtrfp.trcl.pool.IndexPool.pop(IndexPool.java:222)
        - locked <0x00000000e0530dd8> (a org.jtrfp.trcl.pool.IndexPool)
        at org.jtrfp.trcl.pool.IndexPool.innerPopOrException(IndexPool.java:138)
        at org.jtrfp.trcl.pool.IndexPool.innerPop(IndexPool.java:123)
        at org.jtrfp.trcl.pool.IndexPool.pop(IndexPool.java:114)
        - locked <0x00000000e0530dd8> (a org.jtrfp.trcl.pool.IndexPool)
        at org.jtrfp.trcl.mem.MemoryWindow.create(MemoryWindow.java:176)
        at org.jtrfp.trcl.obj.WorldObject.getMatrixSafe(WorldObject.java:1077)
        - locked <0x00000000ee5fafd0> (a org.jtrfp.trcl.obj.WorldObject)
        at org.jtrfp.trcl.obj.WorldObject.getMatrixID(WorldObject.java:1071)
        at org.jtrfp.trcl.obj.WorldObject.processPrimitiveList(WorldObject.java:405)
        at org.jtrfp.trcl.obj.WorldObject.refreshObjectDefinitions(WorldObject.java:376)
        at org.jtrfp.trcl.obj.WorldObject.setModel(WorldObject.java:311)
        at org.jtrfp.trcl.SkySystem.generateClouds(SkySystem.java:116)
        at org.jtrfp.trcl.SkySystem.<init>(SkySystem.java:87)
        at org.jtrfp.trcl.OverworldSystem.loadLevel(OverworldSystem.java:102)
        at org.jtrfp.trcl.miss.Mission.go(Mission.java:379)
        at org.jtrfp.trcl.game.TVF3Game.doGameplay(TVF3Game.java:449)
        - locked <0x00000000e0b65148> (a org.jtrfp.trcl.game.TVF3Game)
        at org.jtrfp.trcl.gui.LevelSkipWindow$4$1.run(LevelSkipWindow.java:162)
        at org.jtrfp.trcl.core.DefaultKeyedExecutor.executeAllFromThisThread(DefaultKeyedExecutor.java:64)
        at org.jtrfp.trcl.flow.TransientExecutor$TransientThread.run(TransientExecutor.java:43)
"TerrainSystem 685160367":
        at org.jtrfp.trcl.pool.IndexPool.compact(IndexPool.java:66)
        - waiting to lock <0x00000000e0530dd8> (a org.jtrfp.trcl.pool.IndexPool)
        at org.jtrfp.trcl.mem.MemoryWindow.compact(MemoryWindow.java:622)
        at org.jtrfp.trcl.gpu.GPU.compactRootBuffer(GPU.java:171)
        at org.jtrfp.trcl.mem.PagedByteBuffer.resize(PagedByteBuffer.java:118)
        at org.jtrfp.trcl.mem.MemoryWindow$1.grow(MemoryWindow.java:122)
        at org.jtrfp.trcl.pool.IndexPool.growthPop(IndexPool.java:251)
        at org.jtrfp.trcl.pool.IndexPool.pop(IndexPool.java:222)
        - locked <0x00000000e0569b58> (a org.jtrfp.trcl.pool.IndexPool)
        at org.jtrfp.trcl.pool.IndexPool.innerPopOrException(IndexPool.java:138)
        at org.jtrfp.trcl.pool.IndexPool.innerPop(IndexPool.java:123)
        at org.jtrfp.trcl.pool.IndexPool.pop(IndexPool.java:114)
        - locked <0x00000000e0569b58> (a org.jtrfp.trcl.pool.IndexPool)
        at org.jtrfp.trcl.mem.MemoryWindow.create(MemoryWindow.java:176)
        at org.jtrfp.trcl.obj.WorldObject.getObjectDefinitions(WorldObject.java:1050)
        at org.jtrfp.trcl.obj.WorldObject.getTriangleObjectDefinitions(WorldObject.java:1026)
        at org.jtrfp.trcl.obj.WorldObject.refreshObjectDefinitions(WorldObject.java:377)
        at org.jtrfp.trcl.obj.WorldObject.setModel(WorldObject.java:311)
        at org.jtrfp.trcl.TerrainSystem$1.call(TerrainSystem.java:382)
        at org.jtrfp.trcl.TerrainSystem$1.call(TerrainSystem.java:1)
        at java.util.concurrent.FutureTask.run([email protected]/FutureTask.java:264)
        at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
        at org.jtrfp.trcl.TerrainSystem$TSThreadFactory$1.run(TerrainSystem.java:59)

Found 1 deadlock.

cjritola avatar Apr 15 '24 09:04 cjritola