Control: tag -1 - moreinfo unreproducible + confirmed upstream
fixed-upstream
On 8/20/24 01:14, Sergio Durigan Junior wrote:
On Monday, August 19 2024, Michael Tokarev wrote:
On 8/18/24 18:08, bblinux wrote:
ished ...>
[pid 79822] prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=1073741816,
rlim_max=1073741816}) = 0
[pid 79822] close(3) = 0
[pid 79822] close(4) = 0
[pid 79822] close(45493) = -1 EBADF (Bad file descriptor)
... forever
This is the key.
qemu closes all possible file descriptors.
It always did that, for still unknown to me reason.
Although this is a different issue, it reminds me of
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1075871, which is a
This is interesting, yes.
In qemu, we've a code which uses close_range() or failing that,
iterates over /proc/self/fd/ and closes everything found there.
If /proc/self/fd/ isn't available, it just does nothing.
This is one part.
However, in qemu up to 9.0, there's another code in net/tap.c:
static void launch_script() {
...
int open_max = sysconf(_SC_OPEN_MAX), i;
for (i = 3; i < open_max; i++) {
if (i != fd) {
close(i);
}
}
that's the thing we're seeing.
-netdev tap,script=no will fix it for startup, but it will
still try to do the same at shutdown unless downscript=no
is also specified.
In 9.1, this code is changed to use close_range() and
/proc/self/fd/ too, in a more generic way.
My previous comment still stands, - in my view such attempts
to close things are nonsensual.
Thanks,
/mjt