Re: balsa crashing a lot



Thanks a lot for the stack trace - can you please try the attached patch?

Pawel

On 02/26/2009 08:21:27 PM, Bruno Miguel wrote:
On Thursday 26 February 2009 19:17:23 Pawel Salek wrote:
> On 02/26/2009 08:15:42 PM, Bruno Miguel wrote:
> > ^C
> > Program received signal SIGINT, Interrupt.
> > [Switching to Thread 0xb68b4750 (LWP 2566)]
> > 0xb7f13424 in __kernel_vsyscall ()
>
> We are slowly getting there. Now, after pressing Ctrl-C and getting
> back to gdb prompt, can you please type "thread apply all where" and
> send us the output?
>
> Pawel

brunomiguel lunix-bruno:~/Desktop$ gdb balsa
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) run
Starting program: /usr/local/bin/balsa
[Thread debugging using libthread_db enabled]
** Message: init gpgme version 1.1.8
** Message: protocol OpenPGP: engine /usr/bin/gpg2 (home (null), version
2.0.9)
** Message: protocol CMS: engine /usr/bin/gpgsm (home (null), version 2.0.9)
[New Thread 0xb691a750 (LWP 2786)]
[New Thread 0xb6454b90 (LWP 2809)]
[Thread 0xb6454b90 (LWP 2809) exited]
[New Thread 0xb6454b90 (LWP 2812)]
Should the client side sorting code be sorry about your bandwidth usage?
^C
Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb691a750 (LWP 2786)]
0xb7f79424 in __kernel_vsyscall ()
(gdb) thread apply all where

Thread 3 (Thread 0xb6454b90 (LWP 2812)):
#0  0xb7f79424 in __kernel_vsyscall ()
#1 0xb7db5c99 in __lll_lock_wait () from /lib/i686/cmov/libpthread.so.0
#2  0xb7db10c4 in _L_lock_89 () from /lib/i686/cmov/libpthread.so.0
#3 0xb7db09f2 in pthread_mutex_lock () from /lib/i686/cmov/libpthread.so.0 #4 0x08118efd in imap_mbox_handle_fetch_set (handle=0x90c8020, set=0x9102290,
    cnt=288, ift=58) at imap-commands.c:1032
#5  0x0811910e in imap_mbox_sort_msgno_client (handle=0x90c8020,
    key=IMSO_DATE, ascending=1, msgno=0x9101a88, cnt=328)
    at imap-commands.c:1778
#6 0x081192e0 in imap_mbox_sort_filter (handle=0x90c8020, key=IMSO_DATE,
    ascending=1, filter=0x90e6f38) at imap-commands.c:1923
#7 0x080eeb6d in libbalsa_mailbox_imap_set_threading (mailbox=0x903a220,
    thread_type=LB_MAILBOX_THREADING_FLAT) at mailbox_imap.c:3054
#8 0x080e7f07 in lbm_set_threading (mailbox=0x903a220, thread_type=151814380)
    at mailbox.c:2067
#9  0x080e8361 in libbalsa_mailbox_set_threading (mailbox=0x903a220,
    thread_type=LB_MAILBOX_THREADING_FLAT) at mailbox.c:2087
#10 0x0809d456 in bw_real_open_mbnode (info=0x9047a20) at main-window.c:2289
#11 0xb7daf4c0 in start_thread () from /lib/i686/cmov/libpthread.so.0
#12 0xb6d176de in clone () from /lib/i686/cmov/libc.so.6

---Type <return> to continue, or q <return> to quit---
Thread 1 (Thread 0xb691a750 (LWP 2786)):
#0  0xb7f79424 in __kernel_vsyscall ()
#1 0xb7db5c99 in __lll_lock_wait () from /lib/i686/cmov/libpthread.so.0
#2  0xb7db10c4 in _L_lock_89 () from /lib/i686/cmov/libpthread.so.0
#3 0xb7db09f2 in pthread_mutex_lock () from /lib/i686/cmov/libpthread.so.0
#4  0x080e1a82 in libbalsa_threads_enter () at libbalsa.c:751
#5  0xb6fdcd38 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#6  0x00000001 in ?? ()
#7  0xbfc950b8 in ?? ()
#8  0xbfc95068 in ?? ()
#9  0xb6e472a0 in ?? () from /usr/lib/libglib-2.0.so.0
#10 0xb6e472a0 in ?? () from /usr/lib/libglib-2.0.so.0
#11 0xb6fdcd10 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#12 0xbfc950b8 in ?? ()
#13 0xb6dcdf68 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
Backtrace stopped: frame did not save the PC
(gdb) quit
The program is running.  Exit anyway? (y or n) y



Index: libbalsa/imap/imap-commands.c
===================================================================
--- libbalsa/imap/imap-commands.c	(revision 8085)
+++ libbalsa/imap/imap-commands.c	(working copy)
@@ -1013,9 +1013,10 @@
   return rc;
 }
 
-ImapResponse
-imap_mbox_handle_fetch_set(ImapMboxHandle* handle,
-                           unsigned *set, unsigned cnt, ImapFetchType ift)
+static ImapResponse
+imap_mbox_handle_fetch_set_unlocked(ImapMboxHandle* handle,
+				    unsigned *set, unsigned cnt,
+				    ImapFetchType ift)
 {
   gchar * seq;
   ImapResponse rc;
@@ -1033,15 +1034,24 @@
   if(seq) {
     const char* hdr[13];
     ic_construct_header_list(hdr, fd.fd.req_fetch_type);
-    HANDLE_LOCK(handle);
     rc = imap_mbox_handle_fetch(handle, seq, hdr);
     if(rc == IMR_OK) set_avail_headers(handle, seq, fd.fd.req_fetch_type);
-    HANDLE_UNLOCK(handle);
     g_free(seq);
   } else rc = IMR_OK;
   return rc;
 }
 
+ImapResponse
+imap_mbox_handle_fetch_set(ImapMboxHandle* handle,
+                           unsigned *set, unsigned cnt, ImapFetchType ift)
+{
+  ImapResponse rc;
+  HANDLE_LOCK(handle);
+  rc = imap_mbox_handle_fetch_set_unlocked(handle, set, cnt, ift);
+  HANDLE_UNLOCK(handle);
+  return rc;
+}
+
 static void
 write_nstring(unsigned seqno, ImapFetchBodyType body_type,
               const char *str, size_t len, void *fl)
@@ -1779,8 +1789,8 @@
     qsort(seqno_to_fetch, fetch_cnt, sizeof(unsigned), comp_unsigned);
     printf("Should the client side sorting code "
            "be sorry about your bandwidth usage?\n");
-    rc = imap_mbox_handle_fetch_set(handle, seqno_to_fetch,
-                                    fetch_cnt, fetch_type);
+    rc = imap_mbox_handle_fetch_set_unlocked(handle, seqno_to_fetch,
+					     fetch_cnt, fetch_type);
     if(rc != IMR_OK)
       return rc;
   }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]