Additional crash providers: OOM, Segfault and StackOverflow
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
This commit is contained in:
parent
21690627d4
commit
2a20216d32
|
@ -17,13 +17,16 @@ The values are explained in more detail below
|
||||||
- Method:
|
- Method:
|
||||||
- Unsafe_Universal_Forkbomb: Launch a self-multiplying process
|
- Unsafe_Universal_Forkbomb: Launch a self-multiplying process
|
||||||
- Unsafe_Windows_WinAPI: Do some JNI-magic to instantly produce a blue-screen on windows
|
- Unsafe_Windows_WinAPI: Do some JNI-magic to instantly produce a blue-screen on windows
|
||||||
|
- Unsafe_Universal_OOM: Causes an OOM exception
|
||||||
- Broken_Universal_ExitCode: Exit the integrated Server. The game still displays, but you can no longer interact with the world or quit.
|
- Broken_Universal_ExitCode: Exit the integrated Server. The game still displays, but you can no longer interact with the world or quit.
|
||||||
- Safe_Universal_Exception: Performs an invalid operation. Behaves like every other crash and just closes the game, leaving a crash log.
|
- Safe_Universal_Exception: Performs an invalid operation. Behaves like every other crash and just closes the game, leaving a crash log.
|
||||||
- SemiUnsafe_Universal_Exception: Throws a security exceptions. This does not work properly for 1.16.2
|
- SemiUnsafe_Universal_Exception: Throws a security exceptions. This does not work properly for 1.16.2
|
||||||
- SemiUnsafe_Universal_Shutdown: Attempts to run a shutdown command. Since these are specific to some systems this might not always work.
|
- SemiUnsafe_Universal_Shutdown: Attempts to run a shutdown command. Since these are specific to some systems this might not always work.
|
||||||
|
- SemiUnsafe_Universal_Segfault: Causes a segmentation fault using lwjgl.
|
||||||
|
- SemiUnsafe_Universal_StackOverflow: Causes a stack overflow via infinite recursion.
|
||||||
- None: Do nothing
|
- None: Do nothing
|
||||||
|
|
||||||
Please note that all methods marked "Unsafe" as well as the shutdown method are not available in the curseforge release
|
Please note that all methods marked "Unsafe" as well as the shutdown method are not available in the CurseForge release
|
||||||
|
|
||||||
<!-- modrinth_exclude.start -->
|
<!-- modrinth_exclude.start -->
|
||||||
# Building
|
# Building
|
||||||
|
|
|
@ -22,6 +22,12 @@ dependencies {
|
||||||
modLocalRuntime("com.terraformersmc:modmenu:5.0.2")
|
modLocalRuntime("com.terraformersmc:modmenu:5.0.2")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loom {
|
||||||
|
runs {
|
||||||
|
this.named("client").get().vmArg("-Xmx2G")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun list(`package`: String) = Files.list(projectDir.resolve("src/main/java").resolve(`package`.replace('.', '/')).toPath()).use { stream ->
|
fun list(`package`: String) = Files.list(projectDir.resolve("src/main/java").resolve(`package`.replace('.', '/')).toPath()).use { stream ->
|
||||||
stream
|
stream
|
||||||
.map { it.fileName.toString() }
|
.map { it.fileName.toString() }
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
package io.gitlab.jfronny.breakme.crash.safe;
|
||||||
|
|
||||||
|
import io.gitlab.jfronny.breakme.crash.CrashProvider;
|
||||||
|
import org.lwjgl.BufferUtils;
|
||||||
|
import org.lwjgl.PointerBuffer;
|
||||||
|
|
||||||
|
public class SegfaultProvider implements CrashProvider {
|
||||||
|
@Override
|
||||||
|
public void crash() throws Exception {
|
||||||
|
BufferUtils.zeroBuffer(PointerBuffer.create(0, 1000));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package io.gitlab.jfronny.breakme.crash.safe;
|
||||||
|
|
||||||
|
import io.gitlab.jfronny.breakme.crash.CrashProvider;
|
||||||
|
|
||||||
|
public class StackOverflowProvider implements CrashProvider {
|
||||||
|
@Override
|
||||||
|
public void crash() throws Exception {
|
||||||
|
crash();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package io.gitlab.jfronny.breakme.crash.unsafe;
|
||||||
|
|
||||||
|
import io.gitlab.jfronny.breakme.crash.CrashProvider;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class OOMProvider implements CrashProvider {
|
||||||
|
@Override
|
||||||
|
public void crash() throws Exception {
|
||||||
|
List<ByteBuffer> bl = new LinkedList<>();
|
||||||
|
while (true) bl.add(ByteBuffer.allocate(1024 * 1024 * 1024));
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,8 +11,11 @@
|
||||||
"breakme.jfconfig.enum.Method.Exception": "Safe_Universal_Exception",
|
"breakme.jfconfig.enum.Method.Exception": "Safe_Universal_Exception",
|
||||||
"breakme.jfconfig.enum.Method.ExitCode": "Broken_Universal_ExitCode",
|
"breakme.jfconfig.enum.Method.ExitCode": "Broken_Universal_ExitCode",
|
||||||
"breakme.jfconfig.enum.Method.SecurityException": "SemiUnsafe_Universal_Exception",
|
"breakme.jfconfig.enum.Method.SecurityException": "SemiUnsafe_Universal_Exception",
|
||||||
|
"breakme.jfconfig.enum.Method.Segfault": "SemiUnsafe_Universal_Segfault",
|
||||||
|
"breakme.jfconfig.enum.Method.StackOverflow": "SemiUnsafe_Universal_StackOverflow",
|
||||||
"breakme.jfconfig.enum.Method.Forkbomb": "Unsafe_Universal_Forkbomb",
|
"breakme.jfconfig.enum.Method.Forkbomb": "Unsafe_Universal_Forkbomb",
|
||||||
"breakme.jfconfig.enum.Method.Shutdown": "SemiUnsafe_Universal_Shutdown",
|
"breakme.jfconfig.enum.Method.Shutdown": "SemiUnsafe_Universal_Shutdown",
|
||||||
|
"breakme.jfconfig.enum.Method.OOM": "Unsafe_Universal_OOM",
|
||||||
"breakme.jfconfig.enum.Method.WinApi": "Unsafe_Windows_WinAPI",
|
"breakme.jfconfig.enum.Method.WinApi": "Unsafe_Windows_WinAPI",
|
||||||
"breakme.jfconfig.enum.Method.None": "None"
|
"breakme.jfconfig.enum.Method.None": "None"
|
||||||
}
|
}
|
Loading…
Reference in New Issue