Version: 1.2 beta 4 (using KDE KDE 3.2.1) Installed from: Mandrake RPMs Compiler: gcc 3.3.2 OS: Linux I built amarok 1.2 beta 4 from source on Mandrake 10.0 official. If I attempt to View/Edit Meta Information for any file, amarok 1.2 beta 4 crashes. This may be related to 92551, but I can't easily upgrade to KDE 3.3 to verify. System: Mandrake 10.0 official gcc 3.4.2 taglib 1.3.1 (release 1.101mdk) Stdout/stderr shows the following immediately before the crash: [setting tty state failed in terminal_inferior: Input/output error] Here's the full backtrace from gdb: #0 0x41796aa1 in TagLib::String::String(TagLib::String const&) () from /usr/lib/libtag.so.1 #1 0x080f59ef in std::list<TagLib::String, std::allocator<TagLib::String> >::_M_create_node(TagLib::String const&) () #2 0x080f599a in std::list<TagLib::String, std::allocator<TagLib::String> >::insert(std::_List_iterator<TagLib::String, TagLib::String&, TagLib::String*>, TagLib::String const&) () #3 0x080f5927 in void std::list<TagLib::String, std::allocator<TagLib::String> >::_M_insert_dispatch<std::_List_iterato r<TagLib::String, TagLib::String const&, TagLib::String const*> >(std::_List_iterator<TagLib::String, TagLib::String&, TagLib::String*>, std::_List_iterator<TagLib::String, TagLib::String const&, TagLib::String const*>, std::_List_iterator<TagLib::String, TagLib::String const&, TagLib::String const*>, __false_type) () #4 0x080f5896 in void std::list<TagLib::String, std::allocator<TagLib::String> >::insert<std::_List_iterator<TagLib: :String, TagLib::String const&, TagLib::String const*> >(std::_List_iterator<TagLib::String, TagLib::String&, TagLib::String*>, std::_List_iterator<TagLib::String, TagLib::String const&, TagLib::String const*>, std::_List_iterator<TagLib::String, TagLib::String const&, TagLib::String const*>) () #5 0x080f57af in std::list<TagLib::String, std::allocator<TagLib::String> >::list(std::list<TagLib::String, std::allocator<TagLib::String> > const&) () #6 0x080f56be in TagLib::List<TagLib::String>::detach() () #7 0x080f5604 in TagLib::List<TagLib::String>::begin() () #8 0x080f537f in MetaBundle::genreList() () #9 0x081510f4 in TagDialog::init() () #10 0x081509cd in TagDialog::TagDialog(KURL const&, QWidget*) () #11 0x080976b5 in CollectionView::showTrackInfo() () #12 0x08098cbf in CollectionView::qt_invoke(int, QUObject*) () #13 0x410db4a2 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt3/lib/libqt-mt.so.3 #14 0x40ef575e in ?? () from /usr/lib/qt3/lib/libqt-mt.so.3 #15 0x02eb50e6 in ?? () #16 0x40e80914 in ?? () from /usr/lib/qt3/lib/libqt-mt.so.3 #17 0x083f7400 in ?? () #18 0xbfffdb38 in ?? () #19 0xbfffdb24 in ?? () #20 0x08470090 in ?? () #21 0x4106edbc in QUType_QVariant::set(QUObject*, QVariant const&) () from /usr/lib/qt3/lib/libqt-mt.so.3 #22 0x084ae3d8 in ?? () #23 0x0848c150 in ?? () #24 0x00000008 in ?? () #25 0x41523998 in ?? () from /usr/lib/qt3/lib/libqt-mt.so.3 #26 0xbfffdb38 in ?? () #27 0x0848c128 in ?? () #28 0x08470090 in ?? () #29 0x413fdaa6 in QSignal::signal(QVariant const&) () from /usr/lib/qt3/lib/libqt-mt.so.3 #30 0x0848c128 in ?? () #31 0x08470090 in ?? () #32 0xbfffdb10 in ?? () #33 0x413fd8dc in QSignal::staticMetaObject() () from /usr/lib/qt3/lib/libqt-mt.so.3 #34 0x41503cc0 in vtable for QGArray () from /usr/lib/qt3/lib/libqt-mt.so.3
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!