Summary: | Crash in MetaBundle::genreList() | ||
---|---|---|---|
Product: | [Applications] amarok | Reporter: | Sean Laurent <sean> |
Component: | general | Assignee: | Amarok Developers <amarok-bugs-dist> |
Status: | RESOLVED WORKSFORME | ||
Severity: | crash | CC: | wheeler |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Mandrake RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Sean Laurent
2005-02-04 17:44:28 UTC
Scott, we've had a few of these now. Is it us or is it TagLib? Thanks. QStringList MetaBundle::genreList() //static { QStringList list; TagLib::StringList genres = TagLib::ID3v1::genreList(); for( TagLib::StringList::ConstIterator it = genres.begin(), end = genres.end(); it != end; ++it ) list += TStringToQString( (*it) ); list.sort(); return list; } Is this possibly being called by multiple threads simultaneously? We only make use of TagLib::ID3v1::genreList() in the GUI thread, and only in 2 places in amaroK. However, we write and read tags in other threads, so if TagLib uses this list internally it is possible something non-thread-safe is going on. Nope, this list isn't used internally. But I'm slow to call it a taglib bug as I use almost exactly the same code in JuK and haven't ever had a crash reported there -- and that code hasn't changed in years. TagLib::StringList genres = TagLib::ID3v1::genreList(); for(TagLib::StringList::ConstIterator it = genres.begin(); it != genres.end(); ++it) genreHash.insert(TStringToQString((*it))); Hmmm, I'll keep this stuff in mind, maybe we'll figure it out. Cheers Scott. GDB output: (no debugging symbols found) Using host libthread_db library "/lib/tls/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1244206752 (LWP 16331)] [New Thread -1255515216 (LWP 16363)] [Thread debugging using libthread_db enabled] [New Thread -1244206752 (LWP 16331)] [New Thread -1255515216 (LWP 16363)] [Thread debugging using libthread_db enabled] [New Thread -1244206752 (LWP 16331)] [New Thread -1255515216 (LWP 16363)] 0xffffe410 in ?? () #0 0xffffe410 in ?? () #1 0x0000001a in ?? () #2 0x0827c6cc in ?? () #3 0x0827c548 in ?? () #4 0xb6524861 in select () from /lib/tls/libc.so.6 #5 0xb6da3846 in QEventLoop::processEvents () from /usr/lib/qt3/lib/libqt-mt.so.3 #6 0xb72d2d3c in qt_wait_timer_max () from /usr/lib/qt3/lib/libqt-mt.so.3 #7 0x00000000 in ?? () #8 0xbffff370 in ?? () #9 0xbffff3d0 in ?? () #10 0xb64df3e6 in wcsncasecmp_l () from /lib/tls/libc.so.6 kdBacktrace(): Engine arts-engine Build date: Jan 31 2005 CC version: 3.4.3 (Mandrakelinux 10.2 3.4.3-3mdk) KDElibs: 3.3.2 taglib-1.3.1-3mdk Today I got a similar crash when trying to open the tag dialog. Here is the backtrace: #0 0x41830810 in TagLib::RefCounter::ref (this=0x0) at taglib.h:68 #1 0x4185b577 in String (this=0x82fb1b0, s=@0x8247cd0) at tstring.cpp:79 #2 0x0817d803 in TagLib::List<TagLib::String>::detach () #3 0x0817da68 in TagLib::List<TagLib::String>::begin () #4 0x0815d6c2 in MetaBundle::genreList () #5 0x0815d995 in TagDialog::init () #6 0x08162132 in TagDialog::TagDialog () ... I first got this crash with a non-debug amarokapp and a non-debug taglib 1.3.1 compiled with gcc 3.3.3. When trying debug-builds of amarokapp and taglib, it still crashed, but the stack was corrupted so I had to use a non-debug amarokapp to get the above backtrace. While crashing it several times i saw "this=0xff00" in frame #0 once (instead of "this=0x0"). After that I recompiled taglib with a gcc mainline snapshot from 2005-02-18, and the tag dialog worked properly, the crashes were completely gone. After reading Stefan's comment, I downloaded the latest version of taglib from CVS (2005-02-23). After jumping through a number of hoops to remove the existing Taglib installation that Mandrake provided, I managed to install from CVS. This seems to fix the problem for me. Very strange... I always used the released taglib 1.3.1 version, perhaps I didn't mention that clearly enough. What I took from CVS was a gcc snapshot (i.e. a development version of the compiler that will become gcc 4.0.0). I had it installed for other reasons, but I thought I could just give it a try here. This could be a GCC error because you are using a taglib package built for Mandrake 10.1 on a 10.0 install. You might want to try and rebuild taglib from source and then rebuild amarok again. or there are taglib 1.3.1 packages for mdk 10.0 here http://www.gkmweb.com/amarok/10.0/ is this crash still relevant? I have never experienced it. Closing due to lack of feedback and WORKSFORME! |