Mailing List Archive

2.0 expunge bug
If I expunge more than one message at a time, dbmail-imapd crashes.
It works fine one at a time. I'm running the debian package dbmail-mysql
2.0.20031008-1.

xn

Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): line read for PID 1043
Oct 9 19:58:14 safron dbmail/imap4d[1043]: COMMAND: [a0012 NOOP]
Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): Executing command noop...
Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): Finished command noop
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [.SELECT permission,seen_flag,answered_flag,deleted_flag,flagged_flag,recent_flag,draft_flag FROM mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '1']
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [.SELECT message_idnr, seen_flag, recent_flag FROM messages WHERE mailbox_idnr = '1' AND status < 2 AND unique_id != '' ORDER BY message_idnr ASC]
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [SELECT MAX(message_idnr) FROM messages WHERE unique_id != '']
Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): line read for PID 1043
Oct 9 19:58:14 safron dbmail/imap4d[1043]: COMMAND: [a0013 UID STORE 28958,28995 +FLAGS.SILENT (\Deleted)]
Oct 9 19:58:14 safron dbmail/imap4d[1043]: arg[0]: 'STORE'
Oct 9 19:58:14 safron dbmail/imap4d[1043]: arg[1]: '28958,28995'
Oct 9 19:58:14 safron dbmail/imap4d[1043]: arg[2]: '+FLAGS.SILENT'
Oct 9 19:58:14 safron dbmail/imap4d[1043]: arg[3]: '('
Oct 9 19:58:14 safron dbmail/imap4d[1043]: arg[4]: '\Deleted'
Oct 9 19:58:14 safron dbmail/imap4d[1043]: arg[5]: ')'
Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): Executing command uid...
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [.UPDATE messages SET deleted_flag=1 WHERE message_idnr BETWEEN '28958' AND '28958' AND status < '2' AND mailbox_idnr = '1']
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [.UPDATE messages SET deleted_flag=1 WHERE message_idnr BETWEEN '28995' AND '28995' AND status < '2' AND mailbox_idnr = '1']
Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): Finished command uid
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [.SELECT permission,seen_flag,answered_flag,deleted_flag,flagged_flag,recent_flag,draft_flag FROM mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '1']
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [.SELECT message_idnr, seen_flag, recent_flag FROM messages WHERE mailbox_idnr = '1' AND status < 2 AND unique_id != '' ORDER BY message_idnr ASC]
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [SELECT MAX(message_idnr) FROM messages WHERE unique_id != '']
Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): line read for PID 1043
Oct 9 19:58:14 safron dbmail/imap4d[1043]: COMMAND: [a0014 EXPUNGE]
Oct 9 19:58:14 safron dbmail/imap4d[1043]: IMAPClientHandler(): Executing command expunge...
Oct 9 19:58:14 safron dbmail/imap4d[1043]: dbmysql.c,db_query: executing query [.SELECT message_idnr FROM messages WHERE mailbox_idnr = '1' AND deleted_flag='1' AND status<'2' ORDER BY message_idnr DESC]
Oct 9 19:58:14 safron dbmail/imap4d[1043]: ChildSighandler(): got signal [11]
Oct 9 19:58:14 safron dbmail/imap4d[1043]: ChildSighandler(): cannot ignore this. Terminating
Oct 9 19:58:14 safron dbmail/imap4d[935]: ParentSigHandler(): got signal [17]
Oct 9 19:58:14 safron dbmail/imap4d[935]: StartServer(): child [1043] has exited
Oct 9 19:58:14 safron dbmail/imap4d[935]: StartServer(): creating new child
Oct 9 19:58:14 safron dbmail/imap4d[1190]: CreateChild(): signal handler placed, going to perform task now
Oct 9 19:58:14 safron dbmail/imap4d[1190]: PerformChildTask(): waiting for connection
Re: 2.0 expunge bug [ In reply to ]
On Friday, Oct 10, 2003, at 05:14 Europe/Amsterdam, Christian G. Warden
wrote:

> If I expunge more than one message at a time, dbmail-imapd crashes.
> It works fine one at a time. I'm running the debian package
> dbmail-mysql
> 2.0.20031008-1.
>
> xn
> [snip dbmail log]

thanks. found & fixed the bug. New version in CVS does not segfault
(not at
this place anyway).

quite a stupid error anyway:

My code used *msg_idnrs[i] to reference the newly created array of
message ids. This of course only works for the first (i=0) element. The
correct syntax is:
(*msg_idnrs)[i]

Ilja