Bug 133072 - collectiondb infinite loop on start
Summary: collectiondb infinite loop on start
Status: RESOLVED FIXED
Alias: None
Product: amarok
Classification: Applications
Component: general (show other bugs)
Version: 1.4.2
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Amarok Developers
URL:
Keywords:
: 133450 (view as bug list)
Depends on:
Blocks:
 
Reported: 2006-08-27 14:32 UTC by Michael Buesch
Modified: 2006-09-02 19:25 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Buesch 2006-08-27 14:32:02 UTC
Version:           1.4.2 (using KDE KDE 3.5.2)
Installed from:    Compiled From Sources
Compiler:          gcc-4.0.3 
OS:                Linux

I tried today's amarok SVN trunk and 1.4.2 release. Both have the same bug.
On start the following messages appear:


mb@ppc1:~$ amarok
Amarok: [Loader] Starting amarokapp..
Amarok: [Loader] Don't run gdb, valgrind, etc. against this binary! Use amarokapp.
amarok: BEGIN: App::App()
amarok: BEGIN: void App::fixHyperThreading()
amarok:     Workaround not enabled
amarok: END__: void App::fixHyperThreading() - Took 0.0043s
amarok: END__: App::App() - Took 0.017s
amarok: BEGIN: void App::continueInit()
amarok: BEGIN: EngineBase* EngineController::loadEngine(const QString&)
amarok:     [PluginManager] Plugin trader constraint: [X-KDE-Amarok-framework-version] == 26 and [X-KDE-Amarok-plugintype] == 'engine' and [X-KDE-Amarok-name] != 'void-engine' and [X-KDE-Amarok-rank] > 0
amarok:     [PluginManager] Plugin trader constraint: [X-KDE-Amarok-framework-version] == 26 and [X-KDE-Amarok-plugintype] == 'engine' and [X-KDE-Amarok-name] == 'void-engine' and [X-KDE-Amarok-rank] > 0
amarok:     [PluginManager] Trying to load: libamarok_void-engine_plugin
amarok: 
amarok:     PluginManager Service Info:
amarok:     ---------------------------
amarok:     name                          : <no engine>
amarok:     library                       : libamarok_void-engine_plugin
amarok:     desktopEntryPath              : amarok_void-engine_plugin.desktop
amarok:     X-KDE-Amarok-plugintype       : engine
amarok:     X-KDE-Amarok-name             : void-engine
amarok:     X-KDE-Amarok-authors          : (Max Howell,Mark Kretschmann)
amarok:     X-KDE-Amarok-rank             : 1
amarok:     X-KDE-Amarok-version          : 1
amarok:     X-KDE-Amarok-framework-version: 26
amarok: 
amarok: END__: EngineBase* EngineController::loadEngine(const QString&) - Took 0.082s
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.
amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.0061s
amarok:       [CollectionDB] [ERROR!] [virtual QStringList SqliteConnection::query(const QString&)]  sqlite3_compile error:
amarok:       [CollectionDB] [ERROR!] no such table: tags
amarok:       [CollectionDB] [ERROR!] on query: SELECT COUNT( url ) FROM tags LIMIT 1 OFFSET 0;
amarok:       [CollectionDB] [ERROR!] [virtual QStringList SqliteConnection::query(const QString&)]  sqlite3_compile error:
amarok:       [CollectionDB] [ERROR!] no such table: tags
amarok:       [CollectionDB] [ERROR!] on query: SELECT COUNT( url ) FROM tags LIMIT 1 OFFSET 0;
amarok:       [CollectionDB] [ERROR!] [virtual QStringList SqliteConnection::query(const QString&)]  sqlite3_compile error:
amarok:       [CollectionDB] [ERROR!] no such table: tags
amarok:       [CollectionDB] [ERROR!] on query: SELECT COUNT( url ) FROM tags LIMIT 1 OFFSET 0;
amarok:       [CollectionDB] [ERROR!] [virtual QStringList SqliteConnection::query(const QString&)]  sqlite3_compile error:
amarok:       [CollectionDB] [ERROR!] no such table: tags
amarok:       [CollectionDB] [ERROR!] on query: SELECT COUNT( url ) FROM tags LIMIT 1 OFFSET 0;
amarok:       [CollectionDB] [ERROR!] [virtual QStringList SqliteConnection::query(const QString&)]  sqlite3_compile error:
amarok:       [CollectionDB] [ERROR!] no such table: tags


After that it enters an infinite loop and always repeats the last few logmessages.
I tried to delete .kde/share/apps/amarok and .kde/share/config/amarokrc. Did not help.
Comment 1 Mark Kretschmann 2006-08-27 14:54:29 UTC
Looks like your sqlite database isn't correctly built. Have you at any point tried to downgrade Amarok? This generally messes the database up.

Anyway, the fix should be simple: rm ~/.kde/share/apps/amarok/collection.db
Comment 2 Michael Buesch 2006-08-27 15:31:26 UTC
I downgraded it _after_ the issue appeared.
So that's not the cause.

> Anyway, the fix should be simple: rm ~/.kde/share/apps/amarok/collection.db

As I wrote. This does not help.
I deleted everything in ~/.kde/share/apps/amarok and also
~/.kde/share/config/amarokrc
Comment 3 Maximilian Kossick 2006-08-27 16:01:14 UTC
SVN commit 577765 by mkossick:

make sure that we don't access uninitialised variables
BUG: 133072

 M  +6 -2      collectiondb.cpp  


--- trunk/extragear/multimedia/amarok/src/collectiondb.cpp #577764:577765
@@ -5761,7 +5761,8 @@
 {
 
     QStringList values;
-    int error, rc;
+    int error;
+    int rc = 0;
     const char* tail;
     sqlite3_stmt* stmt;
     int busyCnt = 0;
@@ -5787,6 +5788,7 @@
             Debug::error() << sqlite3_errmsg( m_db ) << endl;
             Debug::error() << "on query: " << statement << endl;
             values = QStringList();
+            break;
         }
         else
         {
@@ -5851,7 +5853,8 @@
 
 int SqliteConnection::insert( const QString& statement, const QString& /* table */ )
 {
-    int error, rc;
+    int error;
+    int rc = 0;
     const char* tail;
     sqlite3_stmt* stmt;
     int busyCnt = 0;
@@ -5876,6 +5879,7 @@
             Debug::error() << k_funcinfo << " sqlite3_compile error:" << endl;
             Debug::error() << sqlite3_errmsg( m_db ) << endl;
             Debug::error() << "on insert: " << statement << endl;
+            break;
         }
         else
         {
Comment 4 Michael Buesch 2006-08-27 16:11:00 UTC
This fixes the issue. Thank you very much!
Comment 5 Maximilian Kossick 2006-09-02 19:25:52 UTC
*** Bug 133450 has been marked as a duplicate of this bug. ***