From 13d38e27651f3444fdfdb86cac62cadc38fb1f98 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Wed, 11 Oct 2023 00:57:13 +0800 Subject: [PATCH] Fix[nsbypass]: prevent vulkan loader deadlock on EMUI devices --- FCLauncher/src/main/jni/driver_helper/nsbypass.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/FCLauncher/src/main/jni/driver_helper/nsbypass.c b/FCLauncher/src/main/jni/driver_helper/nsbypass.c index 9088f767..9d854ae2 100644 --- a/FCLauncher/src/main/jni/driver_helper/nsbypass.c +++ b/FCLauncher/src/main/jni/driver_helper/nsbypass.c @@ -104,6 +104,12 @@ bool linker_ns_load(const char* lib_search_path) { // FoldCraft got trolled because they copied the // old broken code verbatim and didn't even test it thoroughly android_link_namespaces(driver_namespace, NULL, "ld-android.so"); + // Also establish links to use the libnativeloader(_lazy).so libraries + // from the global namespace. This is a workaround for an EMUI issue where + // the newly loaded libnativeloader_lazy for some unknown reason links + // to itself and causes a deadlock when loading the vulkan driver. + android_link_namespaces(driver_namespace, NULL, "libnativeloader.so"); + android_link_namespaces(driver_namespace, NULL, "libnativeloader_lazy.so"); dlclose(ld_android_handle); return true; #endif