Bug 256705 - Exiv2 crash through MetaEngine (XMP parsing on JPEG file)
Summary: Exiv2 crash through MetaEngine (XMP parsing on JPEG file)
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Metadata-Xmp (show other bugs)
Version: unspecified
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-11-12 15:17 UTC by linuxbychoice
Modified: 2019-07-29 04:32 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.2.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description linuxbychoice 2010-11-12 15:17:50 UTC
Application: plasma-desktop (0.3)
KDE Platform Version: 4.5.2 (KDE 4.5.2)
Qt Version: 4.6.3
Operating System: Linux 2.6.34.7-61.fc13.x86_64 x86_64
Distribution: "Fedora release 13 (Goddard)"

-- Information about the crash:
- What I was doing when the application crashed:
Started the computer, and this crach happeens every time KDE is booted

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma Workspace (plasma-desktop), signal: Segmentation fault
87	  int result = INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds, timeout);
[Current thread is 1 (Thread 0x7ff42eeb0860 (LWP 1910))]

Thread 6 (Thread 0x7ff416697710 (LWP 1916)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:212
#1  0x000000364a072092 in wait (this=<value optimized out>, mutex=0x2780c70, time=30000) at thread/qwaitcondition_unix.cpp:85
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x2780c70, time=30000) at thread/qwaitcondition_unix.cpp:159
#3  0x000000364a0682b1 in QThreadPoolThread::run (this=0x2729800) at concurrent/qthreadpool.cpp:140
#4  0x000000364a0711a5 in QThreadPrivate::start (arg=0x2729800) at thread/qthread_unix.cpp:248
#5  0x000000364f4999a3 in ?? () from /usr/lib64/nvidia/libGL.so.1
#6  0x000000363dc07761 in start_thread (arg=0x7ff416697710) at pthread_create.c:301
#7  0x000000363d4e14fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 5 (Thread 0x7ff40ffff710 (LWP 1926)):
[KCrash Handler]
#6  size (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/basic_string.h:624
#7  compare (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/basic_string.h:2024
#8  operator< <char, std::char_traits<char>, std::allocator<char> > (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/basic_string.h:2320
#9  operator() (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/stl_function.h:230
#10 std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/stl_tree.h:1181
#11 0x0000003654af668a in std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique_ (this=0x7ff3f800afc0, __position=..., __v=...)
    at /usr/include/c++/4.4.2/bits/stl_tree.h:1217
#12 0x0000003654b08188 in insert (namespaceURI=0x3 <Address 0x3 out of bounds>, suggestedPrefix=<value optimized out>, registeredPrefix=<value optimized out>, prefixSize=<value optimized out>)
    at /usr/include/c++/4.4.2/bits/stl_map.h:540
#13 XMPMeta::RegisterNamespace (namespaceURI=0x3 <Address 0x3 out of bounds>, suggestedPrefix=<value optimized out>, registeredPrefix=<value optimized out>, prefixSize=<value optimized out>)
    at XMPMeta.cpp:1079
#14 0x0000003654b08763 in XMPMeta::Initialize () at XMPMeta.cpp:669
#15 0x0000003654b2a334 in WXMPMeta_Initialize_1 (wResult=0x7ff40fffe5a0) at WXMPMeta.cpp:51
#16 0x0000003654afeb94 in TXMPMeta<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Initialize () at ../xmpsdk/include/client-glue/TXMPMeta.incl_cpp:81
#17 0x0000003654af71cd in Exiv2::XmpParser::initialize () at xmp.cpp:383
#18 0x0000003654afa5d5 in Exiv2::XmpParser::decode (xmpData=..., xmpPacket=
    "<?xpacket begin='\357\273\277' id='W5M0MpCehiHzreSzNTczkc9d'?>\n<x:xmpmeta xmlns:x='adobe:ns:meta/'>\n<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n\n <rdf:Description xmlns:tiff='http://ns.adobe"...) at xmp.cpp:447
#19 0x0000003654a93cd2 in Exiv2::JpegBase::readMetadata (this=0x7ff4040029e0) at jpgimage.cpp:369
#20 0x00007ff41ad415d8 in KExiv2Iface::KExiv2::load(QString const&) const () from /usr/lib64/libkexiv2.so.8
#21 0x00007ff41afc4f83 in ?? () from /usr/lib64/kde4/plasma_applet_frame.so
#22 0x00007ff41afc5167 in ?? () from /usr/lib64/kde4/plasma_applet_frame.so
#23 0x000000364a06821f in QThreadPoolThread::run (this=0x28d9cc0) at concurrent/qthreadpool.cpp:106
#24 0x000000364a0711a5 in QThreadPrivate::start (arg=0x28d9cc0) at thread/qthread_unix.cpp:248
#25 0x000000364f4999a3 in ?? () from /usr/lib64/nvidia/libGL.so.1
#26 0x000000363dc07761 in start_thread (arg=0x7ff40ffff710) at pthread_create.c:301
#27 0x000000363d4e14fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 4 (Thread 0x7ff40f5fe710 (LWP 1927)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:212
#1  0x000000364a072092 in wait (this=<value optimized out>, mutex=0x28dbb70, time=30000) at thread/qwaitcondition_unix.cpp:85
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x28dbb70, time=30000) at thread/qwaitcondition_unix.cpp:159
#3  0x000000364a0682b1 in QThreadPoolThread::run (this=0x28d9d70) at concurrent/qthreadpool.cpp:140
#4  0x000000364a0711a5 in QThreadPrivate::start (arg=0x28d9d70) at thread/qthread_unix.cpp:248
#5  0x000000364f4999a3 in ?? () from /usr/lib64/nvidia/libGL.so.1
#6  0x000000363dc07761 in start_thread (arg=0x7ff40f5fe710) at pthread_create.c:301
#7  0x000000363d4e14fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 3 (Thread 0x7ff403fff710 (LWP 1929)):
[KCrash Handler]
#6  size (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/basic_string.h:624
#7  compare (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/basic_string.h:2024
#8  operator< <char, std::char_traits<char>, std::allocator<char> > (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/basic_string.h:2320
#9  operator() (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/stl_function.h:230
#10 std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique (this=0x7ff3f800afc0, __v=...) at /usr/include/c++/4.4.2/bits/stl_tree.h:1181
#11 0x0000003654af668a in std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique_ (this=0x7ff3f800afc0, __position=..., __v=...)
    at /usr/include/c++/4.4.2/bits/stl_tree.h:1217
#12 0x0000003654b08188 in insert (namespaceURI=0x3 <Address 0x3 out of bounds>, suggestedPrefix=<value optimized out>, registeredPrefix=<value optimized out>, prefixSize=<value optimized out>)
    at /usr/include/c++/4.4.2/bits/stl_map.h:540
#13 XMPMeta::RegisterNamespace (namespaceURI=0x3 <Address 0x3 out of bounds>, suggestedPrefix=<value optimized out>, registeredPrefix=<value optimized out>, prefixSize=<value optimized out>)
    at XMPMeta.cpp:1079
#14 0x0000003654b08763 in XMPMeta::Initialize () at XMPMeta.cpp:669
#15 0x0000003654b2a334 in WXMPMeta_Initialize_1 (wResult=0x7ff403ffe5a0) at WXMPMeta.cpp:51
#16 0x0000003654afeb94 in TXMPMeta<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Initialize () at ../xmpsdk/include/client-glue/TXMPMeta.incl_cpp:81
#17 0x0000003654af71cd in Exiv2::XmpParser::initialize () at xmp.cpp:383
#18 0x0000003654afa5d5 in Exiv2::XmpParser::decode (xmpData=..., xmpPacket=
    "<?xpacket begin='\357\273\277' id='W5M0MpCehiHzreSzNTczkc9d'?>\n<x:xmpmeta xmlns:x='adobe:ns:meta/'>\n<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n\n <rdf:Description xmlns:tiff='http://ns.adobe"...) at xmp.cpp:447
#19 0x0000003654a93cd2 in Exiv2::JpegBase::readMetadata (this=0x7ff3f8002500) at jpgimage.cpp:369
#20 0x00007ff41ad415d8 in KExiv2Iface::KExiv2::load(QString const&) const () from /usr/lib64/libkexiv2.so.8
#21 0x00007ff41afc4f83 in ?? () from /usr/lib64/kde4/plasma_applet_frame.so
#22 0x00007ff41afc5167 in ?? () from /usr/lib64/kde4/plasma_applet_frame.so
#23 0x000000364a06821f in QThreadPoolThread::run (this=0x28de9d0) at concurrent/qthreadpool.cpp:106
#24 0x000000364a0711a5 in QThreadPrivate::start (arg=0x28de9d0) at thread/qthread_unix.cpp:248
#25 0x000000364f4999a3 in ?? () from /usr/lib64/nvidia/libGL.so.1
#26 0x000000363dc07761 in start_thread (arg=0x7ff403fff710) at pthread_create.c:301
#27 0x000000363d4e14fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 2 (Thread 0x7ff4035fe710 (LWP 1930)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:212
#1  0x000000364a072092 in wait (this=<value optimized out>, mutex=0x28dbb70, time=30000) at thread/qwaitcondition_unix.cpp:85
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x28dbb70, time=30000) at thread/qwaitcondition_unix.cpp:159
#3  0x000000364a0682b1 in QThreadPoolThread::run (this=0x28df900) at concurrent/qthreadpool.cpp:140
#4  0x000000364a0711a5 in QThreadPrivate::start (arg=0x28df900) at thread/qthread_unix.cpp:248
#5  0x000000364f4999a3 in ?? () from /usr/lib64/nvidia/libGL.so.1
#6  0x000000363dc07761 in start_thread (arg=0x7ff4035fe710) at pthread_create.c:301
#7  0x000000363d4e14fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 1 (Thread 0x7ff42eeb0860 (LWP 1910)):
#0  0x000000363d4d7df3 in __poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=<value optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x000000363fc0885a in ?? () from /usr/lib64/libxcb.so.1
#2  0x000000363fc08d87 in ?? () from /usr/lib64/libxcb.so.1
#3  0x000000363fc09035 in xcb_writev () from /usr/lib64/libxcb.so.1
#4  0x000000363f84d41a in _XSend (dpy=0x2083470, data=<value optimized out>, size=<value optimized out>) at xcb_io.c:339
#5  0x000000363f84d559 in _XReply (dpy=0x2083470, rep=0x7fff0aed1640, extra=0, discard=0) at xcb_io.c:457
#6  0x000000363f829805 in XGetImage (dpy=0x2083470, d=46137371, x=<value optimized out>, y=<value optimized out>, width=16, height=16, plane_mask=18446744073709551615, format=2) at GetImage.c:77
#7  0x000000364c68e653 in QX11PixmapData::toImage (this=0x215d490) at image/qpixmap_x11.cpp:1492
#8  0x000000364c678d30 in QPixmap::toImage (this=0x7fff0aed1bd0) at image/qpixmap.cpp:486
#9  0x000000364c639a00 in QWidgetPrivate::setWindowIcon_sys (this=0x28f3890, forceReset=false) at kernel/qwidget_x11.cpp:1459
#10 0x000000364c5f775c in QWidget::create (this=0x28f1470, window=<value optimized out>, initializeWindow=true, destroyOldWindow=true) at kernel/qwidget.cpp:1355
#11 0x000000364c5fc5d6 in QWidget::setVisible (this=0x28f1470, visible=<value optimized out>) at kernel/qwidget.cpp:7379
#12 0x000000364cb582a5 in show (this=0x28f3540, newWidget=0x28f1470, autoShow=true) at ../../src/gui/kernel/qwidget.h:485
#13 QGraphicsProxyWidgetPrivate::setWidget_helper (this=0x28f3540, newWidget=0x28f1470, autoShow=true) at graphicsview/qgraphicsproxywidget.cpp:683
#14 0x0000003ec4de161e in Plasma::ScrollBar::ScrollBar(QGraphicsWidget*) () from /usr/lib64/libplasma.so.3
#15 0x00007ff41b43b449 in ?? () from /usr/lib64/kde4/plasma_applet_folderview.so
#16 0x00007ff41b446704 in ?? () from /usr/lib64/kde4/plasma_applet_folderview.so
#17 0x00007ff41b429838 in ?? () from /usr/lib64/kde4/plasma_applet_folderview.so
#18 0x00007ff41b430e60 in ?? () from /usr/lib64/kde4/plasma_applet_folderview.so
#19 0x0000003ec4cfd34f in Plasma::Applet::flushPendingConstraintsEvents() () from /usr/lib64/libplasma.so.3
#20 0x0000003ec4d14257 in ?? () from /usr/lib64/libplasma.so.3
#21 0x0000003ec4d26d4c in ?? () from /usr/lib64/libplasma.so.3
#22 0x0000003ec4d279b5 in Plasma::Corona::loadLayout(QString const&) () from /usr/lib64/libplasma.so.3
#23 0x0000003ec4d28482 in Plasma::Corona::initializeLayout(QString const&) () from /usr/lib64/libplasma.so.3
#24 0x0000003ec0e4fb90 in ?? () from /usr/lib64/libkdeinit4_plasma-desktop.so
#25 0x0000003ec0e4ff13 in ?? () from /usr/lib64/libkdeinit4_plasma-desktop.so
#26 0x0000003ec0e5173e in ?? () from /usr/lib64/libkdeinit4_plasma-desktop.so
#27 0x000000364a166a36 in QMetaObject::activate (sender=0x2126e70, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x0) at kernel/qobject.cpp:3295
#28 0x000000364a16c14f in QSingleShotTimer::timerEvent (this=0x2126e70) at kernel/qtimer.cpp:308
#29 0x000000364a162c4e in QObject::event (this=0x2126e70, e=0x7fff0aed33e0) at kernel/qobject.cpp:1212
#30 0x000000364c5ab39c in QApplicationPrivate::notify_helper (this=0x207e5b0, receiver=0x2126e70, e=0x7fff0aed33e0) at kernel/qapplication.cpp:4306
#31 0x000000364c5b165b in QApplication::notify (this=<value optimized out>, receiver=0x2126e70, e=0x7fff0aed33e0) at kernel/qapplication.cpp:4189
#32 0x0000003ebe61d126 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#33 0x000000364a153ddc in QCoreApplication::notifyInternal (this=0x206bb20, receiver=0x2126e70, event=0x7fff0aed33e0) at kernel/qcoreapplication.cpp:726
#34 0x000000364a17c6f2 in sendEvent (this=0x2081c80) at kernel/qcoreapplication.h:215
#35 QTimerInfoList::activateTimers (this=0x2081c80) at kernel/qeventdispatcher_unix.cpp:603
#36 0x000000364a179b74 in timerSourceDispatch (source=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:184
#37 0x000000363ec3bd02 in g_main_dispatch (context=0x2080d20) at gmain.c:1960
#38 IA__g_main_context_dispatch (context=0x2080d20) at gmain.c:2513
#39 0x000000363ec3fae8 in g_main_context_iterate (context=0x2080d20, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2591
#40 0x000000363ec3fc9c in IA__g_main_context_iteration (context=0x2080d20, may_block=1) at gmain.c:2654
#41 0x000000364a179863 in QEventDispatcherGlib::processEvents (this=0x2051bc0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#42 0x000000364c64a84e in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#43 0x000000364a152822 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#44 0x000000364a152aec in QEventLoop::exec (this=0x7fff0aed3680, flags=...) at kernel/qeventloop.cpp:201
#45 0x000000364a1561bb in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1003
#46 0x0000003ec0e38846 in kdemain () from /usr/lib64/libkdeinit4_plasma-desktop.so
#47 0x000000363d41ec5d in __libc_start_main (main=0x400910 <_start+240>, argc=1, ubp_av=0x7fff0aed3a58, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, 
    stack_end=0x7fff0aed3a48) at libc-start.c:226
#48 0x0000000000400849 in _start ()

Reported using DrKonqi
Comment 1 Pino Toscano 2010-11-12 16:58:19 UTC
Looks like threading issues within exiv2.
Comment 2 caulier.gilles 2010-11-13 12:56:56 UTC
yes crash appear in Exiv2 library, through libkexiv2.

Which Exiv2 version you use on your computer ?

Are you sure to not use more than one version at the same time ?

Can you identify the image which cause the crash (it sound like a JPEG file)

I recommend to try with Exiv2 0.20.0 

Gilles Caulier
Comment 3 caulier.gilles 2010-11-24 09:13:56 UTC
digiKam 1.6.0 is out:

http://www.digikam.org/drupal/node/550

Please update and check if this entry still valid.

Thanks in advance

Gilles Caulier
Comment 4 Andreas Huggel 2010-11-24 11:36:19 UTC
This is the same as #257741

Andreas
Comment 5 caulier.gilles 2010-11-24 11:39:40 UTC
To Plasma developpers,

See https://bugs.kde.org/show_bug.cgi?id=257741#c8

Gilles Caulier

*** This bug has been marked as a duplicate of bug 257741 ***
Comment 6 caulier.gilles 2019-07-29 04:32:15 UTC
Fixed with bug #257741