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