From fef46653b283686daee0ba3551abb3d19dab884d Mon Sep 17 00:00:00 2001 From: marcus Date: Sun, 19 Sep 2004 20:33:22 +0000 Subject: Add a patch to increase the thread stack size to 1 MB for all major Evolution operations. This is known to fix crashes with large mailboxes. git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@2871 df743ca5-7f9a-e211-a948-0013205c9059 --- mail/evolution/Makefile | 1 + mail/evolution/files/patch-e-util_e-msgport.c | 47 +++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 mail/evolution/files/patch-e-util_e-msgport.c (limited to 'mail/evolution') diff --git a/mail/evolution/Makefile b/mail/evolution/Makefile index 819138bbc..a80124927 100644 --- a/mail/evolution/Makefile +++ b/mail/evolution/Makefile @@ -7,6 +7,7 @@ PORTNAME= evolution PORTVERSION= 2.0.0 +PORTREVISION= 1 CATEGORIES= mail gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= sources/${PORTNAME}/2.0 diff --git a/mail/evolution/files/patch-e-util_e-msgport.c b/mail/evolution/files/patch-e-util_e-msgport.c new file mode 100644 index 000000000..85bd48595 --- /dev/null +++ b/mail/evolution/files/patch-e-util_e-msgport.c @@ -0,0 +1,47 @@ +--- e-util/e-msgport.c.orig Wed Jan 14 00:04:04 2004 ++++ e-util/e-msgport.c Sun Sep 19 14:01:25 2004 +@@ -921,9 +921,13 @@ + void e_thread_put(EThread *e, EMsg *msg) + { + pthread_t id; ++ pthread_attr_t attr; + EMsg *dmsg = NULL; + + pthread_mutex_lock(&e->mutex); ++ pthread_attr_init(&attr); ++ /* Give us a 1 MB thread stack size. */ ++ pthread_attr_setstacksize(&attr, 0x100000); + + /* the caller forgot to tell us what to do, well, we can't do anything can we */ + if (e->received == NULL) { +@@ -962,13 +966,14 @@ + e_msgport_put(e->server_port, msg); + if (e->waiting == 0 + && g_list_length(e->id_list) < e->queue_limit +- && pthread_create(&id, NULL, thread_dispatch, e) == 0) { ++ && pthread_create(&id, &attr, thread_dispatch, e) == 0) { + struct _thread_info *info = g_malloc0(sizeof(*info)); + t(printf("created NEW thread %ld\n", id)); + info->id = id; + info->busy = TRUE; + e->id_list = g_list_append(e->id_list, info); + } ++ pthread_attr_destroy(&attr); + pthread_mutex_unlock(&e->mutex); + return; + } +@@ -977,12 +982,13 @@ + if (e->id == E_THREAD_NONE) { + int err; + +- if ((err = pthread_create(&e->id, NULL, thread_dispatch, e)) != 0) { ++ if ((err = pthread_create(&e->id, &attr, thread_dispatch, e)) != 0) { + g_warning("Could not create dispatcher thread, message queued?: %s", strerror(err)); + e->id = E_THREAD_NONE; + } + } + ++ pthread_attr_destroy(&attr); + pthread_mutex_unlock(&e->mutex); + + if (dmsg) { -- cgit v1.2.3