[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#47596: File descriptor error when exiting emacs on android 11
From: |
Henrik Grimler |
Subject: |
bug#47596: File descriptor error when exiting emacs on android 11 |
Date: |
Mon, 05 Apr 2021 10:14:10 +0200 |
User-agent: |
Evolution 3.38.4 |
Hi,
Compiling this, on any optimisation level, is enough to trigger the
error:
```
#include <stdio.h>
int main()
{
fdopen (2, "w");
fclose (stderr);
}
```
In emacs fdopen is run in init_standard_fds, where we have
```
[...]
force_open (STDERR_FILENO, O_RDONLY);
/* Set buferr if possible on platforms defining _PC_PIPE_BUF, as
they support the notion of atomic writes to pipes. */
#ifdef _PC_PIPE_BUF
buferr = fdopen (STDERR_FILENO, "w");
if (buferr)
setvbuf (buferr, NULL, _IOLBF, 0);
#endif
}
```
so I suppose there is either some very fundamental issue with
`fdopen (STDERR_FILENO, "w")` here, or the file descriptor sanitizer on
android is broken.
If I avoid that part of init_standard_fds, i.e. change the ifdef to
something like `#if defined(_PC_PIPE_BUF) && !defined(__ANDROID__)`, I
get an emacs that seem to fully work on android.
Best regards,
Henrik Grimler