Jorge Bastos wrote:
> 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
>
>   

Looks like you missed the 2nd if. Should be
if ()
{
    if () blah
    blah
}
return

-- 
Scanned for viruses and dangerous content by MailScanner

_______________________________________________
Dbmail-dev mailing list
Dbmail-dev@dbmail.org
http://mailman.fastxs.nl/cgi-bin/mailman/listinfo/dbmail-dev

Reply via email to