gtkpod segfaults when attempting to display songs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
GLib |
Fix Released
|
Unknown
|
|||
glib2.0 (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Mantic |
Triaged
|
High
|
Unassigned | ||
gtkpod (Ubuntu) |
Won't Fix
|
Undecided
|
Unassigned | ||
Mantic |
Incomplete
|
Undecided
|
Unassigned |
Bug Description
Open gtkpod, and select your ipod from the list. If it has more than one screenfull of songs to display in the list, gtkpod will immediately segfault.
I haven't found a workaround yet.
Broken on Mantic, works on Lunar.
Thread 1 "gtkpod" received signal SIGSEGV, Segmentation fault.
__GI___wcsxfrm_l (dest=0x0, src=0x0, n=0, l=0x7ffff6fff5a0 <_nl_global_
685 ../string/
(gdb) bt
#0 __GI___wcsxfrm_l (dest=0x0, src=0x0, n=0, l=0x7ffff6fff5a0 <_nl_global_
#1 0x00007ffff70c5a5e in g_utf8_collate_key () at /lib/x86_
#2 0x00007ffff7f852ec in fuzzy_skip_prefix () at /lib/x86_
#3 0x00007fffa80980ca in ??? () at /usr/lib/
#4 0x00007fffa80997fd in normal_
#5 0x00007fffa8099526 in normal_
#6 0x00007fffa809f196 in sorttab_
#7 0x00007ffff718d130 in g_closure_invoke () at /lib/x86_
#8 0x00007ffff71ba4ac in ??? () at /lib/x86_
#9 0x00007ffff71ab9b1 in ??? () at /lib/x86_
#10 0x00007ffff71abbd6 in g_signal_
#11 0x00007ffff71abc93 in g_signal_emit () at /lib/x86_
#12 0x00007ffff7f67e4b in gtkpod_
#13 0x00007fffa807cce0 in ??? () at /usr/lib/
#14 0x00007ffff708ba11 in ??? () at /lib/x86_
#15 0x00007ffff70e746f in ??? () at /lib/x86_
#16 0x00007ffff708c46f in g_main_loop_run () at /lib/x86_
#17 0x00007ffff77f61ed in gtk_main () at /lib/x86_
#18 0x000055555555ea1f in main ()
description: | updated |
Changed in glib2.0 (Ubuntu Noble): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in glib2.0 (Ubuntu Mantic): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in glib: | |
status: | Unknown → New |
Changed in glib: | |
status: | New → Fix Released |
Okay, so fuzzy_skip_prefix() in libgtkpod calls g_utf8_ collate_ key() twice in a loop, once with len=3 and then once with len=2.
I found this by patching fuzzy_skip_prefix() like so:
libgtkpod/misc.c
458 const gchar * prefix( const gchar *name) { casefold( name, -1); val_if_ fail (csfk, 0); collate_ key(cleanStr, csfk->length);
459 fuzzy_skip_
460 const gchar *result = name;
461 const GList *gl;
462 gchar *cleanStr;
...
470 cleanStr = g_utf8_
471 for (gl = csfk_list; gl; gl = g_list_next(gl)) {
472 struct csfk *csfk = gl->data;
473 gchar *tempStr;
474
475 g_return_
+476 fprintf(stderr, "Song name: %s length: %d\n", cleanStr, csfk->length);
477 tempStr = g_utf8_
...
I get output like this:
... locale> ) at ../string/ strxfrm_ l.c:685 strxfrm_ l.c: No such file or directory. locale> ) at ../string/ strxfrm_ l.c:685 64-linux- gnu/libglib- 2.0.so. 0 64-linux- gnu/libgtkpod. so.1
Song name: fórmula, vol. 2 (deluxe edition) length: 3
Song name: fórmula, vol. 2 (deluxe edition) length: 2
Thread 1 "gtkpod" received signal SIGSEGV, Segmentation fault.
__GI___wcsxfrm_l (dest=0x0, src=0x0, n=0, l=0x7ffff6fff5a0 <_nl_global_
685 ../string/
(gdb) bt
#0 __GI___wcsxfrm_l (dest=0x0, src=0x0, n=0, l=0x7ffff6fff5a0 <_nl_global_
#1 0x00007ffff70c5a5e in g_utf8_collate_key () at /lib/x86_
#2 0x00007ffff7f82c5a in fuzzy_skip_prefix () at /lib/x86_
It seems to not like special characters, in this case, the ó.
I also looked on the Arch Linux AUR page, and it seems others have also noticed that special characters are breaking them too.
https:/ /aur.archlinux. org/packages/ gtkpod# comment- 936852