Bug 167420 - Crash when trying to open Plugins menu - Signal 6 (SIGABRT)
Summary: Crash when trying to open Plugins menu - Signal 6 (SIGABRT)
Status: RESOLVED FIXED
Alias: None
Product: gwenview
Classification: Applications
Component: general (show other bugs)
Version: 1.4.2
Platform: unspecified Linux
: NOR crash
Target Milestone: ---
Assignee: Gwenview Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-07-25 13:15 UTC by Alan Prescott
Modified: 2012-10-19 13:27 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alan Prescott 2008-07-25 13:15:34 UTC
Version:           1.4.2 (using 3.5.9 "release 65.2" , openSUSE )
Compiler:          Target: i586-suse-linux
OS:                Linux (i686) release 2.6.18.8-0.10-default

Title says it all.
Gwenview crashes when I try to open the Plugins menu

<backtrace>
System configuration startup check disabled.

(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1231139968 (LWP 11580)]
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[KCrash handler]
#6  0xb7f74410 in __kernel_vsyscall ()
#7  0xb6f84060 in raise () from /lib/libc.so.6
#8  0xb6f85801 in abort () from /lib/libc.so.6
#9  0xb713b4f0 in __gnu_cxx::__verbose_terminate_handler ()
   from /usr/lib/libstdc++.so.6
#10 0xb7138f15 in std::set_unexpected () from /usr/lib/libstdc++.so.6
#11 0xb7138f52 in std::terminate () from /usr/lib/libstdc++.so.6
#12 0xb713908a in __cxa_throw () from /usr/lib/libstdc++.so.6
#13 0xb6419700 in Exiv2::ExifTags::registerMakerTagInfo ()
   from /usr/lib/libexiv2.so.0
#14 0xb6411ad1 in Exiv2::SigmaMakerNote::RegisterMn::RegisterMn ()
   from /usr/lib/libexiv2.so.0
#15 0xb5be4b7b in __static_initialization_and_destruction_0 ()
   from /usr/lib/libexiv2.so.4
#16 0xb5c4f395 in __do_global_ctors_aux () from /usr/lib/libexiv2.so.4
#17 0xb5b6f985 in _init () from /usr/lib/libexiv2.so.4
#18 0xb7f833e3 in call_init () from /lib/ld-linux.so.2
#19 0xb7f834f3 in _dl_init_internal () from /lib/ld-linux.so.2
#20 0xb7f86ff6 in dl_open_worker () from /lib/ld-linux.so.2
#21 0xb7f83026 in _dl_catch_error () from /lib/ld-linux.so.2
#22 0xb7f86929 in _dl_open () from /lib/ld-linux.so.2
#23 0xb6b45d2d in dlopen_doit () from /lib/libdl.so.2
#24 0xb7f83026 in _dl_catch_error () from /lib/ld-linux.so.2
#25 0xb6b461dc in _dlerror_run () from /lib/libdl.so.2
#26 0xb6b45c64 in dlopen@@GLIBC_2.1 () from /lib/libdl.so.2
#27 0xb7b9f79e in lt_dladdsearchdir () from /opt/kde3/lib/libkdecore.so.4
#28 0xb7b9f1d0 in lt_dlsetsearchpath () from /opt/kde3/lib/libkdecore.so.4
#29 0xb7ba00d8 in lt_dlopen () from /opt/kde3/lib/libkdecore.so.4
#30 0xb7b1a0ae in KLibLoader::library () from /opt/kde3/lib/libkdecore.so.4
#31 0xb65b23b8 in KIPI::PluginLoader::loadPlugin ()
   from /opt/kde3/lib/libkipi.so.0
#32 0xb65b2d82 in KIPI::PluginLoader::loadPlugins ()
   from /opt/kde3/lib/libkipi.so.0
#33 0xb6802f85 in Gwenview::MainWindow::loadPlugins ()
   from /opt/kde3/lib/libkdeinit_gwenview.so
#34 0xb680bb89 in Gwenview::MainWindow::qt_invoke ()
   from /opt/kde3/lib/libkdeinit_gwenview.so
#35 0xb7517b91 in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#36 0xb751886d in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#37 0xb786975c in QPopupMenu::aboutToShow ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#38 0xb76210dc in QPopupMenu::popup () from /usr/lib/qt3/lib/libqt-mt.so.3
#39 0xb7614cdc in QMenuBar::openActPopup () from /usr/lib/qt3/lib/libqt-mt.so.3
#40 0xb7614fa4 in QMenuBar::setActiveItem ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#41 0xb7615afa in QMenuBar::mousePressEvent ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#42 0xb75505ae in QWidget::event () from /usr/lib/qt3/lib/libqt-mt.so.3
#43 0xb74b86e7 in QApplication::internalNotify ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#44 0xb74b9629 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3
#45 0xb7b3f0d2 in KApplication::notify () from /opt/kde3/lib/libkdecore.so.4
#46 0xb7457877 in QETWidget::translateMouseEvent ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#47 0xb7456a1f in QApplication::x11ProcessEvent ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#48 0xb74673da in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#49 0xb74cf510 in QEventLoop::enterLoop () from /usr/lib/qt3/lib/libqt-mt.so.3
#50 0xb74cf3a6 in QEventLoop::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#51 0xb74b829f in QApplication::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#52 0xb68166d7 in kdemain () from /opt/kde3/lib/libkdeinit_gwenview.so
#53 0xb7f5f524 in kdeinitmain () from /opt/kde3/lib/kde3/gwenview.so
#54 0x0804e2ff in QGList::~QGList ()
#55 0x00000007 in ?? ()
#56 0x0807dd90 in ?? ()
#57 0x00000001 in ?? ()
#58 0x00000000 in ?? ()
</backtrace>
Comment 1 Aurelien Gateau 2008-07-25 13:38:03 UTC
> #12 0xb713908a in __cxa_throw () from /usr/lib/libstdc++.so.6
> #13 0xb6419700 in Exiv2::ExifTags::registerMakerTagInfo ()
>    from /usr/lib/libexiv2.so.0
> #14 0xb6411ad1 in Exiv2::SigmaMakerNote::RegisterMn::RegisterMn ()
>    from /usr/lib/libexiv2.so.0


Sounds like an Exiv2 issue. What version of libexiv2 do you use? Can you 
try upgrading it?

Can you attach the faulty image to the bug report?
Comment 2 Alan Prescott 2008-08-10 11:20:30 UTC
libexiv2 info
<snip>
# rpm -qi libexiv2
Name        : libexiv2                     Relocations: (not relocatable)
Version     : 0.15                              Vendor: openSUSE Build Service
Release     : 1.1                           Build Date: Fri 31 Aug 2007 10:43:51 BST
Install Date: Tue 08 Jan 2008 13:21:27 GMT      Build Host: build19
Group       : Development/Libraries/C and C++   Source RPM: libexiv2-0.15-1.1.src.rpm
Size        : 1662193                          License: GNU General Public License (GPL)
Signature   : DSA/SHA1, Fri 31 Aug 2007 10:44:08 BST, Key ID 3b3011b76b9d6523
URL         : http://www.exiv2.org/
Summary     : Library and tools to access image metadata
Description :
Exiv2 is a C++ library and a command line utility to access image
metadata.

Authors:
--------
    Andreas Huggel <ahuggel@gmx.net>
Distribution: KDE:Backports / openSUSE_10.2
</snip>

Looking into YaST I seem to also have
libexiv2-2 0.16-17.1
libexiv2-4 0.17.1-2.1 (required for digikam, kipi, kphotoalbum)

I've removed libexiv2-2 0.16-17.1 as nothing was referencing it (just in case) but still gwenview crashes.

Not sure what you mean by 'faulty image' - if I just open gwenview and click on the plugins menu I get the crash - it's no particular jpeg/png etc.

PS - thanks for a nice viewer - I'd only recently found that I could run my scanner from gwenview:plugins. Previously I'd used kooka since I'd been using that before even though I had to wrap a script round it to get the permissions fixed. Now that I'm running gwenview directly (rather than just using it as a viewer within konqueror) I've found all the excellent features I'd not got around to exploring before.
Comment 3 Aurelien Gateau 2008-08-18 16:01:10 UTC
I thought it was in an image because it crashes on Exiv2, but based on what you say, I guess it crashes in a plugin initialization.

It would help to narrow which plugin is faulty. Can you have a look at the console output to see if there is some kipi debug output?

If there's nothing else, maybe you can try "hiding" the plugins?

- Go to the folder where plugins are installed (/usr/lib/kde3 on my Ubuntu)

- List plugins using exiv2 with this command:
for x in kipiplugin_*so ; do if ldd $x | grep -q exiv2 && echo $x; done

- Move them away. For example create a "disabled" folder in /usr/lib/kde3 and move the listed plugins in it.

Now start Gwenview and opens the plugins menu. It should not crash. To find out which plugin(s) is faulty, move the .so back until it crash again.
Comment 4 Alan Prescott 2008-08-19 09:21:36 UTC
From CLI

<console>
alan@nikyo:~> gwenview
terminate called after throwing an instance of 'Exiv2::Error'
  what():  MakerTagInfo registry full
KCrash: Application 'gwenview' crashing...
</console>

I'm guessing that by
for x in kipiplugin_*so ; do if ldd $x | grep -q exiv2 && echo $x; done
you want a list of the plugins referencing exiv2 - so I ran

<console>
nikyo:/opt/kde3/lib/kde3 # for x in kipiplugin_*so ; do [[ `ldd $x | grep -c exiv2` -gt 0 ]] && echo $x  ; done
kipiplugin_batchprocessimages.so
kipiplugin_galleryexport.so
kipiplugin_gpssync.so
kipiplugin_jpeglossless.so
kipiplugin_metadataedit.so
kipiplugin_printwizard.so
kipiplugin_rawconverter.so
kipiplugin_sendimages.so
kipiplugin_simpleviewer.so
kipiplugin_timeadjust.so
</console>

I moved these to /disabled as suggested and run from CLI - without a crash

<console>
alan@nikyo:~> gwenview
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
ASSERT: "plugin" in /usr/src/packages/BUILD/gwenview-1.4.2/src/app/mainwindow.cpp (1303)
</console>

I restored kipiplugin_batchprocessimages.so

<console>
alan@nikyo:~> gwenview
ASSERT: "!d->mDecoderTimer.isActive()" in /usr/src/packages/BUILD/gwenview-1.4.2/src/gvcore/imageloader.cpp (475)
terminate called after throwing an instance of 'Exiv2::Error'
  what():  MakerTagInfo registry full
KCrash: Application 'gwenview' crashing...
</console>

I returned kipiplugin_batchprocessimages.so to /disabled and restored kipiplugin_galleryexport.so

<console>
alan@nikyo:~> gwenview
ASSERT: "!d->mDecoderTimer.isActive()" in /usr/src/packages/BUILD/gwenview-1.4.2/src/gvcore/imageloader.cpp (475)
terminate called after throwing an instance of 'Exiv2::Error'
  what():  MakerTagInfo registry full
KCrash: Application 'gwenview' crashing...
</console>

One more try just for luck - this time with a restored kipiplugin_simpleviewer.so

<console>
alan@nikyo:~> gwenview
ASSERT: "!d->mDecoderTimer.isActive()" in /usr/src/packages/BUILD/gwenview-1.4.2/src/gvcore/imageloader.cpp (475)
terminate called after throwing an instance of 'Exiv2::Error'
  what():  MakerTagInfo registry full
KCrash: Application 'gwenview' crashing...
</console>

As you can see it's the same error each time so I stopped at that point.

Hope this helps,

Alan
Comment 5 Aurelien Gateau 2008-08-19 13:32:55 UTC
Alan Prescott wrote:
> I'm guessing that by
> for x in kipiplugin_*so ; do if ldd $x | grep -q exiv2 && echo $x; done
> you want a list of the plugins referencing exiv2 - so I ran

Hum... yes, zsh did not choke on the extra "if" but I noticed bash did. Removing the if would have worked better :)

> <console>
> alan@nikyo:~> gwenview
> ASSERT: "!d->mDecoderTimer.isActive()" in
> /usr/src/packages/BUILD/gwenview-1.4.2/src/gvcore/imageloader.cpp (475)
> terminate called after throwing an instance of 'Exiv2::Error'
>   what():  MakerTagInfo registry full
> KCrash: Application 'gwenview' crashing...
> </console>

I just remembered Exiv2 changed the way it raised exception in recent versions. Can you try to downgrade to the oldest available version of libexiv2 you have on your system?
Comment 6 Alan Prescott 2008-08-19 15:39:21 UTC
Reverting libexiv2 back to 0.11-8 (from 0.12-101) does seem to fix it.

I suppose I could just drop out the offending kipi plugins as the main one I was after was acquireimages.

Does this count as fixed? - I'll let you decide

Cheers,

Alan
Comment 7 Aurelien Gateau 2008-08-29 17:38:47 UTC
Sorry for the delay, was a bit drowned by bugzilla flood :)

Can you try editing jpegcontent.cpp and replacing the line which says (should be line 264):

  } catch (Exiv2::Error&) {

with:

  } catch (...) {

I believe it should fix the bug.
Comment 8 Alan Prescott 2008-09-01 16:26:24 UTC
Ok - downloaded sources, made mod as suggested and compiled.

Looks to have fixed the problem - I'll log it as fixed (at least it is for me).

Thanks,

Alan
Comment 9 Aurelien Gateau 2008-09-02 17:19:42 UTC
Applied patch in svn.