You can try linking to different version of runtime library [0] like MSVC
does by default.

[0]
https://stackoverflow.com/questions/3402252/how-to-link-against-msvcr90-dll-with-mingw-gcc

2017-10-19 10:54 GMT+02:00 Etienne Sandré-Chardonnal <etienne.san...@m4x.org
>:

> Hi,
>
> I don't think this is a text/binary issue:
>  - I'm already opening with "rb"
>  - This is random
>  - This only happens when doing concurrent reads
>  - ftell works while _ftelli64 has problems
>
> To me this is a race condition in _ftelli64
>
> I have tested the code in MSVC 2015, and the bug is not there.
>
> Etienne
>
> 2017-10-19 10:36 GMT+02:00 Kai Tietz via Mingw-w64-public <
> mingw-w64-public@lists.sourceforge.net>:
>
> > Hello,
> >
> > I am not quite sure if this is a Windows bug.  The API you are using
> > is actually that one from msvcrt.dll for large/none-large file
> > accesses.
> > The most common issue showing this behavior is the TEXT vs. BINARY
> > file open mode on Windows C-runtime.  New-lines might be expanded to
> > carriage-return + new-line, which can change possitions easily.  To
> > avoid that use on file open the additional flag O_BINARY.
> >
> > Regards, and I hope this will help you,
> > Kai
> >
> > 2017-10-19 10:06 GMT+02:00 Etienne Sandré-Chardonnal <
> > etienne.san...@m4x.org>:
> > > Dear all,
> > >
> > > I have a program which reads concurrently multiple files using the C
> I/O
> > > library. I have encountered  a problem, _ftelli64 randomly reports an
> > > incorrect position, with a mismatch of a few bytes. The bug disappears
> if
> > > any of these changes is done:
> > >
> > >    - ftell is used instead of _ftelli64 (but no more large file
> support)
> > >    - std::ifstream is used instead of C functions (but I need _wfopen
> for
> > >    unicode file names)
> > >    - files are not read concurrently (reading threads set to 1)
> > >
> > > I have reproduced this in the attached MCVE. It does create 8 files
> > > approximately 3MB large, and reads them concurrently in 8 threads by
> > 65544
> > > byte blocks. It compares the value returned by fread() and the
> difference
> > > between _ftelli64 calls before and after fread(). It prints the
> > mismatches.
> > >
> > > Typical output is :
> > >
> > > Error 2.dat / ftell before 3080570 / fread returned 65544 / ftell after
> > > 3146112 / mismatch -2
> > >
> > > Error 6.dat / ftell before 3080569 / fread returned 65544 / ftell after
> > > 3146112 / mismatch -1
> > >
> > > Error 4.dat / ftell before 65544 / fread returned 65544 / ftell after
> > > 131089 / mismatch 1
> > >
> > > Error 5.dat / ftell before 0 / fread returned 65544 / ftell after
> 65543 /
> > > mismatch -1
> > >
> > > Error 5.dat / ftell before 65543 / fread returned 65544 / ftell after
> > > 131088 / mismatch 1
> > >
> > > Error 4.dat / ftell before 2162953 / fread returned 65544 / ftell after
> > > 2228498 / mismatch 1
> > >
> > > Error 5.dat / ftell before 2162952 / fread returned 65544 / ftell after
> > > 2228497 / mismatch 1
> > >
> > > Error 4.dat / ftell before 3080570 / fread returned 65544 / ftell after
> > > 3146112 / mismatch -2
> > >
> > > Error 5.dat / ftell before 3080569 / fread returned 65544 / ftell after
> > > 3146112 / mismatch -1
> > >
> > >
> > > Is this a bug from windows or from MinGW C library?
> > >
> > > Thanks!
> > > ------------------------------------------------------------
> > ------------------
> > > Check out the vibrant tech community on one of the world's most
> > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > _______________________________________________
> > > Mingw-w64-public mailing list
> > > Mingw-w64-public@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
> >
> > ------------------------------------------------------------
> > ------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > Mingw-w64-public mailing list
> > Mingw-w64-public@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
> >
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Mingw-w64-public mailing list
> Mingw-w64-public@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to