Version: CVS 2004-10-05 (using KDE KDE 3.2.1) Installed from: SuSE RPMs Compiler: gcc 3.3.1 OS: Linux Hi, Digikam started crashing today every few minutes, this was really strange to me so I looked at the console debugging output and found the problem: I happened to ran out of diskspace. The Output: digikam: ImagePluginLoader: Loaded plugin ImagePlugin_Despeckle digikam: ImagePlugin_Charcoal plugin loaded digikam: ImagePluginLoader: Loaded plugin ImagePlugin_Charcoal digikam: WARNING: [bool AlbumDB::execSql(const QString&, QStringList*, bool)] sqlite_step error: database is full on query: BEGIN TRANSACTION; libpng error: Read Error libpng error: Write Error libpng error: Read Error libpng error: Write Error libpng error: Write Error gdbm fatal: write error I think it would be nice to give the user a little info that there is not enough space left instead of the application just crashing. Felix
do you have a backtrace available for the crash?
It wasn't an actual crash the application just closed itself. I just reproduced the problem by filling up my disk again with: dd if=/dev/zero of=tmp bs=8096 As soon as you go into an folder - where no thumbnails have been generated yet, the application closes itself. On the Console you can just find the following lines: libpng error: Write Error libpng error: Write Error gdbm fatal: write error It seems to be just gdbm related, sqlite doeesn't have problem with full disks: digikam: WARNING: [bool AlbumDB::execSql(const QString&, QStringList*, bool)] sqlite_step error: database is full on query: REPLACE INTO ImageTags VALUES('IMG_1366.JPG', 6, 8); Please instruct me how to give you more detailed information. HTH Felix
CVS commit by pahlibar: override default gdbm fatal function to prevent app from exiting if user runs out of diskspace CCMAIL: 91424-done@bugs.kde.org M +8 -1 thumbdb.cpp 1.6 --- kdeextragear-3/digikam/digikam/thumbdb.cpp #1.5:1.6 @@ -30,4 +30,5 @@ #include <kmdcodec.h> #include <kdebug.h> +#include <kdebug.h> extern "C" @@ -41,4 +42,10 @@ extern "C" #include "thumbdb.h" +void digikam_gdbm_fatal_func(char* val) +{ + kdWarning() << "GDBM fatal error occured: " + << val << endl; +} + class ThumbDBPriv { @@ -70,5 +77,5 @@ ThumbDB::ThumbDB() const char* path = encPath; d->db = gdbm_open((char*)path, 0, GDBM_WRCREAT|GDBM_FAST, - 0666, 0); + 0666, (void (*)()) digikam_gdbm_fatal_func); if (!d->db) kdWarning() << "Failed to open Thumbnail DB file: " << dbPath << endl;