Hi Deborah, Thanks, that's all useful! Looks like in both places it's struggling with lack of a userid, which makes some sense because it's a shared mailbox, and shared mailboxes don't have userids.
I guess this means that in its current state, the backup system can't handle shared mailboxes. :( Which is weird, because the docs say it can, and I wouldn't have written that if I didn't think it worked, but maybe I didn't understand shared mailboxes as well as I thought way back then. I've created a github issue (https://github.com/cyrusimap/cyrus-imapd/issues/2893), and am about to make a test case to reproduce the problem, so I can get on with fixing it. :) Cheers, ellie On Fri, Oct 11, 2019, at 6:02 PM, Deborah Pickett wrote: > Hi Ellie, > Thanks for helping me look at this. > On 2019-10-09 16:17, ellie timoney wrote: >> Does the same problem occur if you use sync_client (on the master server, as >> the cyrus user) to replicate the shared mailbox to the backup server (rather >> than using XBACKUP over IMAP)? Something like "sync_client -n rsync -m >> supp...@polyfoam.com.au" I think? >> > With -m I get this familiar output on the master: > # /usr/lib/cyrus/bin/sync_client -v -n rsync -m supp...@polyfoam.com.au > MAILBOXES polyfoam.com.au!support > Error from sync_do_mailboxes(): bailing out! > and this is seen in the log on the backup server: > Oct 11 17:39:58 rsync cyrus/backupd[3969]: login: mail-3175-1.polyfoam.com.au > [10.3.244.125] rsync-mail-3175-1 DIGEST-MD5 User logged in > Oct 11 17:39:58 rsync cyrus/backupd[3969]: created decompress buffer of 4102 > bytes > Oct 11 17:39:58 rsync cyrus/backupd[3969]: created compress buffer of 4073 > bytes > Oct 11 17:39:58 rsync cyrus/backupd[3969]: decompressed 47 -> 41 bytes > Oct 11 17:39:58 rsync cyrus/master[458]: process type:SERVICE name:backupd > path:/usr/lib/cyrus/bin/backupd age:201.603s pid:3969 signaled to death by > signal 11 (Segmentation fault, core dumped) > Oct 11 17:39:58 rsync cyrus/master[458]: service backupd/ipv4 pid 3969 in > BUSY state: terminated abnormally > Oct 11 17:39:58 rsync cyrus/master[458]: service backupd/ipv4 now has 0 > ready workers > There, a core dump. Here is what I get from a backtrace: > # coredumpctl gdb -1 > PID: 3969 (backupd) > UID: 103 (cyrus) > GID: 8 (mail) > Signal: 11 (SEGV) > Timestamp: Fri 2019-10-11 17:39:58 AEDT (2min 16s ago) > Command Line: /usr/lib/cyrus/bin/backupd > Executable: /usr/lib/cyrus/bin/backupd > Control Group: /system.slice/cyrus-imapd.service > Unit: cyrus-imapd.service > Slice: system.slice > Boot ID: c887b7eb1d734962b8bddb745df21e8f > Machine ID: facebc4e2dcd47a68a097acc9077814e > Hostname: rsync > Storage: > /var/lib/systemd/coredump/core.backupd.103.c887b7eb1d734962b8bddb745df21e8f.3969.1570775998000000.lz4 > Message: Process 3969 (backupd) of user 103 dumped core. > > Stack trace of thread 3969: > #0 0x00007f95c17e3206 __GI___strlen_sse2 (libc.so.6) > #1 0x00007f95c2080119 xstrdup (libcyrus_min.so.0) > #2 0x00005557e89fe440 is_mailboxes_single_user (backupd) > #3 0x00005557e89eec88 main (backupd) > #4 0x00007f95c176f09b __libc_start_main (libc.so.6) > #5 0x00005557e89ef34a _start (backupd) > > GNU gdb (Debian 8.2.1-2+b1) 8.2.1 > Copyright (C) 2018 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. > Type "show copying" and "show warranty" for details. > This GDB was configured as "x86_64-linux-gnu". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Find the GDB manual and other documentation resources online at: > <http://www.gnu.org/software/gdb/documentation/>. > > For help, type "help". > Type "apropos word" to search for commands related to "word"... > Reading symbols from /usr/lib/cyrus/bin/backupd...Reading symbols from > /usr/lib/debug/.build-id/e3/b2619440ce57c6ae7db282266976a826059cf2.debug...done. > done. > [New LWP 3969] > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > Core was generated by `/usr/lib/cyrus/bin/backupd'. > Program terminated with signal SIGSEGV, Segmentation fault. > #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 > 120 ../sysdeps/x86_64/multiarch/../strlen.S: No such file or directory. > (gdb) bt > #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 > #1 0x00007f95c2080119 in xstrdup (str=0x0) at lib/xmalloc.c:95 > #2 0x00005557e89fe440 in is_mailboxes_single_user (dl=0x5557e9472900) at > backup/backupd.c:1438 > #3 cmd_get (dl=0x5557e9472900) at backup/backupd.c:1489 > #4 cmdloop () at backup/backupd.c:688 > #5 service_main (argc=<optimized out>, argv=<optimized out>, envp=<optimized > out>) at backup/backupd.c:282 > #6 0x00005557e89eec88 in main (argc=<optimized out>, argv=<optimized out>, > envp=0x7ffc01307b38) > at master/service.c:638 > (gdb) up > #1 0x00007f95c2080119 in xstrdup (str=0x0) at lib/xmalloc.c:95 > 95 lib/xmalloc.c: No such file or directory. > (gdb) up > #2 0x00005557e89fe440 in is_mailboxes_single_user (dl=0x5557e9472900) at > backup/backupd.c:1438 > 1438 backup/backupd.c: No such file or directory. > (gdb) p *dl > $2 = {name = 0x5557e9415590 "MAILBOXES", head = 0x5557e947c0b0, tail = > 0x5557e947c0b0, next = 0x0, type = 10, > sval = 0x0, nval = 0, gval = 0x0, part = 0x0} > (gdb) > > What about if you use "sync_client -n rsync -u supp...@polyfoam.com.au" > > instead (i.e. with -u treating the shared mailbox as a USER rather than as > > a -m MAILBOX)? This doesn't crash, but it instead transfers a since-deleted full user supp...@polyfoam.com.au (from earlier dross in my database before I made supp...@polyfoam.com.au a public mailbox) to the backup server: > > # /usr/lib/cyrus/bin/sync_client -v -v -n rsync -u supp...@polyfoam.com.au > cyrus/sync_client[201108]: couldn't authenticate to backend server: no > mechanism available > >1570776887>COMPRESS DEFLATE > <1570776887<OK DEFLATE active > USER supp...@polyfoam.com.au > >1570776887>GET USER supp...@polyfoam.com.au > <1570776887<* MAILBOX %(UNIQUEID jkt2bnhgvdgxbotfkmo7jz9j MBOXNAME > polyfoam.com.au!user.support MBOXTYPE NIL LAST_UID 3 HIGHESTMODSEQ 11 > RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 1570530398 POP3_LAST_LOGIN 0 > POP3_SHOW_AFTER 0 UIDVALIDITY 1570528039 PARTITION default ACL > "supp...@polyfoam.com.au lrswipkxtecdan debb...@polyfoam.com.au lrswipkxtecda > " > <mailto:supp...@polyfoam.com.au%c2%a0%c2%a0%c2%a0lrswipkxtecdan%c2%a0%c2%a0%c2%a0debb...@polyfoam.com.au%C2%A0%C2%A0%C2%A0lrswipkxtecda> > OPTIONS P SYNC_CRC 0 SYNC_CRC_ANNOT 0 QUOTAROOT NIL XCONVMODSEQ 0 > ANNOTATIONS (%(ENTRY /comment USERID "" VALUE "Support (Polyfoam group)") > %(ENTRY /comment USERID admdebbiep VALUE Support))) > * MAILBOX %(UNIQUEID 33oidc614u2i31hqutvkywu8 MBOXNAME > polyfoam.com.au!user.support.Archive MBOXTYPE NIL LAST_UID 0 HIGHESTMODSEQ 1 > RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 0 POP3_LAST_LOGIN 0 POP3_SHOW_AFTER > 0 UIDVALIDITY 1570528039 PARTITION default ACL "supp...@polyfoam.com.au > lrswipkxtecdan " > <mailto:supp...@polyfoam.com.au%C2%A0%C2%A0%C2%A0lrswipkxtecdan> OPTIONS P > SYNC_CRC 0 SYNC_CRC_ANNOT 0 QUOTAROOT NIL XCONVMODSEQ 0 ANNOTATIONS (%(ENTRY > /specialuse USERID supp...@polyfoam.com.au VALUE {8+} > \archive))) > * MAILBOX %(UNIQUEID 5wwsybv1ftur0vwaeeuvb0pk MBOXNAME > polyfoam.com.au!user.support.Drafts MBOXTYPE NIL LAST_UID 0 HIGHESTMODSEQ 2 > RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 0 POP3_LAST_LOGIN 0 POP3_SHOW_AFTER > 0 UIDVALIDITY 1570528039 PARTITION default ACL "supp...@polyfoam.com.au > lrswipkxtecdan " > <mailto:supp...@polyfoam.com.au%C2%A0%C2%A0%C2%A0lrswipkxtecdan> OPTIONS P > SYNC_CRC 0 SYNC_CRC_ANNOT 0 QUOTAROOT NIL XCONVMODSEQ 0 ANNOTATIONS (%(ENTRY > /specialuse USERID supp...@polyfoam.com.au VALUE {5+} > \sent))) > * MAILBOX %(UNIQUEID 7k6a536yhh9zc3t3j5f9z93u MBOXNAME > polyfoam.com.au!user.support.Important MBOXTYPE NIL LAST_UID 0 HIGHESTMODSEQ > 1 RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 0 POP3_LAST_LOGIN 0 > POP3_SHOW_AFTER 0 UIDVALIDITY 1570528039 PARTITION default ACL > "supp...@polyfoam.com.au lrswipkxtecdan " > <mailto:supp...@polyfoam.com.au%C2%A0%C2%A0%C2%A0lrswipkxtecdan> OPTIONS P > SYNC_CRC 0 SYNC_CRC_ANNOT 0 QUOTAROOT NIL XCONVMODSEQ 0 ANNOTATIONS (%(ENTRY > /specialuse USERID supp...@polyfoam.com.au VALUE {10+} > \important))) > * MAILBOX %(UNIQUEID zdl5xlyfx1wtcpp9gd3ce50l MBOXNAME > polyfoam.com.au!user.support.Junk MBOXTYPE NIL LAST_UID 0 HIGHESTMODSEQ 1 > RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 0 POP3_LAST_LOGIN 0 POP3_SHOW_AFTER > 0 UIDVALIDITY 1570528039 PARTITION default ACL "supp...@polyfoam.com.au > lrswipkxtecdan " > <mailto:supp...@polyfoam.com.au%C2%A0%C2%A0%C2%A0lrswipkxtecdan> OPTIONS P > SYNC_CRC 0 SYNC_CRC_ANNOT 0 QUOTAROOT NIL XCONVMODSEQ 0 ANNOTATIONS (%(ENTRY > /specialuse USERID supp...@polyfoam.com.au VALUE {5+} > \junk))) > * MAILBOX %(UNIQUEID pi3ppdusz8pgio8lyrkj7tiw MBOXNAME > polyfoam.com.au!user.support.Sent MBOXTYPE NIL LAST_UID 0 HIGHESTMODSEQ 1 > RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 0 POP3_LAST_LOGIN 0 POP3_SHOW_AFTER > 0 UIDVALIDITY 1570528039 PARTITION default ACL "supp...@polyfoam.com.au > lrswipkxtecdan " > <mailto:supp...@polyfoam.com.au%C2%A0%C2%A0%C2%A0lrswipkxtecdan> OPTIONS P > SYNC_CRC 0 SYNC_CRC_ANNOT 0 QUOTAROOT NIL XCONVMODSEQ 0) > * MAILBOX %(UNIQUEID a888coldtyz7dwop51uuqbot MBOXNAME > polyfoam.com.au!user.support.Trash MBOXTYPE NIL LAST_UID 0 HIGHESTMODSEQ 1 > RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 0 POP3_LAST_LOGIN 0 POP3_SHOW_AFTER > 0 UIDVALIDITY 1570528039 PARTITION default ACL "supp...@polyfoam.com.au > lrswipkxtecdan " > <mailto:supp...@polyfoam.com.au%C2%A0%C2%A0%C2%A0lrswipkxtecdan> OPTIONS P > SYNC_CRC 0 SYNC_CRC_ANNOT 0 QUOTAROOT NIL XCONVMODSEQ 0 ANNOTATIONS (%(ENTRY > /specialuse USERID supp...@polyfoam.com.au VALUE {6+} > \trash))) > * LSUB (polyfoam.com.au!user.support polyfoam.com.au!user.support.Archive > polyfoam.com.au!user.support.Drafts polyfoam.com.au!user.support.Junk > polyfoam.com.au!user.support.Sent polyfoam.com.au!user.support.Trash) > OK Success > cyrus/sync_client[201108]: Inbox missing on master for > supp...@polyfoam.com.au > UNUSER supp...@polyfoam.com.au > >1570776887>APPLY UNUSER supp...@polyfoam.com.au > <1570776887<OK Success > >1570776887>EXIT > <1570776887<OK Finished > But I think that's a red herring. If I do it for a public mailbox that has > never had a matching user, I get this: > # /usr/lib/cyrus/bin/sync_client -v -v -n rsync -u in...@polyfoam.com.au > cyrus/sync_client[201121]: couldn't authenticate to backend server: no > mechanism available > >1570777011>COMPRESS DEFLATE > <1570777011<OK DEFLATE active > USER in...@polyfoam.com.au > >1570777011>GET USER in...@polyfoam.com.au > <1570777011<OK Success > and running with the -m option on info2 produces the same segfault as above. > >> On the backup server, what does the "ctl_backups verify -vvv -m >> polyfoam.com.au!support" command say about the shared mailbox? > It segfaults, not the same as above. > # /usr/lib/cyrus/bin/ctl_backups verify -vvv -m 'polyfoam.com.au!support' > Segmentation fault (core dumped) > # coredumpctl gdb -1 > PID: 3927 (ctl_backups) > UID: 103 (cyrus) > GID: 8 (mail) > Signal: 11 (SEGV) > Timestamp: Fri 2019-10-11 17:26:10 AEDT (50s ago) > Command Line: /usr/lib/cyrus/bin/ctl_backups verify -vvv -m > polyfoam.com.au!support > Executable: /usr/lib/cyrus/bin/ctl_backups > Control Group: /user.slice/user-1000.slice/session-1.scope > Unit: session-1.scope > Slice: user-1000.slice > Session: 1 > Owner UID: 1000 (localadmin) > Boot ID: c887b7eb1d734962b8bddb745df21e8f > Machine ID: facebc4e2dcd47a68a097acc9077814e > Hostname: rsync > Storage: > /var/lib/systemd/coredump/core.ctl_backups.103.c887b7eb1d734962b8bddb745df21e8f.3927.1570775170000000.lz4 > Message: Process 3927 (ctl_backups) of user 103 dumped core. > > Stack trace of thread 3927: > #0 0x00007fc24cfdb206 __GI___strlen_sse2 (libc.so.6) > #1 0x0000557f0137c495 backup_get_paths (ctl_backups) > #2 0x0000557f0136d678 main (ctl_backups) > #3 0x00007fc24cf6709b __libc_start_main (libc.so.6) > #4 0x0000557f0136db6a _start (ctl_backups) > > GNU gdb (Debian 8.2.1-2+b1) 8.2.1 > Copyright (C) 2018 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. > Type "show copying" and "show warranty" for details. > This GDB was configured as "x86_64-linux-gnu". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Find the GDB manual and other documentation resources online at: > <http://www.gnu.org/software/gdb/documentation/>. > > For help, type "help". > Type "apropos word" to search for commands related to "word"... > Reading symbols from /usr/lib/cyrus/bin/ctl_backups...Reading symbols from > /usr/lib/debug/.build-id/11/23ce6d2f413e1384c144165f996813ad4924c0.debug...done. > done. > [New LWP 3927] > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > Core was generated by `/usr/lib/cyrus/bin/ctl_backups verify -vvv -m > polyfoam.com.au!support'. > Program terminated with signal SIGSEGV, Segmentation fault. > #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 > 120 ../sysdeps/x86_64/multiarch/../strlen.S: No such file or directory. > (gdb) bt > #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 > #1 0x0000557f0137c495 in backup_get_paths (mbname=0x557f0300bfd0, > data_fname=0x7ffcbe2daf90, index_fname=0x0, > create=BACKUP_OPEN_NOCREATE) at backup/lcb.c:373 > #2 0x0000557f0136d678 in main (argc=5, argv=0x7ffcbe2db108) at > backup/ctl_backups.c:525 > (gdb) up > #1 0x0000557f0137c495 in backup_get_paths (mbname=0x557f0300bfd0, > data_fname=0x7ffcbe2daf90, index_fname=0x0, > create=BACKUP_OPEN_NOCREATE) at backup/lcb.c:373 > 373 backup/lcb.c: No such file or directory. > (gdb) p *mbname > $2 = {boxes = 0x557f0300c090, is_deleted = 0, localpart = 0x0, domain = > 0x557f0300c050 "polyfoam.com.au", > extns = 0x0, extuserid = 0x0, userid = 0x0, intname = 0x557f0300c030 > "polyfoam.com.au!support", extname = 0x0, > recipient = 0x0} > (gdb) p userid > $4 = 0x0 > (gdb) > Calling strlen() on the null userid would be the immediate cause of the > crash. I'm not familiar enough with the code to know what leads to userid > being null, or if that's also the cause of backupd crashing. >
---- 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