It could be an issue with 2GB filesize limit I guess, or a signed 32 bit variable in the code perhaps. 2^31 = 2147483648.
I see a problem when the bootstrap.dat reaches 4 GB, due to the use of an unsigned int, but don't see a 2 GB limit yet:
https://github.com/nochowderforyou/clams/blob/v1.4.17/src/main.cpp#L2870unsigned int nPos = 0;
[...]
fseek(blkdat, nPos, SEEK_SET);
Edit: I tried making a bootstrap.dat file which started with 4000 MB of zero bytes and then had the regular block data. The client quickly skipped the first 4000 MB and started complaining:
2018-05-18 12:16:03 ERROR: ProcessBlock() : already have block 0 00000c3ce6b3d823a35224a39798eca9ad889966aeb5a9da7b960ffb9869db35
2018-05-18 12:16:03 ERROR: ProcessBlock() : already have block 1 00000feca63cbde350712358668e0fe90e96c97efab3f0ff5fd9f3147dd2f53e
2018-05-18 12:16:03 ERROR: ProcessBlock() : already have block 2 0000042f7f9811948352d2ecc9215916f2276a5259ca4cdc4ccfb77a72ed8ebc
as expected. But then, after 96 MB of block data it wrapped around:
2018-05-18 12:16:10 ERROR: ProcessBlock() : already have block 8571 000006ff5c3a5829e0da80d9afb609435e887c51123f5afeb5f6afe5da819423
2018-05-18 12:16:10 ERROR: ProcessBlock() : already have block 8572 0000022cc43c5975e8ec01d978179b1fa3b26e9fad73aa2306c85f82854fad35
2018-05-18 12:16:10 ERROR: ProcessBlock() : already have block 8573 00000574ef1a20a79eb9c3525ed69af881e778f2100559d340fbc06ca1252240
2018-05-18 12:16:10 ERROR: ProcessBlock() : already have block 0 00000c3ce6b3d823a35224a39798eca9ad889966aeb5a9da7b960ffb9869db35
2018-05-18 12:16:10 ERROR: ProcessBlock() : already have block 1 00000feca63cbde350712358668e0fe90e96c97efab3f0ff5fd9f3147dd2f53e
2018-05-18 12:16:10 ERROR: ProcessBlock() : already have block 2 0000042f7f9811948352d2ecc9215916f2276a5259ca4cdc4ccfb77a72ed8ebc
So that's the 4 GB bug, but we won't be seeing that yet.
I tried putting 2100 MB of zero bytes before the bootstrap data and it seemed to be able to skip the >2 GB of junk just fine. So I don't know what the problem is yet.
My import that I started earlier is still running. I'll leave it running and see whether it eventually fails or not.