Package: rhythmbox Version: 0.9.3.1-1 Severity: normal Tags: patch If you have a song in your list entitled 'Never', attempts to use incremental search will crash when it passes over this file (the search string is irrelevant, just the entries traversed by the search code).
Steps to reproduce the crash: 1. Add a song whose title metadata is "Never" (exactly) to your library 2. In the library view, starting from the first song, try to incremental-search past the newly-added song (typing a number of 'z's works for me) 3. It will crash I can reproduce this problem consistently (as long as a song entitled "Never" is in my playlist). I filed this against upstream, and they had already fixed it in the next version. - http://bugzilla.gnome.org/show_bug.cgi?id=340854 Since unstable is still on 0.9.3, I figure a vendor patch may alleviate this in the mean time. The relevant portion of the stack trace is: #3 <signal handler called> #4 0xa700a6e2 in strstr () from /lib/tls/i686/cmov/libc.so.6 #5 0x080d8335 in type_ahead_search_func (model=0x84a2150, column=1, key=0x87c7f58 "zzz", iter=0xaf86a6f8, search_data=0x0) at rb-entry-view.c:201 #6 0xa7699421 in gtk_tree_view_set_search_equal_func () from /usr/lib/libgtk-x11-2.0.so.0 #7 0xa7699bb1 in gtk_tree_view_set_search_equal_func () from /usr/lib/libgtk-x11-2.0.so.0 #8 0xa71daa2b in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0 The whole thing is 64 frames and is mostly event handler goodness. Details are in the bug I linked to. It boils down to passing a null to strstr: rb_refstring_get_folded(entry->title) returns null. The flaw is exposed in widgets/rb-entry-view.c (type_ahead_search_func). It really occurs in rhythmdb/rb-refstring.c (rb_refstring_new_full). -- System Information: Debian Release: testing/unstable APT prefers unstable APT policy: (500, 'unstable'), (500, 'stable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.16-1-686 Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C) Versions of packages rhythmbox depends on: ii dbus 0.61-5 simple interprocess messaging syst ii gconf2 2.14.0-1 GNOME configuration database syste ii gstreamer0.10-alsa [gstrea 0.10.6-1 GStreamer plugin for ALSA ii gstreamer0.10-gnomevfs 0.10.6-1 GStreamer plugin for GnomeVFS ii gstreamer0.10-plugins-base 0.10.6-1 GStreamer plugins from the "base" ii gstreamer0.10-plugins-good 0.10.2-1 GStreamer plugins from the "good" ii gstreamer0.10-plugins-ugly 0.10.3-1 GStreamer plugins from the "ugly" ii libart-2.0-2 2.3.17-1 Library of functions for 2D graphi ii libatk1.0-0 1.11.4-2 The ATK accessibility toolkit ii libaudiofile0 0.2.6-6 Open-source version of SGI's audio ii libavahi-client3 0.6.9-8+b1 Avahi client library ii libavahi-common3 0.6.9-8+b1 Avahi common library ii libavahi-glib1 0.6.9-8+b1 Avahi glib integration library ii libbonobo2-0 2.14.0-1 Bonobo CORBA interfaces library ii libbonoboui2-0 2.14.0-2 The Bonobo UI library ii libc6 2.3.6-7 GNU C Library: Shared libraries ii libcairo2 1.0.4-2 The Cairo 2D vector graphics libra ii libdbus-1-2 0.61-5 simple interprocess messaging syst ii libdbus-glib-1-2 0.61-5 simple interprocess messaging syst ii libesd0 0.2.36-3 Enlightened Sound Daemon - Shared ii libexpat1 1.95.8-3.2 XML parsing C library - runtime li ii libfontconfig1 2.3.2-5.1 generic font configuration library ii libfreetype6 2.1.10-3 FreeType 2 font engine, shared lib ii libgconf2-4 2.14.0-1 GNOME configuration database syste ii libgcrypt11 1.2.2-1 LGPL Crypto library - runtime libr ii libglade2-0 1:2.5.1-2 library to load .glade files at ru ii libglib2.0-0 2.10.2-2 The GLib library of C routines ii libgnome-keyring0 0.4.9-1 GNOME keyring services library ii libgnome2-0 2.14.1-1 The GNOME 2 library - runtime file ii libgnomecanvas2-0 2.14.0-2 A powerful object-oriented display ii libgnomeui-0 2.14.1-1 The GNOME 2 libraries (User Interf ii libgnomevfs2-0 2.14.1-1 GNOME virtual file-system (runtime ii libgnutls13 1.3.5-1+b1 the GNU TLS library - runtime libr ii libgpg-error0 1.2-1 library for common error values an ii libgpod0 0.3.2-1 a library to read and write songs ii libgstreamer0.10-0 0.10.5-1 Core GStreamer libraries and eleme ii libgtk2.0-0 2.8.17-2 The GTK+ graphical user interface ii libhal1 0.5.7-2 Hardware Abstraction Layer - share ii libice6 1:1.0.0-3 X11 Inter-Client Exchange library ii libjpeg62 6b-12 The Independent JPEG Group's JPEG ii libmusicbrainz4c2a 2.1.2-4 Second generation incarnation of t ii libnautilus-burn2 2.12.3-2 Nautilus Burn Library - runtime ve ii libnotify1 0.3.2-4 sends desktop notifications to a n ii liborbit2 1:2.14.0-1 libraries for ORBit2 - a CORBA ORB ii libpango1.0-0 1.12.1-2 Layout and rendering of internatio ii libpng12-0 1.2.8rel-5.1 PNG library - runtime ii libpopt0 1.7-5 lib for parsing cmdline parameters ii libsm6 1:1.0.0-4 X11 Session Management library ii libsoup2.2-8 2.2.92-1 an HTTP library implementation in ii libtasn1-2 1:0.2.17-2 Manage ASN.1 structures (runtime) ii libtotem-plparser0 1.2.1-4 Totem Playlist Parser library - ru ii libx11-6 2:1.0.0-6 X11 client-side library ii libxcursor1 1.1.5.2-5 X cursor management library ii libxext6 1:1.0.0-4 X11 miscellaneous extension librar ii libxfixes3 1:3.0.1.2-4 X11 miscellaneous 'fixes' extensio ii libxi6 1:1.0.0-5 X11 Input extension library ii libxinerama1 1:1.0.1-4 X11 Xinerama extension library ii libxml2 2.6.24.dfsg-1 GNOME XML library ii libxrandr2 2:1.1.0.2-4 X11 RandR extension library ii libxrender1 1:0.9.0.2-4 X Rendering Extension client libra ii zlib1g 1:1.2.3-11 compression library - runtime Versions of packages rhythmbox recommends: ii avahi-daemon 0.6.9-8+b1 Avahi mDNS/DNS-SD daemon ii scrollkeeper 0.3.14-11 A free electronic cataloging syste ii yelp 2.14.1-1 Help browser for GNOME 2 -- no debconf information
diff -ur rhythmbox-0.9.3.1/rhythmdb/rb-refstring.c rhythmbox-0.9.3.1.01/rhythmdb/rb-refstring.c --- rhythmbox-0.9.3.1/rhythmdb/rb-refstring.c 2005-10-29 04:03:09.000000000 -0400 +++ rhythmbox-0.9.3.1.01/rhythmdb/rb-refstring.c 2006-05-06 14:39:06.000000000 -0400 @@ -63,6 +63,12 @@ if (ret) { rb_refstring_ref (ret); + if (compute_sortdata && ret->folded == NULL) { + /* A previously-internalized string has been used + * somewhere else that does have a sorting use */ + ret->folded = rb_search_fold (init); + ret->sortkey = rb_utf8_collate_key_for_filename (ret->folded, -1); + } return ret; }