On Wed, May 16, 2007, Peter Rabbitson <[EMAIL PROTECTED]> said:

> Leif Jackson wrote:
>> Peter,
>> 
>> On second look please test this patch against rev 2579 vanila:
>> Index: dbmail-mailbox.c
>> ===================================================================
>> --- dbmail-mailbox.c    (revision 2579)
>> +++ dbmail-mailbox.c    (working copy)
>> @@ -1313,7 +1313,7 @@
>> 
>> GTree * dbmail_mailbox_get_set(struct DbmailMailbox *self, const char
>> *set, gboolean uid)
>> {
>> -       GList *ids = NULL, *sets = NULL;
>> +       GList *topids, *ids = NULL, *sets = NULL;
>>        GString *t;
>>        char *rest;
>>        u64_t i, l, r, lo = 0, hi = 0;
>> @@ -1330,12 +1330,13 @@
>>        TRACE(TRACE_DEBUG,"[%s] uid [%d]", set, uid);
>> 
>>        if (uid) {
>> -               ids = g_tree_keys(self->ids);
>> -               ids = g_list_last(ids);
>> +               topids = g_tree_keys(self->ids);
>> +               ids = g_list_last(topids);
>>                hi = *((u64_t *)ids->data);
>> -               ids = g_list_first(ids);
>> +               ids = g_list_first(topids);
>>                lo = *((u64_t *)ids->data);
>> -               g_list_free(g_list_first(ids));
>> +               //g_list_free(g_list_first(ids));
>> +               g_list_free(topids);
>>        } else {
>>                lo = 1;
>>                hi = g_tree_nnodes(self->ids);
>> 
>> 
>> I think it was cause you tried to use my patch from the old code and
>> Paul's changes might have not helped. let me know
>> 
> 
> Sigh... still same. Here is the relevant part:
> 
> ==5570== 71,330,912 bytes in 287,652 blocks are still reachable in loss
> record 26 of 26
> 
> ==5570==    at 0x40226DB: memalign (vg_replace_malloc.c:332)
> 
> 
> ==5570==    by 0x4022735: posix_memalign (vg_replace_malloc.c:425)
> 
> 
> ==5570==    by 0x415E0A3: (within /usr/lib/libglib-2.0.so.0.1200.12)
> 
> 
> ==5570==    by 0x415EAA3: g_slice_alloc (in
> /usr/lib/libglib-2.0.so.0.1200.12)
> 
> ==5570==    by 0x4145725: g_list_prepend (in
> /usr/lib/libglib-2.0.so.0.1200.12)
> 
> ==5570==    by 0x4140AF7: (within /usr/lib/libglib-2.0.so.0.1200.12)
> 
> 
> ==5570==    by 0x4140B49: g_key_file_new (in
> /usr/lib/libglib-2.0.so.0.1200.12)
> 
> ==5570==    by 0x41C5B8C: config_read (config.c:46)
> 
> 
> ==5570==    by 0x41DEE3B: DoConfig (serverparent.c:233)
> 
> 
> ==5570==    by 0x41E02AB: serverparent_getopt (serverparent.c:144)
> 
> 
> ==5570==    by 0x8052435: main (imapd.c:45)
> 
> 
> ==5570==
> 
> 
> 
> Let me know if you need the full logs as before. Off to bed now,
> hopefully we can work on this further tomorrow.
> 
> Thank you all for the effort!

This might sound stupid, but is your dbmail.conf unusually large? Like
maybe some filesystem corruption concatenated it together with a 71MB file
from someplace else?

I can't imagine that g_key_file_new is allocating such a large slab; I
assume that this is just the first function to request the slab, but you
did set the environment variables which turn off the slab allocator,
right?

Aaron
_______________________________________________
Dbmail-dev mailing list
Dbmail-dev@dbmail.org
http://twister.fastxs.net/mailman/listinfo/dbmail-dev

Reply via email to