Crash under Fedora 17

Dirk Hohndel dirk at hohndel.org
Sun Oct 7 04:53:07 PDT 2012


Miika Turkia <miika.turkia at gmail.com> writes:

> On Sun, Oct 7, 2012 at 11:27 AM, Dirk Hohndel <dirk at hohndel.org> wrote:
>> Benjamin <nystire at gmail.com> writes:
>>
>>> Nothing. I tried it on two other computers. Worked perfectly. I think I may
>>> need to reinstall my laptop. Maybe I screwed something up during the
>>> upgrade from F16 to F17.
>>
>> Ok. Thanks for reporting back. I'll consider this one "unconfirmed" for
>> now.
>>
>> I'll tag 2.0 in the next few minutes and push things out.
>
> Aargh, bad news. I just got a bit of inspiration to get back to my
> real dive log after seeing the tagging message. And of course there is
> a crash. Reproducible with some test dives also. (Ubuntu 64 bit)
>
> $ gconftool-2 --recursive-unset /apps/subsurface # clear the configurations
> $ ./subsurface dives/test1*.xml
> - Go to File->Preferences
> - Toggle "Automaticall group dives in trips"
> - Hit "OK"
>
> #0  0x00007ffff5623445 in __GI_raise (sig=<optimised out>) at
> ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #1  0x00007ffff5626bab in __GI_abort () at abort.c:91
> #2  0x00007ffff566149e in __libc_message (do_abort=2,
> fmt=0x7ffff576b108 "*** glibc detected *** %s: %s: 0x%s ***\n") at
> ../sysdeps/unix/sysv/linux/libc_fatal.c:201
> #3  0x00007ffff566bc96 in malloc_printerr (action=3,
> str=0x7ffff576b1f8 "munmap_chunk(): invalid pointer", ptr=<optimised
> out>) at malloc.c:5007
> #4  0x000000000042b77a in preferences_dialog (w=0x750150, data=0x0) at
> gtk-gui.c:681

This makes perfect sense. I missed that when reviewing Lubomir's memory
leak patches...:

b272fb8c (Lubomir I. Ivanov        2012-10-04 23:52:09 +0300  680)              if (divelist_font)
b272fb8c (Lubomir I. Ivanov        2012-10-04 23:52:09 +0300  681)                      free((void *)divelist_font);

but if no font is set, this is what linux.c does:

void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar,
                GtkWidget *vbox, GtkUIManager *ui_manager)
{
        if (!divelist_font)
                divelist_font = DIVELIST_DEFAULT_FONT;

So we are handing a string literal to free. Not good.

MacOS does the same, so my guess is that Henrik has a font in his
config...

/D


More information about the subsurface mailing list