After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 403442 - Rhythmbox assertion failure parsing rhythmdb.xml file
Rhythmbox assertion failure parsing rhythmdb.xml file
Status: RESOLVED DUPLICATE of bug 350304
Product: rhythmbox
Classification: Other
Component: general
unspecified
Other All
: High normal
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 403434 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2007-02-02 03:14 UTC by matthew
Modified: 2007-02-02 10:25 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16



Description matthew 2007-02-02 03:14:20 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

Thread 2 (Thread 1084229952 (LWP 30306))

  • #0 waitpid
    from /lib64/libpthread.so.0
  • #1 gnome_gtk_module_info_get
    from /usr/lib64/libgnomeui-2.so.0
  • #2 <signal handler called>
  • #3 raise
    from /lib64/libc.so.6
  • #4 abort
    from /lib64/libc.so.6
  • #5 g_logv
    from /lib64/libglib-2.0.so.0
  • #6 g_log
    from /lib64/libglib-2.0.so.0
  • #7 g_assert_warning
    from /lib64/libglib-2.0.so.0
  • #8 rhythmdb_tree_parser_start_element
    at rhythmdb-tree.c line 248
  • #9 xmlParseStartTag
    from /usr/lib64/libxml2.so.2
  • #10 xmlParseElement
    from /usr/lib64/libxml2.so.2
  • #11 xmlParseDocument
    from /usr/lib64/libxml2.so.2
  • #12 rhythmdb_tree_load
    at rhythmdb-tree.c line 476
  • #13 rhythmdb_load_thread_main
    at rhythmdb.c line 2173
  • #14 g_thread_create_full
    from /lib64/libglib-2.0.so.0
  • #15 start_thread
    from /lib64/libpthread.so.0
  • #16 clone
    from /lib64/libc.so.6
  • #17 ??

Comment 1 matthew 2007-02-02 03:52:17 UTC
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/
Comment 2 matthew 2007-02-02 03:53:55 UTC
*** Bug 403434 has been marked as a duplicate of this bug. ***
Comment 3 matthew 2007-02-02 04:16:49 UTC
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.
Comment 4 James "Doc" Livingston 2007-02-02 06:26:00 UTC
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.
Comment 5 matthew 2007-02-02 08:46:29 UTC
$ 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.

  • #7 g_assert_warning
    from /lib64/libglib-2.0.so.0
  • #8 rhythmdb_tree_parser_start_element
    at rhythmdb-tree.c line 248
  • #9 xmlParseStartTag__internal_alias
    at parser.c line 7235
  • #10 xmlParseElement__internal_alias
    at parser.c line 8542

Comment 6 matthew 2007-02-02 09:01:06 UTC
I installed the latest version of rhythmbox and the assertion failure went away.  The priority should be lowered to normal.
Comment 7 James "Doc" Livingston 2007-02-02 10:25:32 UTC
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 ***