GNOME Bugzilla – Bug 403442
Rhythmbox assertion failure parsing rhythmdb.xml file
Last modified: 2007-02-02 10:25:32 UTC
What were you doing when the application crashed? Starting rhythmbox using an existing configuration. This particular rhythmdb.xml file causes rhythmbox to crash. If I remove the .gnome2/rhytmbox/ (and .gconf/apps/rhythmbox/) directories then it builds a rhythmdb.xml file that is okay. I have the rhythmbox-debuginfo package installed, but cannot execute the /usr/lib/debug/usr/bin/rhythmbox.debug file. Distribution: Fedora Core release 6 (Zod) Gnome Release: 2.16.0 2006-09-04 (Red Hat, Inc) BugBuddy Version: 2.16.0 System: Linux 2.6.19-1.2895.fc6 #1 SMP Wed Jan 10 18:50:56 EST 2007 x86_64 X Vendor: The X.Org Foundation X Vendor Release: 70101000 Selinux: No Accessibility: Disabled Memory status: size: 423034880 vsize: 423034880 resident: 17993728 share: 11743232 rss: 17993728 rss_rlim: -1 CPU usage: start_time: 1170385602 rtime: 26 utime: 23 stime: 3 cutime:1 cstime: 0 timeout: 0 it_real_value: 0 frequency: 100 Backtrace was generated from '/usr/bin/rhythmbox' Using host libthread_db library "/lib64/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread 46912496387072 (LWP 30302)] [New Thread 1084229952 (LWP 30306)] 0x000000369c4c4a36 in poll () from /lib64/libc.so.6
+ Trace 107282
Thread 2 (Thread 1084229952 (LWP 30306))
I started rhythmbox from a shell so I could see any messages it output ------ start of terminal output (stdout&stderr) ------- RhythmDB-ERROR **: file rhythmdb-tree.c: line 248 (rhythmdb_tree_parser_start_element): should not be reached aborting... ** (bug-buddy:30308): WARNING **: Couldn't load icon for Open Folder ------ snip ------ I've made the good and bad files available on http://www.ottix.com/~matthew/rhythmbox/
*** Bug 403434 has been marked as a duplicate of this bug. ***
From diffing the good vs. bad rhythmdb.xml files my guess is that the failing assertion occurs because there are empty mb-trackid elements. <mb-trackid></mb-trackid> It seems to me that the empty mb-trackid element should not be created unless the MusicBrainz Track ID is present.
What version of Rhythmbox is this with? In current SVN at least, there are two assertions in the function: the first is that the <rhythmdb> tag has a "version" attribute, the second is that <entry> tags have a type.
$ rhythmbox --version Gnome rhythmbox 0.9.5 $ rpm -q rhythmbox rhythmbox-0.9.5-8.fc6 I've noticed that the two rhythmdb.xml files have different version numbers. The one that fails is version 1.3, so my guess is that it was produced by the newer version (rhythmbox-0.9.7-1.fc6.i386) that is installed on an ARCH=i386 machine. <?xml version="1.0" standalone="yes"?> <rhythmdb version="1.3"> <entry type="song"> With the correct version of the libxml2-debuginfo package the stack trace shows that it is parsing the rhythmdb element. My guess is that there is a assertion for the version number of the file <= 1.2 and so it dies. IMHO any assertion error while parsing the rhythmdb.xml file should display a "DB is corrupted or the wrong version: what do you want to do? (replace or exit)" dialogue.
+ Trace 107327
I installed the latest version of rhythmbox and the assertion failure went away. The priority should be lowered to normal.
Handling databases from the future is a known issue, and is bug 350304. Newer versions of Rhythmbox still have some issues with future DBs, but handle it a lot better, doing basically what you suggested. *** This bug has been marked as a duplicate of 350304 ***