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.