diff --git a/app/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt b/app/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt index c5127ff05..1231ed8a6 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt @@ -5,6 +5,7 @@ import android.content.ComponentName import android.content.Intent import android.content.ServiceConnection import android.os.IBinder +import android.system.Os import androidx.core.content.getSystemService import com.topjohnwu.magisk.core.Info import com.topjohnwu.superuser.Shell @@ -13,7 +14,6 @@ import com.topjohnwu.superuser.ipc.RootService import com.topjohnwu.superuser.nio.FileSystemManager import timber.log.Timber import java.io.File -import java.io.IOException import java.util.concurrent.locks.AbstractQueuedSynchronizer class RootUtils(stub: Any?) : RootService() { @@ -48,6 +48,7 @@ class RootUtils(stub: Any?) : RootService() { return try { block() } catch (e: Throwable) { + // The process died unexpectedly Timber.e(e) default } @@ -60,16 +61,17 @@ class RootUtils(stub: Any?) : RootService() { val proc = procList.find { it.pid == pid } if (proc != null) return proc - // Find PPID - try { - File("/proc/$pid/status").useLines { - val line = it.find { l -> l.startsWith("PPid:") } ?: return null - pid = line.substring(5).trim().toInt() - } - } catch (e: IOException) { - // The process died unexpectedly + + // Stop find when root process + if (Os.stat("/proc/$pid").st_uid == 0) { return null } + + // Find PPID + File("/proc/$pid/status").useLines { + val line = it.find { l -> l.startsWith("PPid:") } ?: return null + pid = line.substring(5).trim().toInt() + } } return null }