From 0046ed87d5989d4898776af00d867119be2d1bc1 Mon Sep 17 00:00:00 2001 From: Mygod Date: Sat, 3 Feb 2018 20:56:55 -0800 Subject: [PATCH] Fix a crash on Android 6.0 --- .../src/main/java/com/github/shadowsocks/bg/Executable.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mobile/src/main/java/com/github/shadowsocks/bg/Executable.kt b/mobile/src/main/java/com/github/shadowsocks/bg/Executable.kt index 37e17d43..30a21225 100644 --- a/mobile/src/main/java/com/github/shadowsocks/bg/Executable.kt +++ b/mobile/src/main/java/com/github/shadowsocks/bg/Executable.kt @@ -25,6 +25,7 @@ import android.util.Log import com.github.shadowsocks.App.Companion.app import com.github.shadowsocks.JniHelper import java.io.File +import java.io.FileNotFoundException object Executable { const val REDSOCKS = "libredsocks.so" @@ -37,7 +38,11 @@ object Executable { fun killAll() { for (process in File("/proc").listFiles { _, name -> TextUtils.isDigitsOnly(name) }) { - val exe = File(File(process, "cmdline").readText().split(Character.MIN_VALUE, limit = 2).first()) + val exe = File(try { + File(process, "cmdline").readText() + } catch (ignore: FileNotFoundException) { + continue + }.split(Character.MIN_VALUE, limit = 2).first()) if (exe.parent == app.applicationInfo.nativeLibraryDir && EXECUTABLES.contains(exe.name)) { val errno = JniHelper.sigkill(process.name.toInt()) if (errno != 0) Log.w("kill", "SIGKILL ${exe.absolutePath} (${process.name}) failed with $errno")