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

Reply via email to