Bug 140176 - showfoto crashes when selecting a filter
Summary: showfoto crashes when selecting a filter
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Showfoto-Plugins (show other bugs)
Version: unspecified
Platform: Gentoo Packages Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-01-16 23:50 UTC by Christoph Nodes
Modified: 2022-02-04 22:37 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 0.9.1


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Christoph Nodes 2007-01-16 23:50:06 UTC
Version:           0.4.0 (using KDE KDE 3.5.5)
Installed from:    Gentoo Packages
Compiler:          i686-pc-linux-gnu-gcc (GCC) 4.1.1 (Gentoo 4.1.1) 
OS:                Linux

Selecting a filter from the filter menu makes showfoto crash. One filter (I haven't tried every filter) which doesn't result in a crash is 'Distortion Effects ...', but it shows a preview window with no preview.

In digikam everything works fine.

I did a compile with --enable-debug=full configured and a run in gdb resulted in:
...
[New Thread -1293870176 (LWP 5028)]
showfoto: WARNING: [Digikam::DImg* Digikam::DImgInterface::getImg()] d->image is NULL

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1232939344 (LWP 4991)]
0xb5cc2270 in Digikam::DImg::isNull (this=0x0) at dimg.cpp:527
527         return m_priv->null;
(gdb) bt 
#0  0xb5cc2270 in Digikam::DImg::isNull (this=0x0) at dimg.cpp:527
#1  0xb5cce272 in Digikam::DImg::copyQImage (this=0x0) at dimg.cpp:1097
#2  0xb5c29e51 in Digikam::ImageRegionWidget::slotZoomFactorChanged (
    this=0x840aea0, factor=1) at imageregionwidget.cpp:112
#3  0xb5c2a652 in ImageRegionWidget (this=0x840aea0, wp=470, hp=350, 
    parent=0x840fe28, scrollBar=false) at imageregionwidget.cpp:96
#4  0xb5c2a925 in ImagePannelWidget (this=0x840c898, w=470, h=350, 
    settingsSection=@0xbf97c67c, parent=0x84b7050, separateViewMode=2)
    at imagepannelwidget.cpp:129
#5  0xb5c4b432 in CtrlPanelDlg (this=0xbf97c734, parent=0x8207750, 
    title=@0xbf97c6e8, name=@0xbf97c6e4, loadFileSettings=false, 
    tryAction=false, progressBar=true, separateViewMode=2, 
    bannerFrame=0x83fe108) at ctrlpaneldlg.cpp:134
#6  0xb5534e1e in DigikamCharcoalImagesPlugin::ImageEffect_Charcoal::ImageEffect_Charcoal () from /usr/lib/kde3/digikamimageplugin_charcoal.so
#7  0x00000000 in ?? ()

I hope this makes sense.

Best regards,
Christoph
Comment 1 caulier.gilles 2007-01-17 18:19:07 UTC
>I hope this makes sense. 

Well no (:=)...

If the image data can be displayed into the main window, the image instance is passed to plugins...

This can be a memory problem (allocation ?) or something is wrong in liking stuff...

Perhaps the package is broken. Can you give me more informations about ? Witch compiler version have you used ? etc...

Marcel, if i remember, you use gentoo in your computer. Are you any suggestions ?

Gilles Caulier
Comment 2 Christoph Nodes 2007-01-18 20:36:58 UTC
On Wednesday 17 January 2007 18:19, Gilles Caulier wrote:
> If the image data can be displayed into the main window, the image
> instance is passed to plugins...


It is curious in that the crash only happens with showfoto. Digikam just 
works fine.
(And BTW, digikam is definitely the best for image 
viewing/processing/management for linux ;-)

> This can be a memory problem (allocation ?) or something is wrong in
> liking stuff...
>
> Perhaps the package is broken.


I also tried this on a second gentoo machine with the same version of 
digikam/showfoto - same problem.

> Can you give me more informations 
> about ? Witch compiler version have you used ? etc...


Sure:

# uname -a
Linux p35 2.6.19-ck2-r1 #1 Wed Jan 10 01:18:17 CET 2007 i686 Intel(R) 
Pentium(R) M processor 1.50GHz GenuineIntel GNU/Linux

# gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/gcc-4.1.1/work/gcc-4.1.1/configure
--prefix=/usr
--bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1
--includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include
--datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1
--mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man
--infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info
--with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4
--host=i686-pc-linux-gnu
--build=i686-pc-linux-gnu
--disable-altivec
--enable-nls
--without-included-gettext
--with-system-zlib
--disable-checking
--disable-werror
--disable-libunwind-exceptions
--disable-multilib
--disable-libmudflap
--disable-libssp
--enable-java-awt=gtk
--enable-languages=c,c++,java,fortran
--enable-shared
--enable-threads=posix
--enable-__cxa_atexit
--enable-clocale=gnu
Thread model: posix
gcc version 4.1.1 (Gentoo 4.1.1)

This could be important, too:
# grep CFLAGS /etc/make.conf
CFLAGS="-pipe -O2 -march=pentium-m -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

For my digikam emerge the USE flags have been
USE="arts kdeenablefinal kdehiddenvisibility xinerama -debug -doc -nfs"
so a typical compile line would be (note the CFLAGS, maybe this is a 
problem with -fvisibility=hidden or some other optimization?):

i686-pc-linux-gnu-g++ ...
-DQT_THREAD_SUPPORT  -D_REENTRANT  -Wno-long-long -Wundef 
-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align 
-Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -fno-builtin 
-g3 -fno-inline -Wformat-security -Wmissing-format-attribute 
-Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common 
-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL 
-DQT_NO_COMPAT -DQT_NO_TRANSLATION 
-fvisibility=hidden -fvisibility-inlines-hidden -DQT_CLEAN_NAMESPACE
...

What else?
Maybe which libraries I use?
# ldd /usr/bin/showfoto 
        linux-gate.so.1 =>  (0xffffe000)
        liblcms.so.1 => /usr/lib/liblcms.so.1 (0xb7f47000)
        libtiff.so.3 => /usr/lib/libtiff.so.3 (0xb7ef3000)
        libkdeprint.so.4 => /usr/kde/3.5/lib/libkdeprint.so.4
(0xb7e32000)
        libkutils.so.1 => /usr/kde/3.5/lib/libkutils.so.1 (0xb7dd9000)
        libkparts.so.2 => /usr/kde/3.5/lib/libkparts.so.2 (0xb7d98000)
        libkio.so.4 => /usr/kde/3.5/lib/libkio.so.4 (0xb7a94000)
        libkdeui.so.4 => /usr/kde/3.5/lib/libkdeui.so.4 (0xb77d7000)
        libkdesu.so.4 => /usr/kde/3.5/lib/libkdesu.so.4 (0xb77c1000)
        libkwalletclient.so.1 => /usr/kde/3.5/lib/libkwalletclient.so.1 
(0xb77b1
000)
        libkdecore.so.4 => /usr/kde/3.5/lib/libkdecore.so.4 (0xb75a0000)
        libDCOP.so.4 => /usr/kde/3.5/lib/libDCOP.so.4 (0xb7571000)
        libresolv.so.2 => /lib/libresolv.so.2 (0xb7542000)
        libutil.so.1 => /lib/libutil.so.1 (0xb753e000)
        libart_lgpl_2.so.2 => /usr/lib/libart_lgpl_2.so.2 (0xb7528000)
        libidn.so.11 => /usr/lib/libidn.so.11 (0xb74f8000)
        libkdefx.so.4 => /usr/kde/3.5/lib/libkdefx.so.4 (0xb74ce000)
        libqt-mt.so.3 => /usr/qt/3/lib/libqt-mt.so.3 (0xb6def000)
        libmng.so.1 => /usr/lib/libmng.so.1 (0xb6d90000)
        libXi.so.6 => /usr/lib/libXi.so.6 (0xb6d88000)
        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb6d84000)
        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb6d7b000)
        libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb6d76000)
        libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb6d72000)
        libXft.so.2 => /usr/lib/libXft.so.2 (0xb6d5f000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb6d30000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb6cc2000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb6ca3000)
        libpng.so.3 => /usr/lib/libpng.so.3 (0xb6c7e000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0xb6c6f000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0xb6c66000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0xb6c4f000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb6c3c000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb6c34000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb6b4a000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb6b46000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb6b41000)
        libdl.so.2 => /lib/libdl.so.2 (0xb6b3d000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb6b1e000)
        libexiv2-0.12.so => /usr/lib/libexiv2-0.12.so (0xb6a41000)
        libz.so.1 => /lib/libz.so.1 (0xb6a2f000)
        libstdc++.so.6 
=> /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libstdc++.so.6 (0
xb694d000)
        libm.so.6 => /lib/libm.so.6 (0xb6928000)
        libc.so.6 => /lib/libc.so.6 (0xb680a000)
        libgcc_s.so.1 
=> /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libgcc_s.so.1 (0xb
67ff000)
        /lib/ld-linux.so.2 (0xb7f78000)

# kde-config --version
Qt: 3.3.6
KDE: 3.5.5
kde-config: 1.0

I hope this gives you a hint what could be wrong with my showfoto 
compilation. If you need more specific information, please tell me.

Best regards,
Christoph Nodes
Comment 3 Marcel Wiesweg 2007-01-18 22:30:20 UTC
I can reproduce it.
Open any image in ShowFoto, open Charcoal effect.

#9  0xb5b57269 in DImg (this=0xbfb0ad74, image=@0x0) at dimg.cpp:79
#10 0xb5b5a439 in Digikam::DImg::copy (this=0x0) at dimg.cpp:777
#11 0xb5aab8e0 in Digikam::ImageRegionWidget::slotZoomFactorChanged (
    this=0x8492638, factor=1) at imageregionwidget.cpp:111
#12 0xb5aabdc4 in ImageRegionWidget (this=0x8492638, wp=470, hp=350, 
    parent=0x84a5e20, scrollBar=false) at imageregionwidget.cpp:96
#13 0xb5aba391 in ImagePannelWidget (this=0x84a6ea8, w=470, h=350, 
    settingsSection=@0xbfb0b2c0, parent=0x845bdd8, separateViewMode=2)
    at imagepannelwidget.cpp:130
#14 0xb5ad4277 in CtrlPanelDlg (this=0xbfb0b374, parent=0x81f1a50, 
    title=@0xbfb0b328, name=@0xbfb0b324, loadFileSettings=false, 
    tryAction=false, progressBar=true, separateViewMode=2, 
    bannerFrame=0x81dc1b0) at ctrlpaneldlg.cpp:134
#15 0xb4fc803a in ImageEffect_Charcoal (this=0xbfb0b374, parent=0x81f1a50, 
    title=@0xbfb0b448, banner=0x81dc1b0) at imageeffect_charcoal.cpp:51
#16 0xb4fc6578 in ImagePlugin_Charcoal::slotCharcoal (this=0x83dd698)
    at imageplugin_charcoal.cpp:66
#17 0xb4fc6c89 in ImagePlugin_Charcoal::qt_invoke (this=0x83dd698, _id=2, 
    _o=0xbfb0b4e8) at imageplugin_charcoal.moc:82
#18 0xb6fcad59 in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#19 0xb6fcb9ad in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#20 0xb78bea1d in KAction::activated () from /usr/kde/3.5/lib/libkdeui.so.4
#21 0xb78c211c in KAction::slotPopupActivated ()
   from /usr/kde/3.5/lib/libkdeui.so.4
#22 0xb78c23ab in KAction::qt_invoke () from /usr/kde/3.5/lib/libkdeui.so.4
#23 0xb6fcad59 in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#24 0xb7304d7e in QSignal::signal () from /usr/qt/3/lib/libqt-mt.so.3
#25 0xb6fe6ef5 in QSignal::activate () from /usr/qt/3/lib/libqt-mt.so.3
#26 0xb70d0949 in QPopupMenu::mouseReleaseEvent ()
   from /usr/qt/3/lib/libqt-mt.so.3
#27 0xb7003cce in QWidget::event () from /usr/qt/3/lib/libqt-mt.so.3
#28 0xb6f6ba27 in QApplication::internalNotify ()
   from /usr/qt/3/lib/libqt-mt.so.3
#29 0xb6f6c769 in QApplication::notify () from /usr/qt/3/lib/libqt-mt.so.3
#30 0xb75f3cef in KApplication::notify ()
   from /usr/kde/3.5/lib/libkdecore.so.4
#31 0xb6f0c9bd in QETWidget::translateMouseEvent ()
   from /usr/qt/3/lib/libqt-mt.so.3
#32 0xb6f0b989 in QApplication::x11ProcessEvent ()
   from /usr/qt/3/lib/libqt-mt.so.3
#33 0xb6f1b8c1 in QEventLoop::processEvents ()
   from /usr/qt/3/lib/libqt-mt.so.3
#34 0xb6f82681 in QEventLoop::enterLoop () from /usr/qt/3/lib/libqt-mt.so.3
#35 0xb6f82506 in QEventLoop::exec () from /usr/qt/3/lib/libqt-mt.so.3
#36 0xb6f6b4bf in QApplication::exec () from /usr/qt/3/lib/libqt-mt.so.3
#37 0x0806ca40 in main (argc=-1245522360, argv=0xb688e160) at main.cpp:117
Comment 4 caulier.gilles 2007-01-19 07:48:19 UTC
Marcel,

Under Suse and Mandriva, i cannot reproduce the problem using current implementation.

Why the copied DImg instance is null in your computer ? It's a memory allocation problem ?

Gilles
Comment 5 Marcel Wiesweg 2007-01-20 23:46:54 UTC
SVN commit 625731 by mwiesweg:

Fix a linking problem with showfoto, image plugins and --enable-gcc-hidden-visibility:
All image plugins link to libdigikam.so.
The showfoto executable however does not link to this lib, but statically links the relevant parts.
With visibility hidden, now the linker obviously cannot see the already linked DImgInterface class,
and there would be two different static variables for DImgInterface::instance(). One with the loaded
image, the other (from the image plugins) with a null image.

BUG: 140176


 M  +1 -1      dimginterface.h  


--- trunk/extragear/graphics/digikam/utilities/imageeditor/canvas/dimginterface.h #625730:625731
@@ -44,7 +44,7 @@
 class LoadingDescription;
 class DImgInterfacePrivate;
 
-class DImgInterface : public QObject
+class DIGIKAM_EXPORT DImgInterface : public QObject
 {
     Q_OBJECT
 
Comment 6 Christoph Nodes 2007-01-22 09:16:09 UTC
works very well here, thanks a lot.

Christoph