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
}
}
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 fun streamLogger(input: InputStream, logger: (String) -> Unit) = try {
......@@ -51,7 +51,10 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C
} catch (_: IOException) { } // ignore
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)?) {
......@@ -111,9 +114,10 @@ class GuardedProcessPool(private val onFatal: suspend (IOException) -> Unit) : C
override val coroutineContext = Dispatchers.Main.immediate + Job()
@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)}")
Guard(cmd).apply {
Guard(cmd, environment).apply {
start() // if start fails, IOException will be thrown directly
launch { looper(onRestartCallback) }
}
......
......@@ -129,7 +129,7 @@ class ProxyInstance(val profile: Profile, private val route: String = profile.ro
cmd += Acl.getFile(route).absolutePath
}
service.data.processes!!.start(cmd)
service.data.processes!!.start(cmd, mapOf("RUST_BACKTRACE" to "1"))
}
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