Hi Bob, On Wed, Jan 10, 2007 at 04:55:49PM -0500, Bob Copeland wrote: [snip] > > However, subsequent queries did not work -- although adding the -b > > option made it work again (much slower though). Eventually, I unplugged > > the Karma and it wasn't happy... > > I think it's something of a WTF that it rewrites the database even when > you just do a query.
See attached rebuild_smalldb_only_when_needed.patch that fixes this, although it doesn't solve the underlying problem... > But that aside... looking at the error paths in > lk_properties_write_smalldb I can't find a case that exists after the > previous smalldb has been truncated, at least without spewing another > error. Unless a malloc failed somewhere... doubtful. > > > So, where do I go from here? I feel like I'm so close, yet so far... > > 1. Do you have anything in your dmesg from omfs? Nothing interesting. See attached dmesg.out. > 2. Can you try omfsck (don't fix anything) on the unmounted device via > omfsprogs from http://bobcopeland.com/karma/ See attached omfsck.out. Don't know how useful this is given the below: > 3. Can you send the corrupt smalldb to the list? (/media/karma/var/smalldb) Um, it's 0 bytes. See the typescript karma_debug.log attached. > 4. Also try, perhaps (your line numbers may be different): > > --- karmaUsb.c.old 2007-01-10 16:52:12.000000000 -0500 > +++ karmaUsb.c 2007-01-10 16:53:02.000000000 -0500 > @@ -925,7 +925,9 @@ int32_t lk_karmaUsb_delete_file(int rio, > /* > -------------------------------------------------------------------------- */ > int lk_karmaUsb_write_smalldb(void) > { > - return lk_properties_write_smalldb(usbMountPoint, db); > + int val = lk_properties_write_smalldb(usbMountPoint, db); > + perror("write error"); > + return val; > } > > /* > -------------------------------------------------------------------------- */ This gave "write error: File exists". See attached karma_debug.log typescript. Don't know why this is an error... So it seems like riocp is truncating the smalldb and then erroring out. Don't know why that would happen, and it frankly scares me quite a bit. Any guesses as to why this is happening? Also, this doesn't seem to me to be related to the Amarok problem I mentioned in the original email. I've ran amarok through gdb and while trying to add the karma as a device got a segfault. Backtrace is attached as amarok_add_device.log. I'm not sure if it's a libkarma problem or not... Well, hopefully tomorrow will be more fruitful... --Joe PS - I'm usually on IRC if you'd like to help debug in real-time.
amarok: BEGIN: void MediumPluginManager::newDevice()
amarok: BEGIN: Medium* DeviceManager::getDevice(QString)
amarok: DeviceManager: getDevice called with name argument = Rio Karma
amarok: BEGIN: QStringList DeviceManager::getDeviceStringList()
amarok: END__: QStringList DeviceManager::getDeviceStringList() - Took 0.0021s
amarok: END__: Medium* DeviceManager::getDevice(QString) - Took 0.0044s
amarok: [MediaBrowser] mediumAdded: (false,manual|Rio Karma|/media/karma/,Rio
Karma,Rio Karma,,false,,/media/karma/,manual,false,,,)
amarok: BEGIN: MediaDevice* MediaBrowser::loadDevicePlugin(const QString&)
amarok: BEGIN: static Amarok::Plugin* PluginManager::createFromQuery(const
QString&)
amarok: [PluginManager] Plugin trader constraint:
[X-KDE-Amarok-framework-version] == 28 and [X-KDE-Amarok-plugintype] ==
'mediadevice' and [X-KDE-Amarok-name] == 'riokarma-mediadevice' and
[X-KDE-Amarok-rank] > 0
amarok: [PluginManager] Trying to load: libamarok_riokarma-mediadevice
amarok:
amarok: PluginManager Service Info:
amarok: ---------------------------
amarok: name : Rio Karma Media Device
amarok: library : libamarok_riokarma-mediadevice
amarok: desktopEntryPath :
amarok_riokarma-mediadevice.desktop
amarok: X-KDE-Amarok-plugintype : mediadevice
amarok: X-KDE-Amarok-name : riokarma-mediadevice
amarok: X-KDE-Amarok-authors : (Andy Kelk)
amarok: X-KDE-Amarok-rank : 100
amarok: X-KDE-Amarok-version : 1
amarok: X-KDE-Amarok-framework-version: 28
amarok:
amarok: END__: static Amarok::Plugin* PluginManager::createFromQuery(const
QString&) - Took 0.24s
amarok: [MediaBrowser] Returning plugin!
amarok: END__: MediaDevice* MediaBrowser::loadDevicePlugin(const QString&) -
Took 0.25s
amarok: BEGIN: virtual bool RioKarmaMediaDevice::openDevice(bool)
amarok: [RioKarmaMediaDevice] Rio karma : 0
amarok: BEGIN: int RioKarmaMediaDevice::readKarmaMusic()
amarok: [RioKarmaMediaDevice] Found a playlist at fid 256. Skipping.
[New Thread -1304810576 (LWP 6523)]
amarok: [Moodbar] Resetting moodbar:
amarok: [virtual AmarokConfigDialog::~AmarokConfigDialog()]
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*)
amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took
0.002s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.63s
amarok: [ThreadWeaver] Job aborted: CurrentTrackJob. Jobs pending: 1
[Thread -1304810576 (LWP 6523) exited]
[New Thread -1315005520 (LWP 6524)]
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*)
amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took
0.0012s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.34s
[Thread -1315005520 (LWP 6524) exited]
amarok: [ThreadWeaver] Job completed: CurrentTrackJob. Jobs pending: 0
amarok: [RioKarmaMediaDevice] Found a playlist at fid 11952. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 11968. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 11984. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 12704. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 21616. Skipping.
amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const
QStringList&)
amarok: BEGIN: void ScanController::initIncremental()
amarok: END__: void ScanController::initIncremental() - Took 0.21s
amarok: END__: ScanController::ScanController(CollectionDB*, bool, const
QStringList&) - Took 0.21s
[New Thread -1315005520 (LWP 6527)]
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: BEGIN: virtual bool ScanController::doJob()
amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*)
amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took
0.0024s
amarok: END__: virtual bool ScanController::doJob() - Took 0.0042s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0064s
[Thread -1315005520 (LWP 6527) exited]
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22048. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22064. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22640. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22656. Skipping.
amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController
received.
amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0
amarok: BEGIN: virtual ScanController::~ScanController()
amarok: END__: virtual ScanController::~ScanController() - Took 0.00092s
amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const
QStringList&)
amarok: BEGIN: void ScanController::initIncremental()
amarok: END__: void ScanController::initIncremental() - Took 0.069s
amarok: END__: ScanController::ScanController(CollectionDB*, bool, const
QStringList&) - Took 0.071s
[New Thread -1315005520 (LWP 6528)]
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: BEGIN: virtual bool ScanController::doJob()
amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*)
amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took
0.0027s
amarok: END__: virtual bool ScanController::doJob() - Took 0.0045s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.011s
[Thread -1315005520 (LWP 6528) exited]
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22880. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22896. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22912. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22928. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 22944. Skipping.
amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController
received.
amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0
amarok: BEGIN: virtual ScanController::~ScanController()
amarok: END__: virtual ScanController::~ScanController() - Took 0.0012s
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23616. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23632. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23744. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23760. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23776. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23792. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23904. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 23920. Skipping.
amarok: [RioKarmaMediaDevice] Found a playlist at fid 24176. Skipping.
amarok: END__: int RioKarmaMediaDevice::readKarmaMusic() - Took 32s
amarok: END__: virtual bool RioKarmaMediaDevice::openDevice(bool) - Took 32s
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1245177184 (LWP 6484)]
0xb7c6e0ab in QMap<QString, Medium*>::detach (this=0x869627c)
at /usr/share/qt3/include/qmap.h:739
739 void detach() { if ( sh->count > 1 ) detachInternal(); }
(gdb) bt
#0 0xb7c6e0ab in QMap<QString, Medium*>::detach (this=0x869627c)
at /usr/share/qt3/include/qmap.h:739
#1 0xb7c6ea35 in QMap<QString, Medium*>::operator[] (this=0x869627c,
[EMAIL PROTECTED]) at /usr/share/qt3/include/qmap.h:799
#2 0xb7ccbce9 in MediumPluginManager::newDevice (this=0x8696250)
at mediumpluginmanager.cpp:245
#3 0xb7ccbe37 in MediumPluginManager::qt_invoke (this=0x8696250, _id=3,
_o=0xbf9f04ec) at mediumpluginmanager.moc:244
#4 0xb6601d4f in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#5 0xb66027e0 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#6 0xb6993ddb in QButton::clicked () from /usr/lib/libqt-mt.so.3
#7 0xb669ecea in QButton::mouseReleaseEvent () from /usr/lib/libqt-mt.so.3
#8 0xb66386f0 in QWidget::event () from /usr/lib/libqt-mt.so.3
#9 0xb6599c26 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#10 0xb659bdc9 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#11 0xb6d5fe0e in KApplication::notify () from /usr/lib/libkdecore.so.4
#12 0xb652d495 in QApplication::sendSpontaneousEvent ()
from /usr/lib/libqt-mt.so.3
#13 0xb652c12f in QETWidget::translateMouseEvent () from /usr/lib/libqt-mt.so.3
#14 0xb652a6b0 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
#15 0xb6540d02 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#16 0xb65b4179 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#17 0xb65b3f9a in QEventLoop::exec () from /usr/lib/libqt-mt.so.3
#18 0xb659b7bf in QApplication::exec () from /usr/lib/libqt-mt.so.3
#19 0x0804cfb2 in main (argc=1, argv=0xbf9f1094) at main.cpp:114
(gdb)
Script started on Wed 10 Jan 2007 08:14:27 PM EST [EMAIL PROTECTED]:/usr/local/src/Debian/karma$ dir /media/karma/var/smalldb -rw-rw-rw- 1 root root 359422 1969-12-31 19:03 /media/karma/var/smalldb [EMAIL PROTECTED]:/usr/local/src/Debian/karma$ gzip --best -c /media/karma/var/smalldb > smalldb.good.gz [EMAIL PROTECTED]:/usr/local/src/Debian/karma$ libkarma-0.0.6/tools/riocp -a /media/karm a/ -s genre=Musical,artist=Chicago -u %s-%t.%c * Using UTF-8 codeset. Using UTF-8 codeset. lk_karma_authenticate: 0 lk_karma_request_io_lock: ok Downloading Rio database... please wait... Done! Searching FIDs with "genre=Musical ": 172 selected ANDing FIDs with "artist=Chicago ": 22 selected 320 Chicago-Class.mp3 800 Chicago-I Can't Do It Alone (reprise).mp3 1584 Chicago-Razzle Dazzle.mp3 1728 Chicago-When You're Good to Mama.mp3 2096 Chicago-I Can't Do It Alone.mp3 2736 Chicago-All That Jazz.mp3 2752 Chicago-Cell Block Tango.mp3 2976 Chicago-Me and My Baby.mp3 3280 Chicago-A Little Bit of Good.mp3 3952 Chicago-When Velma Takes the Stand.mp3 4976 Chicago-I Know a Girl.mp3 7472 Chicago-Hot Honey Rag.mp3 7552 Chicago-Roxie.mp3 7712 Chicago-My Own Best Friend.mp3 8016 Chicago-We Both Reached for the Gun.mp3 8448 Chicago-Mister Cellophane.mp3 8656 Chicago-Nowadays.mp3 9264 Chicago-Chicago the Musical / Overture.mp3 10016 Chicago-Finale.mp3 10112 Chicago-All I Care About.mp3 10560 Chicago-Funny Honey.mp3 10976 Chicago-Entr' Acte.mp3 #---- ------------------------------------- write error: File exists error writing smalldb file lk_karma_release_io_lock: ok lk_karma_hangup: ok [EMAIL PROTECTED]:/usr/local/src/Debian/karma$ dir /media/karma/var/smalldb -rw-rw-rw- 1 root root 0 2007-01-10 20:15 /media/karma/var/smalldb [EMAIL PROTECTED]:/usr/local/src/Debian/karma$ dmesg | tail -n 21 > dmesg.out [EMAIL PROTECTED]:/usr/local/src/Debian/karma$ ./omfsprogs-0.0.7/omfsck /dev/karma > tee omfsck.out [EMAIL PROTECTED]:/usr/local/src/Debian/karma$ exit Script done on Wed 10 Jan 2007 08:26:13 PM EST
--- libkarma-0.0.6.orig/tools/riocp.c
+++ libkarma-0.0.6/tools/riocp.c
@@ -681,7 +681,7 @@
}
lk_properties_save();
- if (writeSmalldb) {
+ if ( writeSmalldb && ( (removeFiles > 0) || fdb ) ) {
ret = lk_karma_write_smalldb();
if (ret)
fprintf(stderr, "error writing smalldb file\n");
omfsck.out.gz
Description: Binary data
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ linux-karma-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-karma-devel
