From da32e91a5c2ee311e54e47732a57b619933d4c5c Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Tue, 21 May 2019 10:10:43 +0300 Subject: [PATCH] Workaround crash when building platform libraries on macOS and Linux --- .../gradle/plugin/konan/KonanToolRunner.kt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt index 8cfa8ab94f7..37c56641fe2 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.gradle.plugin.konan import org.gradle.api.Named import org.gradle.api.Project import org.gradle.api.file.FileCollection +import org.jetbrains.kotlin.konan.target.Family import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.util.DependencyProcessor @@ -72,7 +73,20 @@ internal abstract class KonanCliRunner( "java.library.path" to "${project.konanHome}/konan/nativelib" ) - override val environment = mutableMapOf("LIBCLANG_DISABLE_CRASH_RECOVERY" to "1") + override val environment = mutableMapOf("LIBCLANG_DISABLE_CRASH_RECOVERY" to "1").apply { + // See https://docs.oracle.com/javase/10/vm/signal-chaining.htm + val jre = System.getProperty("java.home") + when (HostManager.host.family) { + Family.OSX -> { + put("DYLD_FORCE_FLAT_NAMESPACE", "0") + put("DYLD_INSERT_LIBRARIES", "$jre/lib/libjsig.dylib") + } + Family.LINUX -> { + put("LD_PRELOAD", "$jre/lib/libjsig.so") + } + else -> { /* No signal chaining required. */ } + } + } private fun String.escapeQuotes() = replace("\"", "\\\"")