NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/57145: gmake: *** INTERNAL: readdir: Operation not supported. Stop.
The following reply was made to PR kern/57145; it has been noted by GNATS.
From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
To: Thomas Klausner <wiz%NetBSD.org@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, netbsd-bugs%NetBSD.org@localhost
Subject: Re: pkg/57145: gmake: *** INTERNAL: readdir: Operation not
supported. Stop.
Date: Tue, 10 Sep 2024 23:56:36 +0000
> Date: Tue, 10 Sep 2024 20:58:38 +0200
> From: Thomas Klausner <wiz%NetBSD.org@localhost>
>
> On Tue, Sep 10, 2024 at 04:04:58PM +0000, Taylor R Campbell wrote:
> > One path that crossed my mind is a race in readdir by multiple threads
> > or processes on the same file object, which might have been fixed by
> > <https://mail-index.netbsd.org/source-changes/2023/04/22/msg144249.html>
> > (which has not been pulled up to netbsd-9), but I doubt that's
> > happening here.
>
> To clarify - I saw this yesterday in wip/emacs-git:
>
> gmake[3]: *** readdir .: Invalid argument. Stop.
> gmake[3]: *** Waiting for unfinished jobs....
> gmake[3]: Leaving directory '/scratch/wip/emacs-git/work/emacs/leim'
>
> on 10.99.12/amd64 from Aug 28, so it's not fixed in HEAD yet.
Great, that rules out that hypothesis!
It looks like emacs28 is a candidate for a reproducer. How frequently
does this reproduce? Can you run `gmake -jN clean && gmake -jN' in a
loop in the build tree to trigger it (for whatever N is appropriate)?
Might be worth running this concurrently:
dtrace -n '
fbt::VOP_SEEK:entry {
self->vp = arg0;
self->oldoff = arg1;
self->newoff = arg2;
}
fbt::VOP_SEEK:return /arg1 == 22/ {
printf("vp=%p oldoff=%d newoff=%d", self->vp,
self->oldoff, self->newoff);
print(*(struct vnode_impl *)self->vp);
@[stack()] = count();
}
fbt::VOP_SEEK:return {
self->vp = self->oldoff = self->newoff = 0
}
'
and hit ^C when it reproduces to get the stack trace output (which
will probably just show sys_lseek -> vn_seek -> VOP_SEEK, but let's
make sure it's not also nested in layerfs or something).
> I'm not using nfs in this setup, but a standard 'mksandbox' chroot.
>
> tmpfs on /archive/sandboxes/client1 type tmpfs (local)
> [...]
I don't see / or /scratch in your list of mounted file systems --
what's the file system that /scratch/wip/emacs-git/work/emacs/leim
lives on? Is this chrooted in /archive/sandboxes/client1 so the
answer is tmpfs?
Home |
Main Index |
Thread Index |
Old Index