Ops, still has the problem, check: [New Thread 0xaecffb90 (LWP 19496)] [New Thread 0xae4ffb90 (LWP 19497)] *** glibc detected *** /usr/local/sbin/dbmail-imapd: free(): invalid pointer: 0x0805cca0 *** ======= Backtrace: ========= /lib/libc.so.6[0xb7c0cac5] /lib/libc.so.6(cfree+0x9c)[0xb7c0e37c] /usr/lib/libglib-2.0.so.0(g_free+0x36)[0xb7e71796] /usr/local/sbin/dbmail-imapd(imap_idle_loop+0x180)[0x8054090] /usr/local/sbin/dbmail-imapd(_ic_idle_enter+0xc7)[0x8054187] /usr/local/lib/dbmail/libdbmail.so.0[0xb7d2085c] /usr/lib/libglib-2.0.so.0[0xb7e94b96] /usr/lib/libglib-2.0.so.0[0xb7e9354f] /lib/libpthread.so.0[0xb7b8ff20] /lib/libc.so.6(clone+0x5e)[0xb7c6e3de] ======= Memory map: ======== 08048000-08062000 r-xp 00000000 09:00 14684 /usr/local/sbin/dbmail-imapd 08062000-08063000 rw-p 00019000 09:00 14684 /usr/local/sbin/dbmail-imapd 08063000-08db4000 rw-p 00000000 00:00 0 [heap]
(gdb) f 5 #5 0xb7e71796 in g_free () from /usr/lib/libglib-2.0.so.0 (gdb) f 6 #6 0x08054090 in imap_idle_loop (self=0x0, timeout=30) at imapcommands.c:1089 1089 g_free(D->data); (gdb) f 7 #7 0x08054187 in _ic_idle_enter (D=0x8d127c0) at imapcommands.c:1133 1133 if ((t = imap_idle_loop(self, idle_timeout))) { (gdb) f 8 #8 0xb7d2085c in dm_thread_dispatch (data=0x8d127c0, user_data=0x0) at server.c:152 152 D->cb_enter(D); (gdb) f 9 #9 0xb7e94b96 in ?? () from /usr/lib/libglib-2.0.so.0 (gdb) f 10 I added the IF you suggested, and and on line 1089 of imapcommands.c I have: -- g_free(D->data); -- Part of the code before and after: 1084- dm_thread_data *D = (gpointer)data; 1085- message = (char *)D->data; 1086- if (strlen(message) > 4 && strncasecmp(message,"DONE",4) 1087- ==0) { 1088- if (D != NULL) { 1089- g_free(D->data); 1090- g_free(D); 1091-} 1092- 1093- return 0; 1094- } else if (strlen(message) > 0) { _______________________________________________ Dbmail-dev mailing list Dbmail-dev@dbmail.org http://mailman.fastxs.nl/cgi-bin/mailman/listinfo/dbmail-dev