Hi Carlos, Sudden overnight intuition, and I think this will fix the issue -- the problem isn't that the lseek is failing at >2GB; the problem is that its off_t return value is being truncated to an int before being checked to see if it's negative for the error case (so any "I succeeded, the offset is > 2GB" response looks like "negative, it's an error"). Doh!
I think this will fix the immediate issue: https://github.com/cyrusimap/cyrus-imapd/commit/63f8c09fa2076c0e2fa55436e071e3e341fe48b6 But then I found and fixed some similar ones: https://github.com/cyrusimap/cyrus-imapd/commit/0930d3af4ed9bd44d328db8cfa4d9f2e2be7bada Remains to be seen whether more similar issues pop up -- since no-one's tripped over this previously, I guess you're the first person to try this with a >2GB backup file :( Cheers, ellie On Fri, Jun 14, 2019, at 3:50 PM, ellie timoney wrote: > Hi Carlos, > > This is quite weird, I'm not sure why a 64bit platform would have any trouble > around the 2GB mark?? > > What does the Cyrus ./configure report for your system's integer sizes? e.g. > mine shows: > >> checking size of int... 4 >> checking size of long... 8 >> checking size of size_t... 8 >> checking size of off_t... 8 >> checking size of time_t... 8 >> checking size of long long int... 8 >> checking size of unsigned long long int... 8 >> checking whether byte ordering is bigendian... no > > What's your level of comfort with C debugging? It'd be very helpful to see a > core file+binary from the time that lseek error occurs? > > Cheers, > > ellie > > On Fri, Jun 7, 2019, at 1:58 AM, Carlos Larrañaga wrote: >> Hi Ellie, >> >> Thanks for answering. We use latest 64bit Oracle Linux (not CentOs like I >> said before, sorry) and zlib is also 64bit version: >>> # uname -a >>> Linux xxx 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 17:35:45 PDT 2019 >>> x86_64 x86_64 x86_64 GNU/Linux >>> >>> # yum list installed zlib >>> Loaded plugins: langpacks, ulninfo >>> Installed Packages >>> zlib.x86_64 1.2.7-18.el7 @ol7_latest >>> >>> # lsof -p 17005 |grep lib |grep -i z >>> backupd 17005 cyrus mem REG 253,0 90248 134400930 /usr/lib64/libz.so.1.2.7 >>> >>> # file /usr/lib64/libz.so.1.2.7 >>> /usr/lib64/libz.so.1.2.7: ELF 64-bit LSB shared object, x86-64, version 1 >>> (SYSV), dynamically linked, >>> BuildID[sha1]=b9d5f73428bd6ad68c96986b57bea3b7cedb9745, stripped >>> >>> # rpm -qf /usr/lib64/libz.so.1.2.7 >>> zlib-1.2.7-18.el7.x86_64 >> I have summarized here some information about the backupd error reading the >> file descriptor 15, which is a backup larger than 2GB. The error is logged >> 1755 times. Instead, there is no error for fd 12, which is a backup of less >> than 2 GB: >>> *#-- CLIENT SIDE* >>> *-----------------------------------------------* >>> >>> >>> # time sync_client -v -o -n backup -A >>> Thu Jun 6 17:08:02 CEST 2019 >>> USER aaa >>> QUOTA user.aaa >>> USER ccc >>> Error from do_user(ccc): bailing out! >>> >>> real 30m16.223s >>> user 0m0.006s >>> sys 0m0.006s >>> ** >>> >>> *#-- BACKUP SERVER SIDE ----------------------------------------* >>> # LOGFILE >>> >>> # tail -f /var/log/imapd.log >>> Jun 6 17:09:11 bcrux cyrus/backupd[2584]: IOERROR: gzuc_read: lseek 15: No >>> such file or directory >>> Jun 6 17:09:11 bcrux cyrus/backupd[2584]: IOERROR: gzuc_read: lseek 15: No >>> such file or directory >>> Jun 6 17:09:11 bcrux cyrus/backupd[2584]: IOERROR: gzuc_read: lseek 15: No >>> such file or directory >>> Jun 6 17:09:11 bcrux cyrus/backupd[2584]: IOERROR: gzuc_read: lseek 15: No >>> such file or directory >>> >>> >>> *# lsof of the backupd PROCESS *# lsof -P -p 2584 >>> >>> COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME >>> backupd 2584 cyrus cwd DIR 253,0 4096 128 / >>> backupd 2584 cyrus rtd DIR 253,0 4096 128 / >>> backupd 2584 cyrus txt REG 253,0 768632 939542214 >>> /usr/local/cyrus/libexec/backupd >>> backupd 2584 cyrus mem REG 253,0 37208 135746334 /usr/lib64/libnss_sss.so.2 >>> backupd 2584 cyrus mem REG 253,0 31416 134406707 >>> /usr/lib64/libnss_dns-2.17.so >>> backupd 2584 cyrus mem REG 253,0 61632 134406709 >>> /usr/lib64/libnss_files-2.17.so >>> backupd 2584 cyrus mem REG 253,0 43336 68814977 >>> /usr/lib64/sasl2/webmail.so.0.0.0 >>> backupd 2584 cyrus mem REG 253,0 57960 68856627 >>> /usr/lib64/sasl2/libdigestmd5.so.3.0.0 >>> backupd 2584 cyrus mem REG 253,0 24232 68797220 >>> /usr/lib64/sasl2/libcrammd5.so.3.0.0 >>> backupd 2584 cyrus mem REG 253,0 20088 68797044 >>> /usr/lib64/sasl2/libplain.so.3.0.0 >>> backupd 2584 cyrus mem REG 253,0 20056 68797036 >>> /usr/lib64/sasl2/liblogin.so.3.0.0 >>> backupd 2584 cyrus mem REG 253,0 1845816 135873512 /usr/lib64/libdb-5.3.so >>> backupd 2584 cyrus mem REG 253,0 28272 67113426 >>> /usr/lib64/sasl2/libsasldb.so.3.0.0 >>> backupd 2584 cyrus mem REG 253,0 20064 67113423 >>> /usr/lib64/sasl2/libanonymous.so.3.0.0 >>> backupd 2584 cyrus mem REG 253,0 11448 135872733 /usr/lib64/libfreebl3.so >>> backupd 2584 cyrus mem REG 253,0 155784 134400716 /usr/lib64/libselinux.so.1 >>> backupd 2584 cyrus mem REG 253,0 15464 134401447 >>> /usr/lib64/libkeyutils.so.1.5 >>> backupd 2584 cyrus mem REG 253,0 40672 134399432 /usr/lib64/libcrypt-2.17.so >>> backupd 2584 cyrus mem REG 253,0 105824 134781819 >>> /usr/lib64/libresolv-2.17.so >>> backupd 2584 cyrus mem REG 253,0 53944 134406785 >>> /usr/lib64/libjansson.so.4.10.0 >>> backupd 2584 cyrus mem REG 253,0 88776 135352942 >>> /usr/lib64/libgcc_s-4.8.5-20150702.so.1 >>> backupd 2584 cyrus mem REG 253,0 1137032 134400337 /usr/lib64/libm-2.17.so >>> backupd 2584 cyrus mem REG 253,0 991616 135352396 >>> /usr/lib64/libstdc++.so.6.0.19 >>> backupd 2584 cyrus mem REG 253,0 19296 134399434 /usr/lib64/libdl-2.17.so >>> backupd 2584 cyrus mem REG 253,0 142008 134722750 >>> /usr/lib64/libpthread-2.17.so >>> backupd 2584 cyrus mem REG 253,0 2151704 134365659 /usr/lib64/libc-2.17.so >>> backupd 2584 cyrus mem REG 253,0 753232 134401161 >>> /usr/lib64/libsqlite3.so.0.8.6 >>> backupd 2584 cyrus mem REG 253,0 90248 134400930 /usr/lib64/libz.so.1.2.7 >>> backupd 2584 cyrus mem REG 253,0 11128 134400947 >>> /usr/lib64/libpcreposix.so.0.0.1 >>> backupd 2584 cyrus mem REG 253,0 402384 134400940 >>> /usr/lib64/libpcre.so.1.2.0 >>> backupd 2584 cyrus mem REG 253,0 67104 135269427 >>> /usr/lib64/libkrb5support.so.0.1 >>> backupd 2584 cyrus mem REG 253,0 15920 135873508 >>> /usr/lib64/libcom_err.so.2.1 >>> backupd 2584 cyrus mem REG 253,0 210832 134781960 >>> /usr/lib64/libk5crypto.so.3.1 >>> backupd 2584 cyrus mem REG 253,0 967864 134781967 /usr/lib64/libkrb5.so.3.3 >>> backupd 2584 cyrus mem REG 253,0 320400 134781952 >>> /usr/lib64/libgssapi_krb5.so.2.2 >>> backupd 2584 cyrus mem REG 253,0 115856 134400341 /usr/lib64/libnsl-2.17.so >>> backupd 2584 cyrus mem REG 253,0 42168 134401419 /usr/lib64/libwrap.so.0.7.6 >>> backupd 2584 cyrus mem REG 253,0 2516640 134400708 >>> /usr/lib64/libcrypto.so.1.0.2k >>> backupd 2584 cyrus mem REG 253,0 470360 134400711 >>> /usr/lib64/libssl.so.1.0.2k >>> backupd 2584 cyrus mem REG 253,0 121208 134401258 >>> /usr/lib64/libsasl2.so.3.0.0 >>> backupd 2584 cyrus mem REG 253,0 2898664 838888996 >>> /usr/local/cyrus/lib/libcyrus_imap.so.0.0.0 >>> backupd 2584 cyrus mem REG 253,0 599528 838888999 >>> /usr/local/cyrus/lib/libcyrus_sieve.so.0.0.0 >>> backupd 2584 cyrus mem REG 253,0 20112 134406704 /usr/lib64/libuuid.so.1.3.0 >>> backupd 2584 cyrus mem REG 253,0 20781704 136182553 >>> /usr/lib64/libicudata.so.50.1.2 >>> backupd 2584 cyrus mem REG 253,0 1539544 136197152 >>> /usr/lib64/libicuuc.so.50.1.2 >>> backupd 2584 cyrus mem REG 253,0 553264 838890012 >>> /usr/local/cyrus/lib/libcyrus_min.so.0.0.0 >>> backupd 2584 cyrus mem REG 253,0 1961968 838888994 >>> /usr/local/cyrus/lib/libcyrus.so.0.0.0 >>> backupd 2584 cyrus mem REG 253,0 163408 134355369 /usr/lib64/ld-2.17.so >>> backupd 2584 cyrus 0u IPv4 2092952 0t0 TCP >>> hostb1.upv.es:2005->host1.upv.es:27107 (ESTABLISHED) >>> backupd 2584 cyrus 1u IPv4 2092952 0t0 TCP >>> hostb1.upv.es:2005->host1.upv.es:27107 (ESTABLISHED) >>> backupd 2584 cyrus 2u IPv4 2092952 0t0 TCP >>> hostb1.upv.es:2005->host1.upv.es:27107 (ESTABLISHED) >>> backupd 2584 cyrus 3w FIFO 0,9 0t0 2141764 pipe >>> backupd 2584 cyrus 4u IPv4 2141763 0t0 TCP hostb1.upv.es:2005 (LISTEN) >>> backupd 2584 cyrus 5u REG 0,20 0 86644 /run/cyrus-b1/socket/backupd-0.lock >>> backupd 2584 cyrus 6r FIFO 0,9 0t0 2141754 pipe >>> backupd 2584 cyrus 7w FIFO 0,9 0t0 2141754 pipe >>> backupd 2584 cyrus 8r FIFO 0,9 0t0 2141755 pipe >>> backupd 2584 cyrus 9w FIFO 0,9 0t0 2141755 pipe >>> backupd 2584 cyrus 10u unix 0xffff9d9df53d4400 0t0 2093417 socket >>> backupd 2584 cyrus 11w REG 253,5 680 18253611600 >>> /b1/lib/log/admin/backupd-2584 >>> backupd 2584 cyrus 12uW REG 253,5 976281587 13958644353 >>> /b1/bck/b1/a/aaa_ouuUx9 >>> backupd 2584 cyrus 13ur REG 253,5 3573760 13958644354 >>> /b1/bck/b1/a/aaa_ouuUx9.index >>> backupd 2584 cyrus 14u REG 253,5 2576 13958644355 >>> /b1/bck/b1/a/aaa_ouuUx9.index-journal >>> backupd 2584 cyrus 15uW REG 253,5 3104341527 12884902595 >>> /b1/bck/b1/c/ccc_Mqmymx >>> backupd 2584 cyrus 16u REG 253,5 47927296 12884902596 >>> /b1/bck/b1/c/ccc_Mqmymx.index >>> >>> *# BACKUP SIZES* >>> # ls -lh /b1/bck/b1/a/* >>> /b1/bck/b1/c/* >>> *-rw------- 1 cyrus mail 932M Jun 6 17:08* >>> /b1/bck/b1/a/*aaa_ouuUx9* >>> -rw------- 1 cyrus mail 3.5M Jun 6 16:46 >>> /b1/bck/b1/a/aaa_ouuUx9.index >>> -rw------- 1 cyrus mail 2.6K Jun 6 17:08 >>> /b1/bck/b1/a/aaa_ouuUx9.index-journal >>> >>> -rw------- 1 cyrus mail 2.9G Jun 6 17:01 /b1/bck/b1/c/ccc_Mqmymx >>> -rw------- 1 cyrus mail 46M Jun 6 17:01 /b1/bck/b1/c/ccc_Mqmymx.index >>> >>> *# IMAP SESSION DEBUG* >>> # cat /b1/lib/log/admin/backupd-2584 >>> ---------- admin Thu Jun 6 17:08:02 2019 >>> >>> <1559833682<COMPRESS DEFLATE >>> >1559833682>OK DEFLATE active >>> <1559833682<GET USER aaa >>> >1559833698>* MAILBOX %(UNIQUEID acd014aa-7b1d-43c9-b1d3-f97b06540739 >>> >MBOXNAME user.aaa MBOXTYPE NIL LAST_UID 0 HIGHESTMODSEQ 2 RECENTUID 0 >>> >RECENTTIME 0 LAST_APPENDDATE 0 POP3_LAST_LOGIN 0 POP3_SHOW_AFTER 0 >>> >UIDVALIDITY 1520512152 PARTITION default ACL "aaa lrswipkxtecdan >>> >group:super lrswipkxtecdan " OPTIONS P SYNC_CRC 0 SYNC_CRC_ANNOT 0 >>> >QUOTAROOT NIL XCONVMODSEQ 0) >>> OK Success >>> <1559833698<APPLY QUOTA %(ROOT user.aaa LIMIT 5120000 STORAGE 5120000) >>> >1559833698>OK Success >>> <1559833698<GET USER ccc >> >> Best regards, >> Carlos >> >> >> >> El 06/06/2019 a las 4:04, ellie timoney escribió: >>> It kinda sounds like your platform might be 32bit? Or your zlib is compiled >>> to use 32bit integer sizes? >>> >>> On Mon, Jun 3, 2019, at 10:07 PM, Carlos Larrañaga wrote: >>>> Hi, >>>> >>>> We're testing backup feature un cyrus-imapd 3.0.10. There's no problem >>>> when backup is created first time, but when the backup already exists and >>>> is larger than 2GB, we get the following error from the backupd: >>>>> cyrus/backupd[xxxx]: IOERROR: gzuc_read: lseek 12: No such file or >>>>> directory >>>> As said, it happens only when then backup file already exists and is >>>> larger than 2GB. The backupd process keeps reading de compressed backup >>>> file til sync_client exit with "Error from sync_do_user(xxx): bailing >>>> out!". >>>> >>>> We use xfs with latest CentOs. Seems like backupd is unable to read the >>>> compressed backup file. >>>> >>>> Anyone else with this problem? Any idea how to fix it? >>>> Thanks in advance for your help. >>>> >>>> Best regards, >>>> Carlos. >>>> ---- >>>> Cyrus Home Page: http://www.cyrusimap.org/ >>>> List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ >>>> To Unsubscribe: >>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >>>> >>>> *Attachments:* >>>> * smime.p7s >>> >>> >>> ---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: >>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >> >> >> *Attachments:* >> * smime.p7s > > ---- > Cyrus Home Page: http://www.cyrusimap.org/ > List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ > To Unsubscribe: > https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus
---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus