Bug 134880

Summary: Amarok 1.4.3: db corruption while tagging
Product: [Applications] amarok Reporter: Chris <tekdom>
Component: generalAssignee: Amarok Bugs <amarok-bugs-null>
Status: RESOLVED NOT A BUG    
Severity: normal    
Priority: NOR    
Version First Reported In: 1.4.3   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Chris 2006-09-30 01:28:10 UTC
Version:           1.4.3 (using KDE KDE 3.5.4)
Installed from:    Compiled From Sources
Compiler:          gcc 4.0.1 
OS:                Linux

Amarok corrupts the sqlite db while mass tagging songs from an album/folder. This has happenned 3 times to me so far.
Always after about a couple of hours of me fixing/tagging many albums.

1st time it happened, i had the "watch folders for changes" enabled. While tagging an album i got an amarok popup that amarok could not change the tags on file X, Y etc. Moments later Amarok burns and crashes, collection db completely lost.

2nd time: I delete all files in ~/.kde/share/apps/amarok/ and the configuration file for a fresh start and i also disable "watch folders for changes". Kept on tagging albums, after some time same thing happens.
Amarok did *not* crash, but the db was corrupted/lost.

alright...
3rd time, i run amarok from a terminal this time. fresh start, built collection ok, "watch folders for changes" off.
Must have mass tagged more or less 500 files before it happened again.

Taglib complains that it can't open the files, a snip from the console:
...
TagLib: Could not open file [pathandfilename1.mp3]
amarok: END__: bool MetaBundle::save(TagLib::FileRef*) - Took 0.0019s
amarok:   [ThreadWeaver] Job completed: TagWriter. Jobs pending: 1
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.011s
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
TagLib: Could not open file [pathandfilename2.mp3]
...
amarok: BEGIN: bool MetaBundle::save(TagLib::FileRef*)
TagLib: Could not open file amarok: [pathandfilenamex.mp3]
amarok: END__: bool MetaBundle::save(TagLib::FileRef*) - Took 0.00051s
amarok:   [ThreadWeaver] Job completed: TagWriter. Jobs pending: 0
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.045s
...


At this point i already got popups that amarok could not tag half the files of an album. Note that these files are accessible and writeble, in fact i had successfully tagged them in the same amarok session moments before.

Then:
amarok: [CollectionDB] [ERROR!] [virtual QStringList SqliteConnection::query(const QString&)] sqlite_step error.
amarok: [CollectionDB] [ERROR!] unable to open database file
amarok: [CollectionDB] [ERROR!] on query: SELECT DISTINCT tags.url,tags.deviceid FROM tags LEFT JOIN album ON album.id=tags.album WHERE 1 AND tags.sampler = 1  AND tags.deviceid IN (1,2,3,4,5,6,-1) ORDER BY LOWER(album.name ) ,tags.discnumber,tags.track,LOWER ( tags.url ) ;
amarok: [ThreadWeaver] Threads in pool: 3
amarok: BEGIN: QStringList CollectionDB::artistList(bool, bool)
amarok:   [CollectionDB] [ERROR!] [virtual QStringList SqliteConnection::query(const QString&)] sqlite_step error.
amarok:   [CollectionDB] [ERROR!] unable to open database file
... etc. more CollectionDB Errors.


At this point the collection tab is blanked and the db is lost/corrupted.
Amarok did not crash.

If i quit and start again:
...
amarok: BEGIN: CollectionDB::CollectionDB()
amarok: BEGIN: void CollectionDB::initialize()
amarok:       [ThreadWeaver] Creating pthread key, exit value is 0
amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*)
amarok:         [CollectionDB] [WARNING!] Database versions incompatible. Removing and rebuilding database.


And it rebuilds the db. Of course everything is lost.

system:
kde: 3.5.4 compiled from source with konstruct
amarok 1.4.3 also compiled from source
with (from configure):
+ xine-engine
+ libvisual Support
+ XMMS Visualization Wrapper
+ Konqueror Sidebar
+ MP4/AAC Tag Write Support
+ iPod Support (with Artwork)

taglib is v1.4

Chris
Comment 1 Harald Sitter 2007-11-14 20:26:03 UTC
Can't reproduce, also 1.4.3 is quite old nowadays.