Re: bug #41707: RCS 5.8 file corruption when using file descriptor IO for large files

Thien-Thi Nguyen <[email protected]> Sun, 27 Jul 2014 13:49:26 +0200
Newsgroups gmane.comp.version-control.rcs.bugs
Message-ID <[email protected]>
() Achim Gratz <[email protected]>
() Thu, 19 Jun 2014 23:30:34 +0200

   As described in

   https://cygwin.com/ml/cygwin/2012-06/msg00334.html
   https://cygwin.com/ml/cygwin/2012-09/msg00331.html

   and demonstrated with

   https://cygwin.com/ml/cygwin/2013-10/msg00086.html

   the STDIO code path fails for work files above a certain size on
   Cygwin.  Based on the analysis of how the breakage occurs I've
   developed the following patch for your consideration:

Thanks for the patch, and the analysis, too.  The latter i could
not / cannot do since i don't have access to such a platform.  As
for the patch (and because of the lack of platform access), i
request your help to proceed as follows:

- I have rewritten the test, attached here, to be more idiomatic.

  The first step is to check that this test fails for you when
  unpatched, and passes when patched.  Could you please confirm?
  (NB the ??? re ‘need_subdir’.)  The "maybe" in the description
  is because there was no way for 5.7 to force STDIO operation,
  so the problem might have been latent at that time.

- I'm wary of adding the close/re-open sequence unconditionally and
  wonder if there is a way to detect systems that misbehave thusly
  with a short C program (or better yet, sequence of shell
  commands) to be run by the configure script.  What do you think?

- etc

It's probably best to worry about "etc" after we surmount these
first two steps.  I understand that there is a difference between
GNU/Linux (say) and Cygwin, but i don't understand (yet) if that
difference is legitimate (i.e., allowed by POSIX or other relevant
standards).  What do you suggest i read to understand the analysis
linked in the URL above?
  
-- 
Thien-Thi Nguyen
   GPG key: 4C807502
   (if you're human and you know it)
      read my lisp: (responsep (questions 'technical)
                               (not (via 'mailing-list)))
                     => nil
t820 (application/octet-stream, 2.3 KB) - not displayed
signature.asc (application/pgp-signature, 197 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iEYEARECAAYFAlPU50oACgkQZwMiJEyAdQLbnwCg26L3/RNSGtT/t9dQPnXY2eTC
AUsAoLjk+sXkViOag2VtnLVtWnjSQ7If
=qltz
-----END PGP SIGNATURE-----