Bug#1098226: linux-image-6.12.13-amd64: newfstatat syscall ENOENT failure in multithreaded program
On 2025-02-18 14:07:36 +0100, Vincent Lefevre wrote:
> On 2025-02-18 13:49:18 +0100, Vincent Lefevre wrote:
> > FYI, I can also reproduce this issue on my Samsung Galaxy S23 Ultra
> > phone under Termux/Android. Similarly, running the Perl script with
> > "strace -f" also yields a lot of stat failures.
>
> I can also reproduce it under macOS (cfarm104.cfarm.net), so I'm
> wondering whether the bug could actually be in Perl. But in any case,
> I don't understand how this couldn't be a bug in the Linux kernel,
> according to the strace output.
Hmm... There's a fchdir in the strace output. If the current directory
is global to the process, this could be an issue. I now really suspect
a bug in perl.
If I change my script to do
opendir DIR, $dir or die "$0: opendir failed ($!)\n";
my @files = readdir DIR;
foreach my $file (@files)
{
$nthreads < $maxthreads or join_threads;
$nthreads++ < $maxthreads or die "$0: internal error\n";
threads->create(\&stat_test, $file);
}
closedir DIR or die "$0: closedir failed ($!)\n";
then the failures still occur.
But if I then move the closedir as follows
opendir DIR, $dir or die "$0: opendir failed ($!)\n";
my @files = readdir DIR;
closedir DIR or die "$0: closedir failed ($!)\n";
foreach my $file (@files)
{
$nthreads < $maxthreads or join_threads;
$nthreads++ < $maxthreads or die "$0: internal error\n";
threads->create(\&stat_test, $file);
}
the failures no longer occur.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)
Reply to: