Package: cyrus-replication-2.4
Version: 2.4.8-7
I'm testing cyrus 2.4.8 to upgrade our cyrus deployment. On various
mailboxes sync_client exits with the error:
Fatal error: Internal error: assertion failed: seen_db.c: 127:
*seendbptr == NULL
I can reproduce this error consistently by doing a test sync of my own
mailbox "sync_client -v -o -u stevenkurylo"
This is fixed upstream and I can confirm is resolves my problem:
http://git.cyrusimap.org/cyrus-imapd/commit/?id=5de9eee60d947243a4b4b2f4eccc63cff2771b30
http://git.cyrusimap.org/cyrus-imapd/commit/?id=9dacbfcd6ee077a850570508d0d97f30bfe96640
I've included a patch to the debian/patches directory for this fix.
Thank you.
diff -r 28ed9e107ab6 cyrus-imapd-sync_client-1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cyrus-imapd-sync_client-1 Wed May 18 09:26:29 2011 -0700
@@ -0,0 +1,19 @@
+From 9dacbfcd6ee077a850570508d0d97f30bfe96640 Mon Sep 17 00:00:00 2001
+From: Bron Gondwana <br...@opera.com>
+Date: Mon, 04 Apr 2011 04:42:42 +0000
+Subject: seen: and another site!
+
+---
+diff --git a/imap/sync_client.c b/imap/sync_client.c
+index a7fc12d..7aeee59 100644
+--- a/imap/sync_client.c
++++ b/imap/sync_client.c
+@@ -1884,7 +1884,7 @@ static int do_user_seen(const char *user, struct sync_seen_list *replica_seen)
+ {
+ int r;
+ struct sync_seen *mseen, *rseen;
+- struct seen *seendb;
++ struct seen *seendb = NULL;
+ struct sync_seen_list *list;
+
+ /* silently ignore errors */
diff -r 28ed9e107ab6 cyrus-imapd-sync_client-2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cyrus-imapd-sync_client-2 Wed May 18 09:26:29 2011 -0700
@@ -0,0 +1,33 @@
+From 5de9eee60d947243a4b4b2f4eccc63cff2771b30 Mon Sep 17 00:00:00 2001
+From: Bron Gondwana <br...@opera.com>
+Date: Thu, 31 Mar 2011 05:03:10 +0000
+Subject: seen: fix seen_db related crash
+
+---
+diff --git a/imap/sync_client.c b/imap/sync_client.c
+index d7e632c..a7fc12d 100644
+--- a/imap/sync_client.c
++++ b/imap/sync_client.c
+@@ -1434,7 +1434,7 @@ static int update_seen_work(const char *user, const char *uniqueid,
+ static int do_seen(char *user, char *uniqueid)
+ {
+ int r = 0;
+- struct seen *seendb;
++ struct seen *seendb = NULL;
+ struct seendata sd;
+
+ if (verbose)
+@@ -1448,12 +1448,8 @@ static int do_seen(char *user, char *uniqueid)
+ if (r) return 0;
+
+ r = seen_read(seendb, uniqueid, &sd);
+- if (r) {
+- seen_close(&seendb);
+- return 0;
+- }
+
+- r = update_seen_work(user, uniqueid, &sd);
++ if (!r) r = update_seen_work(user, uniqueid, &sd);
+
+ seen_close(&seendb);
+ seen_freedata(&sd);
diff -r 28ed9e107ab6 series
--- a/series Wed May 18 09:25:19 2011 -0700
+++ b/series Wed May 18 09:26:29 2011 -0700
@@ -29,4 +29,6 @@
cyrus-imapd-2.4.2-902-accept-invalid-from-header.patch
cyrus-imapd-2.4.2-903-normalize-authorization-id.patch
+cyrus-imapd-sync_client-1
+cyrus-imapd-sync_client-2
85-perl-imap-croak-FTBFS-fix.patch
86-fix_PATH_MAX_on_hurd.patch