From 7ecea09ec66b08d0178eeec1d6ea724c314c2ab2 Mon Sep 17 00:00:00 2001 From: Enginex0 Date: Mon, 2 Feb 2026 18:43:34 +0100 Subject: [PATCH] fix(app): add global uncaught exception handler for clean restart Individual thread crashes silently kill the thread without bringing down the process. The half-dead process stays alive but broken, and the service.sh restart loop never fires. Install a default uncaught exception handler that logs the error and calls exitProcess(0), triggering the restart loop for full recovery. --- app/src/main/java/org/matrix/TEESimulator/App.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/org/matrix/TEESimulator/App.kt b/app/src/main/java/org/matrix/TEESimulator/App.kt index de71061..7ce7cc6 100644 --- a/app/src/main/java/org/matrix/TEESimulator/App.kt +++ b/app/src/main/java/org/matrix/TEESimulator/App.kt @@ -14,6 +14,7 @@ import org.matrix.TEESimulator.interception.keystore.Keystore2Interceptor import org.matrix.TEESimulator.interception.keystore.KeystoreInterceptor import org.matrix.TEESimulator.logging.SystemLogger import org.matrix.TEESimulator.util.AndroidDeviceUtils +import kotlin.system.exitProcess /** * Main application object for TEESimulator. This object manages the application's lifecycle, @@ -32,6 +33,11 @@ object App { */ @JvmStatic fun main(args: Array) { + Thread.setDefaultUncaughtExceptionHandler { thread, throwable -> + SystemLogger.error("Uncaught exception on thread '${thread.name}'. Exiting for restart.", throwable) + exitProcess(0) + } + SystemLogger.info("Welcome to TEESimulator!") try {