Re: [exim] upgrade to 4.50 problems

Pàgina inicial
Delete this message
Reply to this message
Autor: Alex Kiernan
Data:  
A: exim-users
Assumptes vells: Re: [exim] upgrade to 4.50 problems
Assumpte: Re: [exim] upgrade to 4.50 problems
On 3/7/05, Philip Hazel <ph10@???> wrote:
> On Fri, 4 Mar 2005 niles@??? wrote:
>
> > I removed the old hints file,
>
> All of them???
>
> > and did a queue delivery with debugging on.
>
> > Delivery address list:
> > niles@???
> > locking /var/spool/exim/db/retry.lockfile
> > locked /var/spool/exim/db/retry.lockfile
> > LOG: MAIN PANIC
> > queue run: process 27196 crashed with signal 11 while delivering
> > 1D7M3b-0006Ec-2F
>
> That really does look as though the crash has happened in the DB
> library, when trying to open the retry hints file (the one for which it
> has just created a lock). That's why I asked whether you are sure you
> deleted all the hints files, in particular, /var/spool/exim/db/retry*
>


If anything's trying to report a Berkeley error I'd guess the results
will be somewhat undefined as the prototype of the error reporting
function has changed in 4.3:

http://www.sleepycat.com/docs/ref/upgrade.4.3/err.html

I've attached (a compiled, but as yet untested) patch.

--
Alex Kiernan
diff -ur exim-4.51.orig/src/dbfn.c exim-4.51/src/dbfn.c
--- exim-4.51.orig/src/dbfn.c    2005-05-04 12:35:39.000000000 +0100
+++ exim-4.51/src/dbfn.c    2005-06-08 06:32:12.000000000 +0100
@@ -44,7 +44,11 @@


 #if defined(USE_DB) && defined(DB_VERSION_STRING)
 void
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)
+dbfn_bdb_error_callback(const DB_ENV *dbenv, const char *pfx, const char *msg)
+#else
 dbfn_bdb_error_callback(const char *pfx, char *msg)
+#endif
 {
 pfx = pfx;
 log_write(0, LOG_MAIN, "Berkeley DB error: %s", msg);
diff -ur exim-4.51.orig/src/dbfunctions.h exim-4.51/src/dbfunctions.h
--- exim-4.51.orig/src/dbfunctions.h    2005-05-04 12:35:39.000000000 +0100
+++ exim-4.51/src/dbfunctions.h    2005-06-08 06:26:16.000000000 +0100
@@ -24,7 +24,11 @@
 /* Berkeley DB uses a callback function to pass back error details. */


 #if defined(USE_DB) && defined(DB_VERSION_STRING)
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)
+void     dbfn_bdb_error_callback(const DB_ENV *, const char *, const char *);
+#else
 void     dbfn_bdb_error_callback(const char *, char *);
 #endif
+#endif


 /* End of dbfunctions.h */
diff -ur exim-4.51.orig/src/exim_dbmbuild.c exim-4.51/src/exim_dbmbuild.c
--- exim-4.51.orig/src/exim_dbmbuild.c    2005-05-04 12:35:39.000000000 +0100
+++ exim-4.51/src/exim_dbmbuild.c    2005-06-08 06:31:41.000000000 +0100
@@ -62,7 +62,11 @@


 #if defined(USE_DB) && defined(DB_VERSION_STRING)
 void
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)
+dbfn_bdb_error_callback(const DB_ENV *dbenv, const char *pfx, const char *msg)
+#else
 dbfn_bdb_error_callback(const char *pfx, char *msg)
+#endif
 {
 pfx = pfx;
 printf("Berkeley DB error: %s\n", msg);
diff -ur exim-4.51.orig/src/exim_dbutil.c exim-4.51/src/exim_dbutil.c
--- exim-4.51.orig/src/exim_dbutil.c    2005-05-04 12:35:39.000000000 +0100
+++ exim-4.51/src/exim_dbutil.c    2005-06-08 06:31:53.000000000 +0100
@@ -81,7 +81,11 @@


#if defined(USE_DB) && defined(DB_VERSION_STRING)
void
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)
+dbfn_bdb_error_callback(const DB_ENV *dbenv, const char *pfx, const char *msg)
+#else
dbfn_bdb_error_callback(const char *pfx, char *msg)
+#endif
{
pfx = pfx;
printf("Berkeley DB error: %s\n", msg);