diff options
author | Po Lu <luangruo@yahoo.com> | 2024-02-12 11:16:47 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2024-02-12 11:55:01 +0800 |
commit | bc6c55c5cf3fc5bd248232c6332ea7cca19ffe91 (patch) | |
tree | c831ac6e0d8b26be2e24e330ec021bff2e61af1b /src/androidfns.c | |
parent | 57544fa2a2e1f2d04aa6b6bdf49bde71141b945d (diff) | |
download | emacs-bc6c55c5cf3fc5bd248232c6332ea7cca19ffe91.tar.gz |
Disable exec loader when Emacs is running under an existing instance
* src/androidfns.c (syms_of_androidfns_for_pdumper): Check if
Emacs is running under process tracing, and if so, disable
android_use_exec_loader.
Diffstat (limited to 'src/androidfns.c')
-rw-r--r-- | src/androidfns.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/androidfns.c b/src/androidfns.c index 48c3f3046d6..ea3d5f71c7c 100644 --- a/src/androidfns.c +++ b/src/androidfns.c @@ -3216,6 +3216,10 @@ syms_of_androidfns_for_pdumper (void) jstring string; Lisp_Object language, country, script, variant; const char *data; + FILE *fd; + char *line; + size_t size; + long pid; /* Find the Locale class. */ @@ -3386,6 +3390,35 @@ syms_of_androidfns_for_pdumper (void) /* Set Vandroid_os_language. */ Vandroid_os_language = list4 (language, country, script, variant); + + /* Detect whether Emacs is running under libloader.so or another + process tracing mechanism, and disable `android_use_exec_loader' if + so, leaving subprocesses started by Emacs to the care of that + loader instance. */ + + if (android_get_current_api_level () >= 29) /* Q */ + { + fd = fopen ("/proc/self/status", "r"); + if (!fd) + return; + + line = NULL; + while (getline (&line, &size, fd) != -1) + { + if (strncmp (line, "TracerPid:", sizeof "TracerPid:" - 1)) + continue; + + pid = atol (line + sizeof "TracerPid:" - 1); + + if (pid) + android_use_exec_loader = false; + + break; + } + + free (line); + fclose (fd); + } } #endif /* ANDROID_STUBIFY */ |