On 2021-11-18 10:22:31, Oswald Buddenhagen wrote: > On Wed, Nov 17, 2021 at 07:57:59PM -0500, Antoine Beaupré wrote: >>totally frustrating, on the one hand. on the other hand: yay bug >>solved? >>:p >> > :'-D > >>maybe the gdb backtrace could be of use? >> > depends on how local the problem is. if it's near the crash site, > careful code review might reveal it. if it's not ... > >> i might still have the core file around if you need to inspect >>some state... > > that might be definitely useful, as i might find the triggering input > that way. note that it will contain the plain text of some messages (the > current one in full, and the remainder(s) of the biggest one(s), but > what exactly would be possible to reconstruct depends on the allocator's > behavior).
is there a way I could inspect those structures myself to just do a quick check of what i'd be leaking? i looked a bit at the backtrace again and it seems the crash happens on line 534 in sync.c, which is: (gdb) #5 0x0000559f9b9b01a7 in copy_msg_convert (vars=0x559f9c6445a0, out_cr=<optimized out>, in_cr=<optimized out>) at ./src/sync.c:534 534 free( in_buf ); (gdb) l 529 copy_msg_bytes( &out_buf, in_buf, &idx, in_len, in_cr, out_cr ); 530 531 if (vars->minimal) 532 memcpy( out_buf, dummy_msg_buf, dummy_msg_len ); 533 534 free( in_buf ); 535 return 1; 536 } 537 538 static void in_buf is a char* pointer to vars->data.data, with vars being passed as an argument to the function. it seems odd that this buffer gets freed there in the first place... but I don't know enough about the architecture of that code to tell. it certainly looks a bit messy, if I may... ;) Now I understand why you want valgrind to figure out where this is coming from, it's kind of a needle in a haystack to track the origin of in_buf in there... Maybe someone more familiar with that piece of the code could figure it out better than me, that said... > oh, and your config file might be useful, just in case this is triggered > by a less tested feature. i somehow managed to recreate the crash by clearing my local store and redoing a full sync, which is interesting in and on itself. here is my config:
SyncState * Sync New ReNew Flags # IMAP side, AKA "Far" AKA "Master" in pre 1.4 IMAPAccount anarcat Host imap.anarc.at User anarcat PassCmd "pass imap.anarc.at" SSLType IMAPS CertificateFile /etc/ssl/certs/ca-certificates.crt IMAPStore anarcat-remote Account anarcat # Maildir side, AKA "Near" MaildirStore anarcat-local # Maildir/top/sub/sub #SubFolders Verbatim # Maildir/.top.sub.sub SubFolders Maildir++ # Maildir/top/.sub/.sub # SubFolders legacy # The trailing "/" is important #Path ~/Maildir-mbsync/ Inbox ~/Maildir-mbsync/ # what binds Maildir and IMAP Channel anarcat # AKA Far, convert when all clients are 1.4+ Master :anarcat-remote: # AKA Near Slave :anarcat-local: # Exclude everything under the internal [Gmail] folder, except the interesting folders #Patterns * ![Gmail]* "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" # Or include everything #Patterns * Patterns * !register !.register # Automatically create missing mailboxes, both locally and on the server #Create Both Create slave # Sync the movement of messages between folders and deletions, add after making sure the sync works #Expunge Both IMAPAccount anarcat-register Host imap.anarc.at User register PassCmd "pass imap.anarc.at-register" SSLType IMAPS CertificateFile /etc/ssl/certs/ca-certificates.crt IMAPStore anarcat-register-remote Account anarcat-register MaildirStore anarcat-register-local SubFolders Maildir++ Inbox ~/Maildir-mbsync/.register/ Channel anarcat-register Master :anarcat-register-remote: Slave :anarcat-register-local: Create slave
i'm trying to run things under valdgrind and -D now, to pinpoint which message is causing the crash. i did a first run and it seemed to hang on the network, then either valgrind restarted mbsync (!?) or it restarted itself and i lost the backlog. I didn't have debugging symbols installed anyways, so the valgrind info wasn't exactly useful. I'll report back later with the valgrind report. a. -- Code is law. - Lawrence Lessig
_______________________________________________ isync-devel mailing list isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel