GNU bug report logs -
#47596
File descriptor error when exiting emacs on android 11
Previous Next
Reported by: Henrik Grimler <henrik <at> grimler.se>
Date: Sun, 4 Apr 2021 19:21:02 UTC
Severity: normal
Tags: moreinfo
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #35 received at 47596 <at> debbugs.gnu.org (full text, mbox):
Hi,
I received feedback on the android issue tracker
https://issuetracker.google.com/issues/184380442
that the snippet:
> > #include <stdio.h>
> > int main()
> > {
> > fdopen (2, "w");
> > fclose (stderr);
> > }
is problematic, because:
> yes. you have two FILE*s that both think they own file descriptor 2.
> depending on what you're actually trying to do, you probably meant to
> use freopen(3) instead?
https://man7.org/linux/man-pages/man3/fopen.3.html
Does freopen make sense for buferr?
> > 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
> > }
>
> This just creates a copy of stderr that has special buffering.
> Again,
> entirely valid for a C program to do that.
I probably should have included a bit more context in the android bug
report to better show what the code does.
Best regards,
Henrik Grimler
This bug report was last modified 2 years and 324 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.