Comment 4 for bug 445864

Revision history for this message
Huba Gaspar (huba) wrote :

I've encountered the same problem on 10.10 too.

Running k9copy with strace I've also find the cause of the problem:
opening of an iso image returns EOVERFLOW.
From the manual of open:
"
EOVERFLOW
              pathname refers to a regular file that is too large to be opened. The
              usual scenario here is that an application compiled on a 32-bit
              platform without -D_FILE_OFFSET_BITS=64 tried to open a file whose size
              exceeds (2<<31)-1 bits; see also O_LARGEFILE above. This is the error
              specified by POSIX.1-2001; in kernels before 2.6.24, Linux gave the
              error EFBIG for this case.
"
From the explanation above it is obvious that only 32-bit version is affected and this problem can also be fixed on the 32-bit version by adding a compiler flag.

I've added the following two lines to CMakeLists.txt of the source tree and rebuilt the deb package:
SET(CMAKE_C_FLAGS "-D_FILE_OFFSET_BITS=64")
SET(CMAKE_CXX_FLAGS "-D_FILE_OFFSET_BITS=64")

[I've put it after SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") line in CMakeLists.txt]

I did not test it thoroughly yet but the iso file open problem has disappeared!

 These defines can cause problems only if k9copy uses external libraries which were not compiled with the above settings and they share file descriptors.

So I suggest this fix to be included in the official version of k9copy too!