From fb7f7029d5c8d01dd13d7a1ca98a272c3906b0bc Mon Sep 17 00:00:00 2001 From: Julian Vennen Date: Mon, 30 Dec 2024 15:38:35 +0100 Subject: [PATCH] Add support for class loaders in report level parsing --- src/Parser/ReportParser.php | 4 +- .../Fabric/fabric-1-21-4-crash-report.json | 1214 +++++++++++++++++ .../Fabric/fabric-1-21-4-crash-report.log | 105 ++ test/tests/Logs/AutoLogsTest.php | 10 + 4 files changed, 1331 insertions(+), 2 deletions(-) create mode 100644 test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.json create mode 100644 test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.log diff --git a/src/Parser/ReportParser.php b/src/Parser/ReportParser.php index abf2de2..26c1aaa 100644 --- a/src/Parser/ReportParser.php +++ b/src/Parser/ReportParser.php @@ -22,7 +22,7 @@ class ReportParser extends \Aternos\Codex\Parser\Parser const PATTERN = [ self::LEVEL_WARNING => ["/\s*WARNING: .*$/"], - self::LEVEL_STACKTRACE => ["/^\s+at \S+\(.+\)$/", "/^(?:Caused by: )?[a-z]+\.(?:\w+\.?)+: .*$/", "/^\\tat [a-z]+\..*$/"], + self::LEVEL_STACKTRACE => ["/^\s+at (?:\w+\/+)?\S+\(.+\)$/", "/^(?:Caused by: )?[a-z]+\.(?:\w+\.?)+: .*$/", "/^\\tat [a-z]+\..*$/"], self::LEVEL_INFO => ["/^([^|:]+:) .+$/", "/^(\w+:)$/", "/^(\\t[^:.]+:)$/"], self::LEVEL_TITLE => ["/^-{2,4} .* -{2,4}$/"], self::LEVEL_COMMENT => ["/\/\/.*$/"], @@ -53,4 +53,4 @@ public function parse(): void } } } -} \ No newline at end of file +} diff --git a/test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.json b/test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.json new file mode 100644 index 0000000..4842c30 --- /dev/null +++ b/test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.json @@ -0,0 +1,1214 @@ +{ + "id": "fabric\/crash-report", + "name": "Fabric", + "type": "Crash Report", + "version": "1.21.4", + "title": "Fabric 1.21.4 Crash Report", + "entries": [ + { + "level": 8, + "time": null, + "prefix": null, + "lines": [ + { + "number": 1, + "content": "---- Minecraft Crash Report ----" + } + ] + }, + { + "level": 9, + "time": null, + "prefix": null, + "lines": [ + { + "number": 2, + "content": "\/\/ One day I will be a real crash!" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 3, + "content": "" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "Time:", + "lines": [ + { + "number": 4, + "content": "Time: 2024-12-30 15:34:33" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "Description:", + "lines": [ + { + "number": 5, + "content": "Description: Level dump" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 6, + "content": "" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 7, + "content": "java.lang.Exception: dummy" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 8, + "content": "\tat knot\/\/net.minecraft.class_3218.method_21625(class_3218.java:1434)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 9, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_21613(MinecraftServer.java:1755)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 10, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_64262(MinecraftServer.java:1845)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 11, + "content": "\tat knot\/\/net.minecraft.class_1255.method_5386(class_1255.java:70)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 12, + "content": "\tat java.base\/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 13, + "content": "\tat knot\/\/net.minecraft.class_3738.run(class_3738.java:18)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 14, + "content": "\tat knot\/\/net.minecraft.class_1255.method_18859(class_1255.java:164)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 15, + "content": "\tat knot\/\/net.minecraft.class_4093.method_18859(class_4093.java:23)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 16, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:889)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 17, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:180)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 18, + "content": "\tat knot\/\/net.minecraft.class_1255.method_16075(class_1255.java:138)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 19, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:871)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 20, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:865)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 21, + "content": "\tat knot\/\/net.minecraft.class_1255.method_18857(class_1255.java:147)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 22, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_18857(MinecraftServer.java:829)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 23, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:836)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 24, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:719)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 25, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:292)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 26, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 27, + "content": "" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 28, + "content": "" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 29, + "content": "A detailed walkthrough of the error, its code path and all known details is as follows:" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 30, + "content": "---------------------------------------------------------------------------------------" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 31, + "content": "" + } + ] + }, + { + "level": 8, + "time": null, + "prefix": null, + "lines": [ + { + "number": 32, + "content": "-- Head --" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "Thread:", + "lines": [ + { + "number": 33, + "content": "Thread: Server thread" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "Stacktrace:", + "lines": [ + { + "number": 34, + "content": "Stacktrace:" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 35, + "content": "\tat knot\/\/net.minecraft.class_3218.method_8538(class_3218.java:1744)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 36, + "content": "" + } + ] + }, + { + "level": 8, + "time": null, + "prefix": null, + "lines": [ + { + "number": 37, + "content": "-- Affected level --" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "Details:", + "lines": [ + { + "number": 38, + "content": "Details:" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tAll players:", + "lines": [ + { + "number": 39, + "content": "\tAll players: 0 total; []" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tChunk stats:", + "lines": [ + { + "number": 40, + "content": "\tChunk stats: 841" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel dimension:", + "lines": [ + { + "number": 41, + "content": "\tLevel dimension: minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel spawn location:", + "lines": [ + { + "number": 42, + "content": "\tLevel spawn location: World: (-64,67,48), Section: (at 0,3,0 in -4,4,3; chunk contains blocks -64,-64,48 to -49,319,63), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,-64,0 to -1,319,511)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel time:", + "lines": [ + { + "number": 43, + "content": "\tLevel time: 260 game time, 260 day time" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel name:", + "lines": [ + { + "number": 44, + "content": "\tLevel name: world" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel game mode:", + "lines": [ + { + "number": 45, + "content": "\tLevel game mode: Game mode: survival (ID 0). Hardcore: false. Commands: false" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel weather:", + "lines": [ + { + "number": 46, + "content": "\tLevel weather: Rain time: 112084 (now: false), thunder time: 77340 (now: false)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tKnown server brands:", + "lines": [ + { + "number": 47, + "content": "\tKnown server brands: fabric" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tRemoved feature flags:", + "lines": [ + { + "number": 48, + "content": "\tRemoved feature flags:" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel was modded:", + "lines": [ + { + "number": 49, + "content": "\tLevel was modded: true" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLevel storage version:", + "lines": [ + { + "number": 50, + "content": "\tLevel storage version: 0x04ABD - Anvil" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tLoaded entity count:", + "lines": [ + { + "number": 51, + "content": "\tLoaded entity count: 6" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "Stacktrace:", + "lines": [ + { + "number": 52, + "content": "Stacktrace:" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 53, + "content": "\tat knot\/\/net.minecraft.class_3218.method_8538(class_3218.java:1744)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 54, + "content": "\tat knot\/\/net.minecraft.class_3218.method_21625(class_3218.java:1435)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 55, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_21613(MinecraftServer.java:1755)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 56, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_64262(MinecraftServer.java:1845)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 57, + "content": "\tat knot\/\/net.minecraft.class_1255.method_5386(class_1255.java:70)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 58, + "content": "\tat java.base\/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 59, + "content": "\tat knot\/\/net.minecraft.class_3738.run(class_3738.java:18)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 60, + "content": "\tat knot\/\/net.minecraft.class_1255.method_18859(class_1255.java:164)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 61, + "content": "\tat knot\/\/net.minecraft.class_4093.method_18859(class_4093.java:23)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 62, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:889)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 63, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:180)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 64, + "content": "\tat knot\/\/net.minecraft.class_1255.method_16075(class_1255.java:138)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 65, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:871)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 66, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:865)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 67, + "content": "\tat knot\/\/net.minecraft.class_1255.method_18857(class_1255.java:147)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 68, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_18857(MinecraftServer.java:829)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 69, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:836)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 70, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:719)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 71, + "content": "\tat knot\/\/net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:292)" + } + ] + }, + { + "level": 10, + "time": null, + "prefix": null, + "lines": [ + { + "number": 72, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 73, + "content": "" + } + ] + }, + { + "level": 8, + "time": null, + "prefix": null, + "lines": [ + { + "number": 74, + "content": "-- System Details --" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "Details:", + "lines": [ + { + "number": 75, + "content": "Details:" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tMinecraft Version:", + "lines": [ + { + "number": 76, + "content": "\tMinecraft Version: 1.21.4" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tMinecraft Version ID:", + "lines": [ + { + "number": 77, + "content": "\tMinecraft Version ID: 1.21.4" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tOperating System:", + "lines": [ + { + "number": 78, + "content": "\tOperating System: Linux (amd64) version 5.15.0-117-generic" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tJava Version:", + "lines": [ + { + "number": 79, + "content": "\tJava Version: 21.0.4, Eclipse Adoptium" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tJava VM Version:", + "lines": [ + { + "number": 80, + "content": "\tJava VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Eclipse Adoptium" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tMemory:", + "lines": [ + { + "number": 81, + "content": "\tMemory: 1127541728 bytes (1075 MiB) \/ 1610612736 bytes (1536 MiB) up to 3221225472 bytes (3072 MiB)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tCPUs:", + "lines": [ + { + "number": 82, + "content": "\tCPUs: 2" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tProcessor Vendor:", + "lines": [ + { + "number": 83, + "content": "\tProcessor Vendor: AuthenticAMD" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tProcessor Name:", + "lines": [ + { + "number": 84, + "content": "\tProcessor Name: AMD EPYC 7F72 24-Core Processor" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tIdentifier:", + "lines": [ + { + "number": 85, + "content": "\tIdentifier: AuthenticAMD Family 23 Model 49 Stepping 0" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tMicroarchitecture:", + "lines": [ + { + "number": 86, + "content": "\tMicroarchitecture: Zen 2" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tFrequency (GHz):", + "lines": [ + { + "number": 87, + "content": "\tFrequency (GHz): -0.00" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tNumber of physical packages:", + "lines": [ + { + "number": 88, + "content": "\tNumber of physical packages: 1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tNumber of physical CPUs:", + "lines": [ + { + "number": 89, + "content": "\tNumber of physical CPUs: 24" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tNumber of logical CPUs:", + "lines": [ + { + "number": 90, + "content": "\tNumber of logical CPUs: 48" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tGraphics card #0 name:", + "lines": [ + { + "number": 91, + "content": "\tGraphics card #0 name: unknown" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tGraphics card #0 vendor:", + "lines": [ + { + "number": 92, + "content": "\tGraphics card #0 vendor: unknown" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tGraphics card #0 VRAM (MiB):", + "lines": [ + { + "number": 93, + "content": "\tGraphics card #0 VRAM (MiB): 0.00" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tGraphics card #0 deviceId:", + "lines": [ + { + "number": 94, + "content": "\tGraphics card #0 deviceId: unknown" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tGraphics card #0 versionInfo:", + "lines": [ + { + "number": 95, + "content": "\tGraphics card #0 versionInfo: unknown" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tVirtual memory max (MiB):", + "lines": [ + { + "number": 96, + "content": "\tVirtual memory max (MiB): 129820.45" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tVirtual memory used (MiB):", + "lines": [ + { + "number": 97, + "content": "\tVirtual memory used (MiB): 96157.11" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tSwap memory total (MiB):", + "lines": [ + { + "number": 98, + "content": "\tSwap memory total (MiB): 1024.00" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tSwap memory used (MiB):", + "lines": [ + { + "number": 99, + "content": "\tSwap memory used (MiB): 13.15" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tSpace in storage for jna.tmpdir (MiB):", + "lines": [ + { + "number": 100, + "content": "\tSpace in storage for jna.tmpdir (MiB): " + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tSpace in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB):", + "lines": [ + { + "number": 101, + "content": "\tSpace in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB): " + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tSpace in storage for io.netty.native.workdir (MiB):", + "lines": [ + { + "number": 102, + "content": "\tSpace in storage for io.netty.native.workdir (MiB): " + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tSpace in storage for java.io.tmpdir (MiB):", + "lines": [ + { + "number": 103, + "content": "\tSpace in storage for java.io.tmpdir (MiB): available: 128077.03, total: 223120.39" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tSpace in storage for workdir (MiB):", + "lines": [ + { + "number": 104, + "content": "\tSpace in storage for workdir (MiB): available: 128077.03, total: 223120.39" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "\tJVM Flags:", + "lines": [ + { + "number": 105, + "content": "\tJVM Flags: 2 total; -Xmx3072M -Xms1536M" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": null, + "lines": [ + { + "number": 106, + "content": "" + } + ] + } + ], + "analysis": { + "problems": [], + "information": [ + { + "message": "Minecraft version: 1.21.4", + "counter": 1, + "entry": { + "level": 6, + "time": null, + "prefix": "\tMinecraft Version:", + "lines": [ + { + "number": 76, + "content": "\tMinecraft Version: 1.21.4" + } + ] + }, + "label": "Minecraft version", + "value": "1.21.4" + }, + { + "message": "Java version: 21.0.4", + "counter": 1, + "entry": { + "level": 6, + "time": null, + "prefix": "\tJava Version:", + "lines": [ + { + "number": 79, + "content": "\tJava Version: 21.0.4, Eclipse Adoptium" + } + ] + }, + "label": "Java version", + "value": "21.0.4" + } + ] + } +} \ No newline at end of file diff --git a/test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.log b/test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.log new file mode 100644 index 0000000..b29acfb --- /dev/null +++ b/test/data/Vanilla/Fabric/fabric-1-21-4-crash-report.log @@ -0,0 +1,105 @@ +---- Minecraft Crash Report ---- +// One day I will be a real crash! + +Time: 2024-12-30 15:34:33 +Description: Level dump + +java.lang.Exception: dummy + at knot//net.minecraft.class_3218.method_21625(class_3218.java:1434) + at knot//net.minecraft.server.MinecraftServer.method_21613(MinecraftServer.java:1755) + at knot//net.minecraft.server.MinecraftServer.method_64262(MinecraftServer.java:1845) + at knot//net.minecraft.class_1255.method_5386(class_1255.java:70) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) + at knot//net.minecraft.class_3738.run(class_3738.java:18) + at knot//net.minecraft.class_1255.method_18859(class_1255.java:164) + at knot//net.minecraft.class_4093.method_18859(class_4093.java:23) + at knot//net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:889) + at knot//net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:180) + at knot//net.minecraft.class_1255.method_16075(class_1255.java:138) + at knot//net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:871) + at knot//net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:865) + at knot//net.minecraft.class_1255.method_18857(class_1255.java:147) + at knot//net.minecraft.server.MinecraftServer.method_18857(MinecraftServer.java:829) + at knot//net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:836) + at knot//net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:719) + at knot//net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:292) + at java.base/java.lang.Thread.run(Thread.java:1583) + + +A detailed walkthrough of the error, its code path and all known details is as follows: +--------------------------------------------------------------------------------------- + +-- Head -- +Thread: Server thread +Stacktrace: + at knot//net.minecraft.class_3218.method_8538(class_3218.java:1744) + +-- Affected level -- +Details: + All players: 0 total; [] + Chunk stats: 841 + Level dimension: minecraft:overworld + Level spawn location: World: (-64,67,48), Section: (at 0,3,0 in -4,4,3; chunk contains blocks -64,-64,48 to -49,319,63), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,-64,0 to -1,319,511) + Level time: 260 game time, 260 day time + Level name: world + Level game mode: Game mode: survival (ID 0). Hardcore: false. Commands: false + Level weather: Rain time: 112084 (now: false), thunder time: 77340 (now: false) + Known server brands: fabric + Removed feature flags: + Level was modded: true + Level storage version: 0x04ABD - Anvil + Loaded entity count: 6 +Stacktrace: + at knot//net.minecraft.class_3218.method_8538(class_3218.java:1744) + at knot//net.minecraft.class_3218.method_21625(class_3218.java:1435) + at knot//net.minecraft.server.MinecraftServer.method_21613(MinecraftServer.java:1755) + at knot//net.minecraft.server.MinecraftServer.method_64262(MinecraftServer.java:1845) + at knot//net.minecraft.class_1255.method_5386(class_1255.java:70) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) + at knot//net.minecraft.class_3738.run(class_3738.java:18) + at knot//net.minecraft.class_1255.method_18859(class_1255.java:164) + at knot//net.minecraft.class_4093.method_18859(class_4093.java:23) + at knot//net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:889) + at knot//net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:180) + at knot//net.minecraft.class_1255.method_16075(class_1255.java:138) + at knot//net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:871) + at knot//net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:865) + at knot//net.minecraft.class_1255.method_18857(class_1255.java:147) + at knot//net.minecraft.server.MinecraftServer.method_18857(MinecraftServer.java:829) + at knot//net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:836) + at knot//net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:719) + at knot//net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:292) + at java.base/java.lang.Thread.run(Thread.java:1583) + +-- System Details -- +Details: + Minecraft Version: 1.21.4 + Minecraft Version ID: 1.21.4 + Operating System: Linux (amd64) version 5.15.0-117-generic + Java Version: 21.0.4, Eclipse Adoptium + Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Eclipse Adoptium + Memory: 1127541728 bytes (1075 MiB) / 1610612736 bytes (1536 MiB) up to 3221225472 bytes (3072 MiB) + CPUs: 2 + Processor Vendor: AuthenticAMD + Processor Name: AMD EPYC 7F72 24-Core Processor + Identifier: AuthenticAMD Family 23 Model 49 Stepping 0 + Microarchitecture: Zen 2 + Frequency (GHz): -0.00 + Number of physical packages: 1 + Number of physical CPUs: 24 + Number of logical CPUs: 48 + Graphics card #0 name: unknown + Graphics card #0 vendor: unknown + Graphics card #0 VRAM (MiB): 0.00 + Graphics card #0 deviceId: unknown + Graphics card #0 versionInfo: unknown + Virtual memory max (MiB): 129820.45 + Virtual memory used (MiB): 96157.11 + Swap memory total (MiB): 1024.00 + Swap memory used (MiB): 13.15 + Space in storage for jna.tmpdir (MiB): + Space in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB): + Space in storage for io.netty.native.workdir (MiB): + Space in storage for java.io.tmpdir (MiB): available: 128077.03, total: 223120.39 + Space in storage for workdir (MiB): available: 128077.03, total: 223120.39 + JVM Flags: 2 total; -Xmx3072M -Xms1536M diff --git a/test/tests/Logs/AutoLogsTest.php b/test/tests/Logs/AutoLogsTest.php index 352a287..9b62433 100644 --- a/test/tests/Logs/AutoLogsTest.php +++ b/test/tests/Logs/AutoLogsTest.php @@ -784,6 +784,16 @@ public function test_fabric_1_20_1_dependencies_wrong_version(): void $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); } + /** + * @return void + * @throws Exception + */ + public function test_fabric_1_21_4_crash_report(): void + { + $log = new TestLog('Vanilla/Fabric/fabric-1-21-4-crash-report.log'); + $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); + } + /** * @return void * @throws Exception