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
[email protected]
http://mailman.fastxs.nl/cgi-bin/mailman/listinfo/dbmail-dev