Bug 197782

Summary: m4a files cause collection scan to freeze
Product: [Applications] amarok Reporter: Scott Fernandes <fernandess>
Component: generalAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED FIXED    
Severity: crash CC: fernandess, mitchell, richard.colley
Priority: NOR    
Version: 2.1.1   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Scott Fernandes 2009-06-24 23:22:44 UTC
Version:           2.1.1 (using KDE 4.2.90)
OS:                Linux
Installed from:    Ubuntu Packages

The collection scan will freeze once it hits a directory with m4a files. It will continue to eat up all system ram, as well as swap space (I have 6GB RAM & 6GB swap & amarok was using all of it). To ensure this was the problem, I excluded the folder with m4a's & the scan completed with no problems as usual. This will not cause the actual application to crash, but the whole OS chokes once all the ram & swap are being used.
Comment 1 Mikko C. 2009-06-25 08:19:35 UTC
it would be useful if you could upload one of these files somewhere.
Comment 2 Myriam Schweingruber 2009-06-25 14:54:33 UTC
FWIW, m4a is a proprietary file format that needs special codecs, could be a tag reading problem in that file format, and it can be DRM-encrypted which makes it unplayable elsewhere than on the original OS/install. Can you actually play these files from the Files browser?

On the scanning slowness: there has been a lot of work lately in trunk on the collection database, might well be solved in 2.2-SVN already
Comment 3 Jeff Mitchell 2009-06-25 15:11:28 UTC
Please ensure that you have taglib-extras (might be called libtag-extras or some such thing) version 0.1.4.  If not, bug your package manager to update -- it fixes some issues in MP4 handling that may be causing your troubles.

If this does not fix the problem, I'll need access to one of your files.
Comment 4 Richard Colley 2009-07-13 10:36:16 UTC
This sounds the same as a problem I'm having.  amarokcollectionscanner segfaults on the offending m4a files at:

0x0418af9c in TagLib::MP4::Tag::parseBool(TagLib::MP4::Atom*, TagLib::File*) () from /usr/lib/libtag-extras.so.0

My system:
 Fedora rawhide (FC12)
 amarok 2.1.1
 taglib 1.5
 taglib-extras 0.1.4

Sample file: http://www.2shared.com/file/6672101/f08da73a/galangation.html
Comment 5 Mikko C. 2009-07-13 10:45:04 UTC
Here's the backtrace with the file Richard provided:

#0  0x00007f5f7e3e1422 in TagLib::MP4::Tag::parseBool (this=0x7f11b0, atom=0x7f0820, file=<value optimized out>)
    at /var/tmp/paludis/media-libs-taglib-extras-9999/work/taglib-extras-9999/taglib-extras/mp4/mp4tag.cpp:143  
#1  0x00007f5f7e3e1906 in Tag (this=0x7f11b0, file=0x7ea0e0, atoms=<value optimized out>)                       
    at /var/tmp/paludis/media-libs-taglib-extras-9999/work/taglib-extras-9999/taglib-extras/mp4/mp4tag.cpp:65   
#2  0x00007f5f7e3de0c1 in TagLib::MP4::File::read (this=0x7ea0e0, readProperties=true,                          
    audioPropertiesStyle=TagLib::AudioProperties::Fast)                                                         
    at /var/tmp/paludis/media-libs-taglib-extras-9999/work/taglib-extras-9999/taglib-extras/mp4/mp4file.cpp:92
#3  0x00007f5f7e3e49d6 in MP4FileTypeResolver::createFile (this=<value optimized out>, fileName=<value optimized out>,
    readProperties=128, propertiesStyle=TagLib::AudioProperties::Fast)
    at /var/tmp/paludis/media-libs-taglib-extras-9999/work/taglib-extras-9999/taglib-extras/mp4/mp4filetyperesolver.cpp:36
#4  0x00007f5f7e625c42 in TagLib::FileRef::create () from /usr/lib64/libtag.so.1
#5  0x00007f5f7e62639d in TagLib::FileRef::FileRef () from /usr/lib64/libtag.so.1
#6  0x0000000000416fc0 in CollectionScanner::readTags (this=0x7fff212e9280, path=@0x7fff212e86d0,
    readStyle=TagLib::AudioProperties::Fast) at /home/mikko/amarok/utilities/collectionscanner/CollectionScanner.cpp:496
#7  0x000000000041e09a in CollectionScanner::scanFiles (this=0x7fff212e9280, entries=@0x7fff212e8b50)
    at /home/mikko/amarok/utilities/collectionscanner/CollectionScanner.cpp:393
#8  0x0000000000421a4d in CollectionScanner::doJob (this=0x7fff212e9280)
    at /home/mikko/amarok/utilities/collectionscanner/CollectionScanner.cpp:259
#9  0x0000000000421d1e in CollectionScanner::qt_metacall (this=0x7fff212e9280, _c=QMetaObject::InvokeMetaMethod, _id=0,
    _a=0x7fff212e8e00) at /home/mikko/amarok/build/utilities/collectionscanner/CollectionScanner.moc:66
#10 0x00007f5f7f07e525 in QMetaObject::activate (sender=0x7ee890, from_signal_index=<value optimized out>,
    to_signal_index=4, argv=0x0) at kernel/qobject.cpp:3101
Comment 6 Myriam Schweingruber 2009-07-29 13:01:29 UTC
(In reply to comment #3)
> Please ensure that you have taglib-extras (might be called libtag-extras or
> some such thing) version 0.1.4.  If not, bug your package manager to update --
> it fixes some issues in MP4 handling that may be causing your troubles.
> 
> If this does not fix the problem, I'll need access to one of your files.

OK, Scott and Richard,reminder, did you install taglib-extras and try again?
Comment 7 Jeff Mitchell 2009-07-29 13:44:33 UTC
TagLib-Extras 0.1.5 has now been released too, which fixes some mp4 handling bugs. I recommend testing that out.
Comment 8 Richard Colley 2009-08-02 03:52:51 UTC
Did you read my report?  Yes, I have taglib-extras 0.1.4 installed. I haven't tried with 0.1.5.

But Mikko has already replicated the problem with the file I uploaded for you. You can test yourself if 0.1.5 fixes it.
Comment 9 Jeff Mitchell 2009-08-02 07:21:20 UTC
Yes, I read your report. And my response is to please test with taglib-extras-0.1.5, which fixes some mp4 issues which could lead to crashes.
Comment 10 Richard Colley 2009-08-02 09:47:31 UTC
My reply was directed at Myriam. But in answer to your request, I am traveling and so I will be unable to do this testing for you.  Sorry.
Comment 11 Jeff Mitchell 2009-08-02 22:26:50 UTC
The maintainer of the MP4 code in TagLib took a look and said that it's a corrupted MP4 file. Nevertheless he put a workaround in so that it should not crash anymore when such a corruption is encountered. I'll be applying it to TagLib-Extras momentarily and will release 0.1.6, which will have the fix.
Comment 12 Jeff Mitchell 2009-08-02 22:28:15 UTC
SVN commit 1006016 by mitchell:

Fix crash on corrupted MP4 files.

BUG: 197782


 M  +2 -1      mp4tag.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1006016