[Digikam-devel] [digikam] [Bug 346081] New: EXIV cannot open file on NTFS within non-english directory

Konstantin Shtirliz.Shtepa at ngs.ru
Sat Apr 11 18:22:24 BST 2015


https://bugs.kde.org/show_bug.cgi?id=346081

            Bug ID: 346081
           Summary: EXIV cannot open file on NTFS within non-english
                    directory
           Product: digikam
           Version: 4.9.0
          Platform: openSUSE RPMs
                OS: Linux
            Status: UNCONFIRMED
          Severity: major
          Priority: NOR
         Component: libkexiv2
          Assignee: digikam-devel at kde.org
          Reporter: Shtirliz.Shtepa at ngs.ru

I have NTFS partition which mounted in Linux.
And there I have Album with russian name.
And all of it would lead me to error: Digikam cannot save any modified file. He
created file with zero size, but then Exiv generates throw and operations
aborted.
I cannot redact anything with digikam now.

That convert to std:string in libkexiv2/kexiv2.cpp:308
image = Exiv2::ImageFactory::open((const char*)(QFile::encodeName(filePath)));
is really alright?

Reproducible: Always

Steps to Reproduce:
1. Create Album on NTFS with non-english name
2. Try to modifity some photos within this album

Actual Results:  
Files created, but they have zero size or just stuck with temp names.

Expected Results:  
Files should be created normally.

log from gdb about bug:
Catchpoint 1 (exception thrown), __cxxabiv1::__cxa_throw (obj=0x7fff700272a0,
tinfo=0x7ffff65dd090 <typeinfo for Exiv2::BasicError<char>>,
dest=0x7fffee55c500 <Exiv2::BasicError<char>::~BasicError()>) at
../../../../libstdc++-v3/libsupc++/eh_throw.cc:62                  
62      {                                                                       
#0  0x00007ffff0f5f540 in __cxxabiv1::__cxa_throw(void*, std::type_info*, void
(*)(void*)) (obj=0x7fff700272a0, tinfo=0x7ffff65dd090 <typeinfo for
Exiv2::BasicError<char>>, dest=0x7fffee55c500
<Exiv2::BasicError<char>::~BasicError()>)                                     
    at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:62                        
#1  0x00007fffee5a2b46 in Exiv2::ImageFactory::open(std::string const&)
(path="/mount/Media/Фото и видео/2015/Свадьба Максима/фото/DSC_1383_1.JPG") at
image.cpp:423                                                                   
#2  0x00007ffff636716b in KExiv2Iface::KExiv2::load(QString const&) const
(this=this at entry=0x7fff70024890, filePath=...) at
/usr/src/debug/libkexiv2-14.12.3/libkexiv2/kexiv2.cpp:308                       
#3  0x00007ffff5c825e6 in Digikam::DMetadata::load(QString const&) const
(this=this at entry=0x7fff70024890, filePath=...) at
/usr/src/debug/digikam-4.9.0/core/libs/dmetadata/dmetadata.cpp:110              
#4  0x00007ffff56d435f in Digikam::ImageScanner::loadFromDisk()
(this=this at entry=0x7fff8e7fb330) at
/usr/src/debug/digikam-4.9.0/core/libs/database/imagescanner.cpp:1525           
#5  0x00007ffff56d4550 in Digikam::ImageScanner::newFile(int)
(this=this at entry=0x7fff8e7fb330, albumId=albumId at entry=183) at
/usr/src/debug/digikam-4.9.0/core/libs/database/imagescanner.cpp:285            
#6  0x00007ffff566d056 in Digikam::CollectionScanner::scanNewFile(QFileInfo
const&, int) (this=this at entry=0x7fff8e7fb620, info=...,
albumId=albumId at entry=183) at
/usr/src/debug/digikam-4.9.0/core/libs/database/collectionscanner.cpp:1255      
#7  0x00007ffff566df3e in Digikam::CollectionScanner::scanFile(QFileInfo
const&, int, long long, Digikam::CollectionScanner::FileScanMode)
(this=this at entry=0x7fff8e7fb620, fi=..., albumId=albumId at entry=183,
imageId=imageId at entry=-1,
mode=mode at entry=Digikam::CollectionScanner::NormalScan) at
/usr/src/debug/digikam-4.9.0/core/libs/database/collectionscanner.cpp:776       
#8  0x00007ffff5671e8d in Digikam::CollectionScanner::scanFile(QString const&,
QString const&, QString const&, Digikam::CollectionScanner::FileScanMode)
(this=this at entry=0x7fff8e7fb620, albumRoot=..., album=..., fileName=...,
mode=mode at entry=Digikam::CollectionScanner::NormalScan) at
/usr/src/debug/digikam-4.9.0/core/libs/database/collectionscanner.cpp:750       
#9  0x00007ffff567234b in Digikam::CollectionScanner::scanFile(QString const&,
Digikam::CollectionScanner::FileScanMode) (this=this at entry=0x7fff8e7fb620,
filePath=..., mode=mode at entry=Digikam::CollectionScanner::NormalScan)           
    at
/usr/src/debug/digikam-4.9.0/core/libs/database/collectionscanner.cpp:719       
#10 0x00000000005e3537 in Digikam::ScanController::scannedInfo(QString const&)
(this=0xe6db80, filePath=...) at
/usr/src/debug/digikam-4.9.0/core/app/database/scancontroller.cpp:555           
#11 0x000000000062c9bf in
Digikam::FileActionMngrDatabaseWorker::copyAttributes(Digikam::FileActionImageInfoList,
QStringList const&) (this=<optimized out>, infos=..., derivedPaths=...) at
/usr/src/debug/digikam-4.9.0/core/app/fileaction/databaseworkeriface.cpp:308    
#12 0x000000000062cf9d in
Digikam::DatabaseWorkerInterface::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) (_o=0x1c19740, _c=4133343376, _id=-296368896,
_a=0x7ffff11f17a0 <std::string::_Rep::_S_empty_rep_storage>)                    
    at /usr/src/debug/digikam-4.9.0/build/core/app/databaseworkeriface.moc:85   
#13 0x00007ffff160a59e in QObject::event(QEvent*) (this=0x1c19740, e=<optimized
out>) at kernel/qobject.cpp:1231                                                
#14 0x00007ffff200076c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(this=this at entry=0xcf1380, receiver=receiver at entry=0x1c19740,
e=e at entry=0x7fffa80c1ba0) at kernel/qapplication.cpp:4565                       
#15 0x00007ffff2006cad in QApplication::notify(QObject*, QEvent*)
(this=this at entry=0x7fffffffdc20, receiver=receiver at entry=0x1c19740,
e=e at entry=0x7fffa80c1ba0) at kernel/qapplication.cpp:4351
#16 0x00007ffff2d18cea in KApplication::notify(QObject*, QEvent*)
(this=0x7fffffffdc20, receiver=0x1c19740, event=0x7fffa80c1ba0) at
/usr/src/debug/kdelibs-4.14.6/kdeui/kernel/kapplication.cpp:311
#17 0x00007ffff15f22ad in QCoreApplication::notifyInternal(QObject*, QEvent*)
(this=0x7fffffffdc20, receiver=receiver at entry=0x1c19740,
event=event at entry=0x7fffa80c1ba0) at kernel/qcoreapplication.cpp:953
#18 0x00007ffff15f557d in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*) (event=0x7fffa80c1ba0, receiver=0x1c19740) at
kernel/qcoreapplication.h:231
#19 0x00007ffff15f557d in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*) (receiver=receiver at entry=0x0, event_type=event_type at entry=0,
data=0x2fe0bc0) at kernel/qcoreapplication.cpp:1577
#20 0x00007ffff15f5a23 in QCoreApplication::sendPostedEvents(QObject*, int)
(receiver=receiver at entry=0x0, event_type=event_type at entry=0) at
kernel/qcoreapplication.cpp:1470
#21 0x00007ffff161f8fe in postEventSourceDispatch(GSource*, GSourceFunc,
gpointer) () at kernel/qcoreapplication.h:236
#22 0x00007ffff161f8fe in postEventSourceDispatch(GSource*, GSourceFunc,
gpointer) (s=0x7fff70013ca0) at kernel/qeventdispatcher_glib.cpp:300
#23 0x00007fffe8c08a04 in g_main_context_dispatch (context=0x7fff700250d0) at
gmain.c:3111
#24 0x00007fffe8c08a04 in g_main_context_dispatch
(context=context at entry=0x7fff700250d0) at gmain.c:3710
#25 0x00007fffe8c08c48 in g_main_context_iterate
(context=context at entry=0x7fff700250d0, block=block at entry=1,
dispatch=dispatch at entry=1, self=<optimized out>) at gmain.c:3781
#26 0x00007fffe8c08cec in g_main_context_iteration (context=0x7fff700250d0,
may_block=1) at gmain.c:3842
#27 0x00007ffff161f0be in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(this=0x7fff70013990, flags=...) at kernel/qeventdispatcher_glib.cpp:450
#28 0x00007ffff15f0e6f in
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(this=this at entry=0x7fff8e7fbce0, flags=...) at kernel/qeventloop.cpp:149
#29 0x00007ffff15f1165 in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
(this=this at entry=0x7fff8e7fbce0, flags=...) at kernel/qeventloop.cpp:204
#30 0x00007ffff5ced213 in Digikam::WorkerObjectRunnable::run()
(this=0x7fffa80bcc00) at
/usr/src/debug/digikam-4.9.0/core/libs/threads/threadmanager.cpp:196
#31 0x00007ffff14e46ae in QThreadPoolThread::run() (this=0x2fe0a20) at
concurrent/qthreadpool.cpp:108
#32 0x00007ffff14f079f in QThreadPrivate::start(void*) (arg=0x2fe0a20) at
thread/qthread_unix.cpp:349
#33 0x00007fffee96e0a4 in start_thread (arg=0x7fff8e7fc700) at
pthread_create.c:309
#34 0x00007ffff0a2306d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Digikam-devel mailing list