Discussion:
RFH: testsuite Heisenbugs
Thorsten Glaser
2016-10-22 15:08:52 UTC
Permalink
Hi,

apparently I’m supposed to post here, not to cvs-dev, right?

Anyway, I’ve got sporadic issues running the testsuite: when
doing a “make check”, I get a failure; when I then re-start (-f)
the testsuite, the testcase in question works, and it aborts
at the next one, etc. (eventually, they all work). Also, this
only happens on my laptop (IBM X40, MirBSD), not on my dayjob
desktop (multi-GHz machine, Debian), despite same codebase.
This also only affects -r and -p modes.

The cases in question are:

- import-after-initial-6
(nothing instead of 'original')

- sticky-23
('no longer pertinent' instead of 'was lost')

- client-9 (not in -p mode)
(transcript follows)
OK, whatever
PASS: client-8
** expected:
Root /tmp/cvs-sanity/cvsroot
Valid-responses [-a-zA-Z ]*
valid-requests
Argument -D
Argument [34] Oct 1999 [0-9][0-9]:00:00 -0000
Argument --
Directory \.
/tmp/cvs-sanity/cvsroot/first-dir
Entry /file1/1\.2///
Modified file1
u=rw,g=,o=
4
abc
update
** or:
Root /tmp/cvs-sanity/cvsroot
Valid-responses [-a-zA-Z ]*
valid-requests
Argument -D
Argument [34] Oct 1999 [0-9][0-9]:00:00 -0000
Argument --
Directory \.
/tmp/cvs-sanity/cvsroot/first-dir
Entry /file1/1\.2///
Modified file1
u=rw,g=r,o=r
4
abc
update
** got:
Root /tmp/cvs-sanity/cvsroot
Valid-responses ok error Valid-requests Force-gzip Referrer Redirect Checked-in New-entry Checksum Copy-file Updated Created Update-existing Merged Patched Rcs-diff Mode Mod-time Removed Remove-entry Set-static-directory Clear-static-directory Set-sticky Clear-sticky Edit-file Template Clear-template Notified Module-expansion Wrapper-rcsOption M Mbinary E F MT
valid-requests
Argument -D
Argument 3 Oct 1999 23:59:38 -0000
Argument --
Directory .
/tmp/cvs-sanity/cvsroot/first-dir
Entry /file1/1.2///
Modified file1
u=rw,g=,o=
4
abc
update
FAIL: client-9


Now, I’m suspecting a timing issue or something, so if anyone
has got an idea why those particular tests (somewhat reliably)
fail, and how to fix them
 we already have raised some timeouts
compared to the original sources; I attached a diff.

Thanks in advance,
//mirabilos
--
13:22⎜«neurodamage» mira, what's up man? I have a CVS question for you in #cvs
13:22⎜«neurodamage» since you're so good w. it │ «neurodamage:#cvs» i love you
13:28⎜«neurodamage:#cvs» you're a handy guy to have around for systems stuff ☺
16:06⎜<Draget:#cvs> Thank god I found you =) 20:03│«bioe007:#cvs» mira2k: ty
17:14⎜<ldiain:#cvs> Thanks big help you are :-) <bioe007> mira|nwt: ty again
18:35⎜«alturiak:#cvs» mirabilos: aw, nice. thanks :o
18:36⎜«ThunderChicken:#cvs» mirabilos FTW! 23:03⎜«mithraic:#cvs» aaah. thanks
18:41⎜«alturiak:#cvs» phew. thanks a bunch, guys. you just made my weekend :-)
18:10⎜«sumit:#cvs» mirabilos: oh ok.. thanks for that
21:57⎜<bhuey:#cvs> yeah, I really appreciate help
18:50⎜«grndlvl:#cvs» thankyou 18:50⎜«grndlvl:#cvs» worked perfectly
20:50⎜<paolo:#cvs> i see. mirabilos, thnks for your support
00:36⎜«halirutan:#cvs» ok, the obvious way:-) thx
18:44⎜«arcfide:#cvs» mirabilos, I am running OpenBSD. 18:59⎜«arcfide:#cvs»
Hrm, yes, I see what you mean. 19:01⎜«arcfide:#cvs» Yeah, thanks for the help.
21:33⎜«CardinalFang:#cvs» Ugh. Okay. Sorry for the dumb question. Thank you
21:34⎜<centosian:#cvs> mirabilos: whoa that's sweet
21:52⎜«garrett__:#cvs» much appreciated «garrett__:#cvs» thanks for your time
23:39⎜<symons:#cvs> this worked, thank you very much 16:26⎜<schweizer:#cvs> ok
thx, i'll try that 20:00⎜«stableable:#cvs» Thank you. 20:50⎜«s833:#cvs»
mirabilos: thanks a lot. 19:34⎜<bobbytek:#cvs> Thanks for confirming :)
20:08⎜<tsolox:#cvs> ...works like a charm.. thanks mirabilos
Thorsten Glaser
2016-10-22 18:52:36 UTC
Permalink
Dixi quod

Post by Thorsten Glaser
Now, I’m suspecting a timing issue or something, so if anyone
Argument [34] Oct 1999 [0-9][0-9]:00:00 -0000
Argument 3 Oct 1999 23:59:38 -0000
That made me curious, and indeed:

***@blau:~ $ date; TZ=UTC0 date; TZ= date
Sat Oct 22 18:50:58 UTC 2016
Sat Oct 22 18:50:58 UTC 2016
Sat Oct 22 18:51:24 UTC 2016

So sanity.sh (which, IMHO, probably ought to have been called
insanity.sh instead ☺) fails to properly restore an unset $TZ.

Fix attached for your convenience.

PASS: test-getdate.sh
==================
All 1 tests passed
==================
Making check in diff
Making check in src
/usr/bin/make check-local
/bin/mksh ./sanity.sh `pwd`/cvs
This test should produce no other output than this message, and a final "OK".
(Note that the test can take an hour or more to run and periodically stops
for as long as one minute. Do not assume there is a problem just because
nothing seems to happen for a long time. If you cannot live without
running status, try the command: `tail -f check.log' from another window.)
OK, all 3587 tests passed (11 test groups skipped).
/bin/mksh ./sanity.sh -r `pwd`/cvs
This test should produce no other output than this message, and a final "OK".
(Note that the test can take an hour or more to run and periodically stops
for as long as one minute. Do not assume there is a problem just because
nothing seems to happen for a long time. If you cannot live without
running status, try the command: `tail -f check.log' from another window.)
OK, all 3780 tests passed (1 test group skipped).
/bin/mksh ./sanity.sh -p `pwd`/cvs
This test should produce no other output than this message, and a final "OK".
(Note that the test can take an hour or more to run and periodically stops
for as long as one minute. Do not assume there is a problem just because
nothing seems to happen for a long time. If you cannot live without
running status, try the command: `tail -f check.log' from another window.)
OK, all 3614 tests passed (3 test groups skipped).

bye,
//mirabilos
--
“It is inappropriate to require that a time represented as
seconds since the Epoch precisely represent the number of
seconds between the referenced time and the Epoch.”
-- IEEE Std 1003.1b-1993 (POSIX) Section B.2.2.2
Loading...