On Saturday 13 December 2025 00:36:36 Martin Storsjö wrote:
> On Sat, 13 Dec 2025, Martin Storsjö wrote:
>
> > On Fri, 12 Dec 2025, Pali Rohár wrote:
> >
> > > It differs in few minutes for "." entry. I guess that this can happen
> > > when log file t_findfirst.log is being written to the current directory
> > > which can affect ctime of ".". Probably same problem can happen also for
> > > "..".
> > >
> > > It is quite tricky to find out which entries could be modified during
> > > current the test. It can depends on fs caches or other unknown things.
> > > I remember that I read somewhere that FindFirstFile can return cached
> > > values.
> > >
> > > Quick fix which avoids this test for . and .. entries:
> > >
> > >
> > > diff --git a/mingw-w64-crt/testcases/t_findfirst.c
> > > b/mingw-w64-crt/testcases/t_findfirst.c
> > > index de88f6a19979..b8932c359c37 100644
> > > --- a/mingw-w64-crt/testcases/t_findfirst.c
> > > +++ b/mingw-w64-crt/testcases/t_findfirst.c
> > > @@ -17,8 +17,8 @@
> > > fprintf (stderr, "Error: Function %s" F " failed: errno=%d
> > > (%s)\n", #STATFUNC, d.name, errno, strerror (errno)); \
> > > return 1; \
> > > } \
> > > - if (STRCMPAW(d.name, "t_findfirst.log") == 0) { \
> > > - fprintf (stderr, "Skipping file t_findfirst.log as it is being
> > > changed during the test\n"); \
> > > + if (STRCMPAW(d.name, ".") == 0 || STRCMPAW(d.name, "..") == 0 ||
> > > STRCMPAW(d.name, "t_findfirst.log") == 0) { \
> > > + fprintf (stderr, "Skipping entry " F " as it is being changed
> > > during the test\n", d.name); \
> > > } else { \
> > > if (st.st_atime != d.time_access) { \
> > > fprintf (stderr, "Error: " F ": %s st_atime (%I64d) differs
> > > from %s time_access (%I64d)\n", d.name, #STATFUNC, (long
> > > long)st.st_atime, #FINDFUNC, (long long)d.time_access); \
> >
> > Now with this in place, I'm getting more errors later:
> >
> >
> > Skipping entry . as it is being changed during the test
> > Skipping entry . as it is being changed during the test
> > Skipping entry . as it is being changed during the test
> > Skipping entry . as it is being changed during the test
> > Skipping entry . as it is being changed during the test
> > Skipping entry . as it is being changed during the test
> > Skipping entry . as it is being changed during the test
> > Skipping entry . as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Skipping entry .. as it is being changed during the test
> > Error: complex:stat st_ctime (1765576697) differs from _findnext64i32
> > time_write (1765576704)
>
> So I presume the problem is that we're running this test in parallel with
> potential other tests, which can modify the current directory (and make can
> still be building other targets in parallel - even though the testsuite
> seems to mostly build all executables before executing anything).
Seems that this can be another reason.
> That feels extremely brittle for a test; if we are going to compare things
> like this, we can't just exclude t_findfirst.log - we would need to exclude
> the log for any test log which may be executing at the same time.
I agree, it does not make sense to run this test in pipeline. This is
the test from the last 12/12 change, so please drop it for now. I will
send a new version of without this 12/12 change.
> To make such a test reliable, we would need to create a new test directory
> that nobody else is touching at the same time.
>
> // Martin
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public