gmitch215 / SocketMC

🖥️ Communicate directly with Minecraft Clients from the Server
http://socketmc.gmitch215.xyz/
GNU General Public License v3.0
11 stars 0 forks source link

Crashing when drawing multiple texts #46

Open ShaneBeee opened 5 days ago

ShaneBeee commented 5 days ago

Bug Type

Client Disconnect

Minecraft Version

1.21.1

SocketMC Version

v1.21-0.3.0

Description

When sending a few text lines in a loop, when the text removes after its time, the client crashes.

Steps to Reproduce

Code to test with:

SocketPlayer socketPlayer = new SocketPlayer(player);
int x = 100;
int z = 100;
for (int i = 0; i < 5; i++) {
    z += 10;
    Instruction instruction = Instruction.drawText(x, z, "hi hi 1", 1000);
    socketPlayer.sendInstruction(instruction, this.plugin);
}

Run the code, the client will get the message, shortly after it will crash.

Expected Behavior

No crashing!

Actual Behavior

The crash! Error I pulled from the log, I hope this isn't too much, just wanted to provide what I can.

[22:13:57] [Render thread/INFO]: Received message: Instruction("ping") {[]}, size 183 bytes
[22:13:57] [Render thread/INFO]: Received message: Instruction("draw_text") {[100, 110, {"text": "hi hi 1"}, -1, true, 1000]}, size 401 bytes
[22:13:57] [Render thread/INFO]: Received message: Instruction("draw_text") {[100, 120, {"text": "hi hi 1"}, -1, true, 1000]}, size 401 bytes
[22:13:57] [Render thread/INFO]: Received message: Instruction("draw_text") {[100, 130, {"text": "hi hi 1"}, -1, true, 1000]}, size 401 bytes
[22:13:57] [Render thread/INFO]: Received message: Instruction("draw_text") {[100, 140, {"text": "hi hi 1"}, -1, true, 1000]}, size 401 bytes
[22:13:57] [Render thread/INFO]: Received message: Instruction("draw_text") {[100, 150, {"text": "hi hi 1"}, -1, true, 1000]}, size 401 bytes
[22:13:58] [Render thread/ERROR]: Unreported exception thrown!
java.util.ConcurrentModificationException: null
    at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1605) ~[?:?]
    at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1628) ~[?:?]
    at xyz.gmitch215.socketmc.util.LifecycleMap.run(LifecycleMap.java:41) ~[socketmc-fabric-1.21-0.3.0.jar:?]
    at xyz.gmitch215.socketmc.fabric.machines.DrawTextMachine.frameTick(DrawTextMachine.java:26) ~[socketmc-fabric-1.21-0.3.0.jar:?]
    at xyz.gmitch215.socketmc.fabric.FabricSocketMC.lambda$onInitializeClient$2(FabricSocketMC.java:44) ~[socketmc-fabric-1.21-0.3.0.jar:?]
    at net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback.lambda$static$0(HudRenderCallback.java:28) ~[fabric-rendering-v1-5.0.5+df16efd019-ba1207ef9d792ad1.jar:?]
    at net.minecraft.class_329.handler$zkl000$fabric-rendering-v1$render(class_329.java:1538) ~[client-intermediary.jar:?]
    at net.minecraft.class_329.method_1753(class_329.java:220) ~[client-intermediary.jar:?]
    at net.minecraft.class_757.method_3192(class_757.java:896) ~[client-intermediary.jar:?]
    at net.minecraft.class_310.method_1523(class_310.java:1285) ~[client-intermediary.jar:?]
    at net.minecraft.class_310.method_1514(class_310.java:882) [client-intermediary.jar:?]
    at net.minecraft.client.main.Main.main(Main.java:256) [client-intermediary.jar:?]
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) [fabric-loader-0.16.4.jar:?]
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.16.4.jar:?]
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.16.4.jar:?]
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
    at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:243) [NewLaunch.jar:?]
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:278) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
[22:13:59] [Render thread/INFO]: Stopping worker threads
---- Minecraft Crash Report ----
// Oh - I know what I did wrong!

Time: 2024-09-16 22:13:59
Description: Unexpected error

java.util.ConcurrentModificationException
    at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1605)
    at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1628)
    at xyz.gmitch215.socketmc.util.LifecycleMap.run(LifecycleMap.java:41)
    at xyz.gmitch215.socketmc.fabric.machines.DrawTextMachine.frameTick(DrawTextMachine.java:26)
    at xyz.gmitch215.socketmc.fabric.FabricSocketMC.lambda$onInitializeClient$2(FabricSocketMC.java:44)
    at net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback.lambda$static$0(HudRenderCallback.java:28)
    at net.minecraft.class_329.handler$zkl000$fabric-rendering-v1$render(class_329.java:1538)
    at net.minecraft.class_329.method_1753(class_329.java:220)
    at net.minecraft.class_757.method_3192(class_757.java:896)
    at net.minecraft.class_310.method_1523(class_310.java:1285)
    at net.minecraft.class_310.method_1514(class_310.java:882)
    at net.minecraft.client.main.Main.main(Main.java:256)
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:243)
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:278)
    at org.multimc.EntryPoint.listen(EntryPoint.java:143)
    at org.multimc.EntryPoint.main(EntryPoint.java:34)

A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
    at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1605)
    at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1628)
    at xyz.gmitch215.socketmc.util.LifecycleMap.run(LifecycleMap.java:41)
    at xyz.gmitch215.socketmc.fabric.machines.DrawTextMachine.frameTick(DrawTextMachine.java:26)
    at xyz.gmitch215.socketmc.fabric.FabricSocketMC.lambda$onInitializeClient$2(FabricSocketMC.java:44)
    at net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback.lambda$static$0(HudRenderCallback.java:28)
    at net.minecraft.class_329.handler$zkl000$fabric-rendering-v1$render(class_329.java:1538)
    at net.minecraft.class_329.method_1753(class_329.java:220)

-- Uptime --
Details:
    JVM uptime: 29.850s
    Wall uptime: 22.978s
    High-res time: 22.190s
    Client ticks: 397 ticks / 19.850s
Stacktrace:
    at net.minecraft.class_310.method_1587(class_310.java:2501)
    at net.minecraft.class_310.method_54580(class_310.java:949)
    at net.minecraft.class_310.method_1514(class_310.java:905)
    at net.minecraft.client.main.Main.main(Main.java:256)
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:243)
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:278)
    at org.multimc.EntryPoint.listen(EntryPoint.java:143)
    at org.multimc.EntryPoint.main(EntryPoint.java:34)

-- Affected level --
Details:
    All players: 1 total; [class_746['ShaneBee'/1, l='ClientLevel', x=8878677.05, y=71.00, z=-11044617.06]]
    Chunk stats: 289, 145
    Level dimension: minecraft:overworld
    Level spawn location: World: (6739,68,-43742), Section: (at 3,4,2 in 421,4,-2734; chunk contains blocks 6736,-64,-43744 to 6751,319,-43729), Region: (13,-86; contains chunks 416,-2752 to 447,-2721, blocks 6656,-64,-44032 to 7167,319,-43521)
    Level time: 20903020 game time, 2382000 day time
    Server brand: Paper
    Server type: Non-integrated multiplayer server
    Tracked entity count: 23

-- Last reload --
Details:
    Reload number: 1
    Reload reason: initial
    Finished: Yes
    Packs: vanilla, fabric, ctrl-q, devtools, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-loot-api-v3, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, fabricloader, iris, modmenu, socketmc, sodium, sodium-extra, file/Faithful 32x - 1.21.zip, file/Default-Dark-Mode-1.20.2+-2023.11.0.zip, file/SP-1.14v6, file/shane_bee

-- System Details --
Details:
    Minecraft Version: 1.21.1
    Minecraft Version ID: 1.21.1
    Operating System: Mac OS X (aarch64) version 14.6.1
    Java Version: 22.0.2, Eclipse Adoptium
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Eclipse Adoptium
    Memory: 164766744 bytes (157 MiB) / 553648128 bytes (528 MiB) up to 1073741824 bytes (1024 MiB)
    CPUs: 8
    Processor Vendor: Apple Inc.
    Processor Name: Apple M1
    Identifier: Apple Inc. Family 0x1b588bb3 Model 0 Stepping 0
    Microarchitecture: ARM64 SoC: Firestorm + Icestorm
    Frequency (GHz): 3.20
    Number of physical packages: 1
    Number of physical CPUs: 8
    Number of logical CPUs: 8
    Graphics card #0 name: Apple M1
    Graphics card #0 vendor: Apple (0x106b)
    Graphics card #0 VRAM (MiB): 0.00
    Graphics card #0 deviceId: unknown
    Graphics card #0 versionInfo: unknown
    Memory slot #0 capacity (MiB): 0.00
    Memory slot #0 clockSpeed (GHz): 0.00
    Memory slot #0 type: unknown
    Virtual memory max (MiB): 11264.00
    Virtual memory used (MiB): 9078.95
    Swap memory total (MiB): 3072.00
    Swap memory used (MiB): 2163.00
    Space in storage for jna.tmpdir (MiB): <path not set>
    Space in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB): <path not set>
    Space in storage for io.netty.native.workdir (MiB): <path not set>
    Space in storage for java.io.tmpdir (MiB): available: 96398.59, total: 233752.44
    Space in storage for workdir (MiB): available: 96398.59, total: 233752.44
    JVM Flags: 2 total; -Xms512m -Xmx1024m
    Fabric Mods: 
        ctrl-q: Ctrl Q 1.9
        devtools: Devtools 1.0.0
        fabric-api: Fabric API 0.103.0+1.21.1
            fabric-api-base: Fabric API Base 0.4.42+6573ed8c19
            fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.68+b559734419
            fabric-biome-api-v1: Fabric Biome API (v1) 13.0.29+5bd9f1bc19
            fabric-block-api-v1: Fabric Block API (v1) 1.0.22+0af3f5a719
            fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.10+6573ed8c19
            fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.52+0af3f5a719
            fabric-client-tags-api-v1: Fabric Client Tags 1.1.15+6573ed8c19
            fabric-command-api-v1: Fabric Command API (v1) 1.2.49+f71b366f19
            fabric-command-api-v2: Fabric Command API (v2) 2.2.28+6ced4dd919
            fabric-commands-v0: Fabric Commands (v0) 0.2.66+df3654b319
            fabric-content-registries-v0: Fabric Content Registries (v0) 8.0.16+b559734419
            fabric-convention-tags-v1: Fabric Convention Tags 2.0.21+7f945d5b19
            fabric-convention-tags-v2: Fabric Convention Tags (v2) 2.6.1+9b16164119
            fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.29+0af3f5a719
            fabric-data-attachment-api-v1: Fabric Data Attachment API (v1) 1.1.28+1daea21519
            fabric-data-generation-api-v1: Fabric Data Generation API (v1) 20.2.18+16c4ae2519
            fabric-dimensions-v1: Fabric Dimensions API (v1) 4.0.0+6fc22b9919
            fabric-entity-events-v1: Fabric Entity Events (v1) 1.7.0+2122d82819
            fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.7.12+ba9dae0619
            fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.53+6ced4dd919
            fabric-item-api-v1: Fabric Item API (v1) 11.0.0+afdfc92119
            fabric-item-group-api-v1: Fabric Item Group API (v1) 4.1.5+3fc0e55219
            fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.47+0af3f5a719
            fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.45+df3654b319
            fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.3.12+6c1df36019
            fabric-loot-api-v2: Fabric Loot API (v2) 3.0.14+3f89f5a519
            fabric-loot-api-v3: Fabric Loot API (v3) 1.0.2+3f89f5a519
            fabric-message-api-v1: Fabric Message API (v1) 6.0.13+6573ed8c19
            fabric-model-loading-api-v1: Fabric Model Loading API (v1) 2.0.0+fe474d6b19
            fabric-networking-api-v1: Fabric Networking API (v1) 4.2.2+60c3209b19
            fabric-object-builder-api-v1: Fabric Object Builder API (v1) 15.2.0+40875a9319
            fabric-particles-v1: Fabric Particles (v1) 4.0.2+6573ed8c19
            fabric-recipe-api-v1: Fabric Recipe API (v1) 5.0.12+6508971219
            fabric-registry-sync-v0: Fabric Registry Sync (v0) 5.1.2+60c3209b19
            fabric-renderer-api-v1: Fabric Renderer API (v1) 3.4.0+c705a49c19
            fabric-renderer-indigo: Fabric Renderer - Indigo 1.7.0+c705a49c19
            fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.68+df3654b319
            fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.48+73761d2e19
            fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.1.6+1daea21519
            fabric-rendering-v0: Fabric Rendering (v0) 1.1.71+df3654b319
            fabric-rendering-v1: Fabric Rendering (v1) 5.0.5+df16efd019
            fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 4.3.0+8dc279b119
            fabric-resource-loader-v0: Fabric Resource Loader (v0) 1.3.0+5659912919
            fabric-screen-api-v1: Fabric Screen API (v1) 2.0.25+8b68f1c719
            fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.86+b559734419
            fabric-sound-api-v1: Fabric Sound API (v1) 1.0.23+6573ed8c19
            fabric-transfer-api-v1: Fabric Transfer API (v1) 5.1.17+1db1cc1f19
            fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 6.1.0+1daea21519
        fabricloader: Fabric Loader 0.16.4
            mixinextras: MixinExtras 0.4.1
        iris: Iris 1.8.0-beta.2+mc1.21.1
            io_github_douira_glsl-transformer: glsl-transformer 2.0.1
            org_anarres_jcpp: jcpp 1.4.14
            org_antlr_antlr4-runtime: antlr4-runtime 4.13.1
        java: OpenJDK 64-Bit Server VM 22
        minecraft: Minecraft 1.21.1
        modmenu: Mod Menu 11.0.2
            placeholder-api: Placeholder API 2.4.0-pre.2+1.21
        socketmc: SocketMC 1.21-0.3.0
        sodium: Sodium 0.6.0-beta.1+mc1.21
        sodium-extra: Sodium Extra 0.6.0-beta.1+mc1.21.1
            com_lodborg_interval-tree: interval-tree 1.0.0
    Loaded Shaderpack: (off)
    Launched Version: 1.21.1
    Backend library: LWJGL version 3.3.3-snapshot
    Backend API: Apple M1 GL version 4.1 Metal - 88.1, Apple
    Window size: 1708x960
    GFLW Platform: cocoa
    GL Caps: Using framebuffer using OpenGL 3.2
    GL debug messages: <disabled>
    Is Modded: Definitely; Client brand changed to 'fabric'
    Universe: 400921fb54442d18
    Type: Client (map_client.txt)
    GPU Warnings: version: Metal
    Graphics mode: fancy
    Render Distance: 5/20 chunks
    Resource Packs: vanilla, fabric, ctrl-q, devtools, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-loot-api-v3, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, fabricloader, iris, modmenu, socketmc, sodium, sodium-extra, file/Faithful 32x - 1.21.zip, file/Default-Dark-Mode-1.20.2+-2023.11.0.zip (incompatible), file/SP-1.14v6 (incompatible), file/shane_bee
    Current Language: en_us
    Locale: en_CA
    System encoding: UTF-8
    File encoding: UTF-8
    CPU: 8x Apple M1
#@!@# Game crashed! Crash report saved to: #@!@# /Applications/MultiMC.app/Data/instances/1.21.1/.minecraft/crash-reports/crash-2024-09-16_22.13.59-client.txt
Process exited with exit code 255 (0xff).
Please note that usually neither the exit code, nor its description are enough to diagnose issues!
Always upload the entire log and not just the exit code.

Additional Info

No response

gmitch215 commented 4 days ago

Does this happen when only one is drawn?

If not, it might be Minecraft trying to do weird list operations when multiple things happen at once. I'll take a look.

ShaneBeee commented 4 days ago

It does not happen when its one. If I sent one, and send another before the first vanishes, it will do it. It only appears to happen if there are 2+ texts on the client.

gmitch215 commented 4 days ago

Gotcha.

Now that I've looked at it before, It probably is a bug with the LifecycleMap interface instead.