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:
parent
57544fa2a2
commit
bc6c55c5cf
1 changed files with 33 additions and 0 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue