1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

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.
This commit is contained in:
Po Lu 2024-02-12 11:16:47 +08:00
parent 57544fa2a2
commit bc6c55c5cf

View file

@ -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 */