Summary: | Crashing if out of diskspace | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Felix Möller <felixmoeller> |
Component: | Database-Scan | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | caulier.gilles |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 8.0.0 |
Description
Felix Möller
2004-10-16 02:10:46 UTC
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; |