Commit fdff88e0 authored by Mygod's avatar Mygod

Add RUST_BACKTRACE

parent cf37e759
...@@ -43,7 +43,7 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C ...@@ -43,7 +43,7 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C
} }
} }
private inner class Guard(private val cmd: List<String>) { private inner class Guard(private val cmd: List<String>, private val environment: Map<String, String>) {
private lateinit var process: Process private lateinit var process: Process
private fun streamLogger(input: InputStream, logger: (String) -> Unit) = try { private fun streamLogger(input: InputStream, logger: (String) -> Unit) = try {
...@@ -51,7 +51,10 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C ...@@ -51,7 +51,10 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C
} catch (_: IOException) { } // ignore } catch (_: IOException) { } // ignore
fun start() { fun start() {
process = ProcessBuilder(cmd).directory(Core.deviceStorage.noBackupFilesDir).start() process = ProcessBuilder(cmd).apply {
directory(Core.deviceStorage.noBackupFilesDir)
environment().putAll(environment)
}.start()
} }
suspend fun looper(onRestartCallback: (suspend () -> Unit)?) { suspend fun looper(onRestartCallback: (suspend () -> Unit)?) {
...@@ -111,9 +114,10 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C ...@@ -111,9 +114,10 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C
override val coroutineContext = Dispatchers.Main.immediate + Job() override val coroutineContext = Dispatchers.Main.immediate + Job()
@MainThread @MainThread
fun start(cmd: List<String>, onRestartCallback: (suspend () -> Unit)? = null) { fun start(cmd: List<String>, environment: Map<String, String> = emptyMap(),
onRestartCallback: (suspend () -> Unit)? = null) {
Timber.i("start process: ${Commandline.toString(cmd)}") Timber.i("start process: ${Commandline.toString(cmd)}")
Guard(cmd).apply { Guard(cmd, environment).apply {
start() // if start fails, IOException will be thrown directly start() // if start fails, IOException will be thrown directly
launch { looper(onRestartCallback) } launch { looper(onRestartCallback) }
} }
......
...@@ -129,7 +129,7 @@ class ProxyInstance(val profile: Profile, private val route: String = profile.ro ...@@ -129,7 +129,7 @@ class ProxyInstance(val profile: Profile, private val route: String = profile.ro
cmd += Acl.getFile(route).absolutePath cmd += Acl.getFile(route).absolutePath
} }
service.data.processes!!.start(cmd) service.data.processes!!.start(cmd, mapOf("RUST_BACKTRACE" to "1"))
} }
fun scheduleUpdate() { fun scheduleUpdate() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment