Bug 405655

Summary: missing intra-kdelibs4 dependencies
Product: [openSUSE] openSUSE 11.1 Reporter: Lars Marowsky-Bree <lmb>
Component: KDE4 WorkspaceAssignee: E-mail List <kde-maintainers>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P1 - Urgent CC: wstephenson
Version: Factory   
Target Milestone: Alpha 0   
Hardware: i586   
OS: Other   
Whiteboard:
Found By: Customer Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Lars Marowsky-Bree 2008-07-02 09:36:25 UTC
kde4-kopete-4.0.4-19.18 crashes for me trying to connect to ICQ.

Then the KDE Crash dialogue comes up. I can read the backtrace. I try to use "Save as", and the drkonqi crashes with a segment violation at the file dialogue:



#0  0xb73c363d in KCompositeJob::hasSubjobs () from /usr/lib/libkdecore.so.5
#1  0xb7a5e57e in KIO::ListJob::slotFinished () from /usr/lib/libkio.so.5
#2  0xb7a66023 in KIO::ListJob::qt_metacall () from /usr/lib/libkio.so.5
#3  0xb71fc3fa in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#4  0xb71fc972 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#5  0xb7b052d7 in KIO::SlaveInterface::finished () from /usr/lib/libkio.so.5
#6  0xb7b07def in KIO::SlaveInterface::dispatch () from /usr/lib/libkio.so.5
#7  0xb7b05b77 in KIO::SlaveInterface::dispatch () from /usr/lib/libkio.so.5
#8  0xb7af9600 in KIO::Slave::gotInput () from /usr/lib/libkio.so.5
#9  0xb7af9973 in KIO::Slave::qt_metacall () from /usr/lib/libkio.so.5
#10 0xb71fc3fa in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#11 0xb71fc972 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#12 0xb7a34597 in KIO::Connection::readyRead () from /usr/lib/libkio.so.5
#13 0xb7a35fd2 in ?? () from /usr/lib/libkio.so.5
#14 0xb7a36626 in KIO::Connection::qt_metacall () from /usr/lib/libkio.so.5
#15 0xb71f733b in QMetaCallEvent::placeMetaCall () from /usr/lib/libQtCore.so.4
#16 0xb71f8ed1 in QObject::event () from /usr/lib/libQtCore.so.4
#17 0xb674decc in QApplicationPrivate::notify_helper ()
   from /usr/lib/libQtGui.so.4
#18 0xb675431e in QApplication::notify () from /usr/lib/libQtGui.so.4
#19 0xb777639d in KApplication::notify () from /usr/lib/libkdeui.so.5
#20 0xb71eab51 in QCoreApplication::notifyInternal ()
   from /usr/lib/libQtCore.so.4
#21 0xb71eb411 in QCoreApplicationPrivate::sendPostedEvents ()
   from /usr/lib/libQtCore.so.4
#22 0xb71eb5ad in QCoreApplication::sendPostedEvents ()
   from /usr/lib/libQtCore.so.4
#23 0xb67d800f in ?? () from /usr/lib/libQtGui.so.4
#24 0xb71e92ca in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#25 0xb71e948a in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#26 0xb6b5527f in QDialog::exec () from /usr/lib/libQtGui.so.4
#27 0xb7b3709e in KFileDialog::getSaveFileName () from /usr/lib/libkio.so.5
#28 0x0805132d in _start ()
Comment 1 Lubos Lunak 2008-07-02 12:22:07 UTC
I cannot reproduce. Can you reproduce reliably? Does it happen with other apps (e.g. kill -ABRT on something)? Where are you trying to save the file?
Comment 2 Dirk Mueller 2008-07-02 12:46:59 UTC
please also install kdelibs4-debuginfo and libqt4-debuginfo, that should help with the backtrace above. 
Comment 3 Lars Marowsky-Bree 2008-07-02 14:50:03 UTC
Yes, right now I can reproduce all the time. The file dialog seems to crash for all KDE4 apps. This is 11.0 with all available updates.

I installed kdelibs4-debuginfo, but libqt4-debuginfo doesn't exist.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb611d6d0 (LWP 25006)]
0xb73fc63d in KCompositeJob::hasSubjobs () from /usr/lib/libkdecore.so.5
(gdb) bt
#0  0xb73fc63d in KCompositeJob::hasSubjobs () from /usr/lib/libkdecore.so.5
#1  0xb7a9757e in KIO::ListJob::slotFinished (this=0x8ac5218)
    at /usr/src/debug/kdelibs-4.0.4/kio/kio/job.cpp:2358
#2  0xb7a9f023 in KIO::ListJob::qt_metacall (this=0x8ac5218, 
    _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0xbff49b48)
    at /usr/src/debug/kdelibs-4.0.4/build/kio/jobclasses.moc:747
#3  0xb72353fa in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#4  0xb7235972 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#5  0xb7b3e2d7 in KIO::SlaveInterface::finished (this=0x8a94528)
    at /usr/src/debug/kdelibs-4.0.4/build/kio/slaveinterface.moc:161
#6  0xb7b40def in KIO::SlaveInterface::dispatch (this=0x8a94528, _cmd=104, 
    rawdata=@0xbff49ce4)
    at /usr/src/debug/kdelibs-4.0.4/kio/kio/slaveinterface.cpp:176
#7  0xb7b3eb77 in KIO::SlaveInterface::dispatch (this=0x8a94528)
    at /usr/src/debug/kdelibs-4.0.4/kio/kio/slaveinterface.cpp:90
#8  0xb7b32600 in KIO::Slave::gotInput (this=0x8a94528)
    at /usr/src/debug/kdelibs-4.0.4/kio/kio/slave.cpp:319
#9  0xb7b32973 in KIO::Slave::qt_metacall (this=0x8a94528, 
    _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbff49dd8)
    at /usr/src/debug/kdelibs-4.0.4/build/kio/slave.moc:75
#10 0xb72353fa in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#11 0xb7235972 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#12 0xb7a6d597 in KIO::Connection::readyRead (this=0x8b07990)
    at /usr/src/debug/kdelibs-4.0.4/build/kio/connection.moc:84
#13 0xb7a6efd2 in KIO::ConnectionPrivate::dequeue (this=0x8ae3be0)
    at /usr/src/debug/kdelibs-4.0.4/kio/kio/connection.cpp:82
#14 0xb7a6f626 in KIO::Connection::qt_metacall (this=0x8b07990, 
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x8a515f0)
    at /usr/src/debug/kdelibs-4.0.4/build/kio/connection.moc:72
#15 0xb723033b in QMetaCallEvent::placeMetaCall () from /usr/lib/libQtCore.so.4
#16 0xb7231ed1 in QObject::event () from /usr/lib/libQtCore.so.4
#17 0xb6786ecc in QApplicationPrivate::notify_helper ()
   from /usr/lib/libQtGui.so.4
#18 0xb678d31e in QApplication::notify () from /usr/lib/libQtGui.so.4
#19 0xb77af39d in KApplication::notify (this=0xbff4b5dc, receiver=0x8b07990, 
    event=0x8b08118)
    at /usr/src/debug/kdelibs-4.0.4/kdeui/kernel/kapplication.cpp:314
#20 0xb7223b51 in QCoreApplication::notifyInternal ()
   from /usr/lib/libQtCore.so.4
#21 0xb7224411 in QCoreApplicationPrivate::sendPostedEvents ()
   from /usr/lib/libQtCore.so.4
#22 0xb72245ad in QCoreApplication::sendPostedEvents ()
   from /usr/lib/libQtCore.so.4
#23 0xb681100f in ?? () from /usr/lib/libQtGui.so.4
#24 0xb72222ca in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#25 0xb722248a in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#26 0xb6b8e27f in QDialog::exec () from /usr/lib/libQtGui.so.4
#27 0xb7b7009e in KFileDialog::getSaveFileName (dir=@0xbff4a6dc, 
    filter=@0xbff4a754, parent=0x815ee20, caption=@0xbff4a750)
    at /usr/src/debug/kdelibs-4.0.4/kio/kfile/kfiledialog.cpp:385
#28 0x0805132d in _start ()
Comment 4 Will Stephenson 2008-07-09 06:37:58 UTC
Looks like the same crash in your bug 405749 so I guess there is something specific to your setup that causes KIO to crash, we should sort this one.
Comment 5 Will Stephenson 2008-07-10 10:50:07 UTC
*** Bug 405749 has been marked as a duplicate of this bug. ***
Comment 6 Will Stephenson 2008-07-10 10:57:12 UTC
reporter had mixed versions of kde packages installed.

See group of newer packages at the bottom of this list. This indicates a BIC
change happened.

> bundle-lang-kde-en-11.0-126.1
> compiz-kde-0.7.4-31.1
> compiz-kde4-0.7.4-31.2
> kde4-akregator-4.0.80-9.3
> kde4-ark-4.0.4-19.1
> kde4-dolphin-4.0.4-22.4
> kde4-gwenview-4.0.4-14.1
> kde4-kaddressbook-4.0.80-9.3
> kde4-kcalc-4.0.4-19.1
> kde4-kcm_gtk-1.1-40.1
> kde4-kcolorchooser-4.0.4-14.1
> kde4-kdm-4.0.4-69.2
> kde4-kdm-branding-openSUSE-11.0-93.2
> kde4-kdnssd-4.0.4-19.20
> kde4-keditbookmarks-4.0.4-22.4
> kde4-kfind-4.0.4-22.4
> kde4-kgamma-4.0.4-14.1
> kde4-kget-4.0.4-19.20
> kde4-kgpg-4.0.4-19.1
> kde4-kio_audiocd-4.0.4-15.1
> kde4-kio_iso-1.80.99-32.1
> kde4-kio_kamera-4.0.4-14.1
> kde4-kio_sysinfo-11.0-93.2
> kde4-kio_sysinfo-branding-openSUSE-11.0-93.2
> kde4-kmahjongg-4.0.4-16.1
> kde4-kmail-4.0.80-9.3
> kde4-kmines-4.0.4-16.1
> kde4-kmix-4.0.4-15.1
> kde4-knewsticker-4.0.4-19.20
> kde4-knotes-4.0.80-9.3
> kde4-konqueror-4.0.4-22.4
> kde4-konqueror-plugins-4.0.svn819877-2.2
> kde4-konsole-4.0.4-22.4
> kde4-kontact-4.0.80-9.3
> kde4-kopete-4.0.4-19.20
> kde4-korganizer-4.0.80-9.3
> kde4-kpat-4.0.4-16.1
> kde4-krdc-4.0.4-19.20
> kde4-kreversi-4.0.4-16.1
> kde4-krfb-4.0.4-19.20
> kde4-kscd-4.0.4-15.1
> kde4-ksnapshot-4.0.4-14.1
> kde4-ksudoku-4.0.4-16.1
> kde4-kwalletmanager-4.0.4-19.1
> kde4-kwin-4.0.4-69.2
> kde4-kwrite-4.0.4-22.4
> kde4-okular-4.0.4-14.1
> kde4-opensuse-updater-0.7.17-6.2
> kdeaddons3-kicker-3.5.9-4
> kdeaddons3-konqueror-3.5.9-4
> kdeartwork3-kscreensaver-3.5.9-47.1
> kdeartwork3-xscreensaver-3.5.9-47.1
> kdeartwork4-screensaver-4.0.4-14.1
> kdebase3-3.5.9-65.1
> kdebase3-kdm-3.5.9-65.1
> kdebase3-runtime-3.5.9-65.1
> kdebase3-samba-3.5.9-65.1
> kdebase3-SuSE-branding-openSUSE-11.0-117.1
> kdebase4-4.0.4-22.4
> kdebase4-nsplugin-4.0.4-22.4
> kdebase4-openSUSE-11.0-93.2
> kdebase4-runtime-4.0.4-20.1
> kdebase4-workspace-4.0.4-69.2
> kdebase4-workspace-branding-openSUSE-11.0-93.2
> kdebase4-workspace-plasmoids-4.0.1-74.18
> kdebluetooth-1.0_beta8-109.1
> kdebluetooth-lang-1.0_beta8-109.1
> kdegames3-3.5.9-39.1
> kdegames3-card-3.5.9-39.1
> kdegames4-4.0.4-16.1
> kdegraphics3-3.5.9-53.1
> kdegraphics3-extra-3.5.9-53.1
> kdegraphics3-fax-3.5.9-53.1
> kdegraphics3-imaging-3.5.9-53.1
> kdegraphics3-kamera-3.5.9-53.1
> kdegraphics3-pdf-3.5.9-53.1
> kdegraphics3-postscript-3.5.9-53.1
> kdegraphics3-scan-3.5.9-53.1
> kdelibs3-3.5.9-49.1
> kdelibs3-arts-3.5.9-49.1
> kdelibs3-default-style-3.5.9-49.1
> kdelibs3-doc-3.5.9-49.1
> kdelibs4-4.0.4-26.2
> kdelibs4-debuginfo-4.0.4-26.2
> kdemultimedia3-3.5.9-43.1
> kdemultimedia3-arts-3.5.9-43.1
> kdemultimedia3-CD-3.5.9-43.1
> kdemultimedia3-jukebox-3.5.9-43.1
> kdemultimedia3-mixer-3.5.9-43.1
> kdemultimedia3-sound-3.5.9-43.1
> kdemultimedia3-video-xine-3.5.9-43.1
> kdemultimedia4-4.0.4-15.1
> kdenetwork3-3.5.9-39.1
> kdenetwork3-InstantMessenger-3.5.9-39.1
> kdenetwork3-news-3.5.9-39.1
> kdenetwork3-vnc-3.5.9-39.1
> kdenetwork4-filesharing-4.0.4-19.20
> kdepim4-4.0.80-9.3
> kdepim4-wizards-4.0.80-9.3
> kdepimlibs4-4.0.72-14.1
> kdetv-0.8.9-181.1
> kdeutils3-3.5.9-47.1
> kdeutils3-laptop-3.5.9-47.1
> libkde4-4.0.4-26.2
> libkdegames4-4.0.4-16.1
> libkdepim4-4.0.82-11.1
> libkdepimlibs4-4.0.72-14.1
> NetworkManager-kde-0.7r821737-0.1
> OpenOffice_org-kde-2.4.1.6-1.1
> opensuse-kdequick_en-11.0-6.2
> PolicyKit-kde-0.0.svn810196-5.1
> qtcurve-kde-0.59.2-3.2
> taskjuggler-kde-2.4.1-2.2


> libkdecore4-4.0.82-4.1
> kdelibs4-core-4.0.82-4.1
> kde4-filesystem-4.0.82-2.1
> kdebase4-libkonq-4.0.82-6.1
> kdebase4-session-4.0.80-1.3
> kdegames4-carddecks-default-4.0.82-9.1
> kdegames4-carddecks-other-4.0.82-9.1
> kdebase4-workspace-ksysguardd-4.0.82-18.1
Comment 7 Lubos Lunak 2008-07-10 13:00:38 UTC
Confirmed. Adding libkdecore4, kdelibs4-core and kde4-filesystem from KDE4.1 to a KDE4.0 installation leads to this. I haven't found any relevant BIC yet though. Quite possibly only our packaging problem - there are parts in kdelibs, such as kdecore/network/ktcpsocket.h, which clearly broke BC, but are not installed headers, only used by e.g. libkio. Therefore we should not allow mixing of parts of kdelibs from different versions.
Comment 8 Will Stephenson 2008-07-10 13:13:52 UTC
(Gah, I forgot to press send before)

There is a missing dependency between libkdecore4 and kdelibs4.  kdelibs is
externally BC but not there is no BC requirement inside kdelibs4.  As a result
libkdecore4 changed layout (added a bool) and this broke libkio.  See
discussion below.  

[13:07] <dfaure> I know what's happening
[13:07] <dfaure> Job::Job() : KCompositeJob(*new JobPrivate, 0)
[13:08] <dfaure> we have cross-lib inheritance of private classes, like qt does
[13:08] <dfaure> so I change what I said
[13:08] <dfaure> you can't upgrade kdecore if you don't upgrade the rest of
kdelibs too!
[13:08] <wstephenson> ok, i'll make sure the dep gets added
[13:08] <dfaure> kdecore is BC to the "outside", but not to kio which uses its
private classes.
[13:09] <wstephenson> well spotted
[13:09] <wstephenson> so how does that cause that backtrace, instead of an
abort?
[13:09] <dfaure> it crashes because the private objects don't have the expected
size
[13:09] <dfaure> so it's using memory at the wrong place
[13:10] <dfaure> private objects can have BIC changes of course.
[13:10] --> sharkk has joined this channel
(n=sharkk@adsl-ull-193-65.49-151.net24.it).
[13:10] <dfaure> a  bool was added to KJobPrivate
[13:11] <dfaure> but kio doesn't know so it allocates a too small
KIO::JobPrivate.
[13:11] <dfaure> and then I guess kdecore and kio keep overwriting the same
memory when they mean to use different member variables
[13:11] <wstephenson> and segfault
Comment 9 Will Stephenson 2008-07-10 13:15:35 UTC
Current dependencies:
libkdecore4 >= kdelibs4-core >= kdelibs4
libkde4 >= kdelibs4

Suggested dependencies:
libkdecre4 = kdelibs4-core = libkde4 = kdelibs4

Comments?
Comment 10 Lars Marowsky-Bree 2008-07-10 13:47:01 UTC
Makes sense, and I also learned to use zypper dup instead of up -t packages ;-)
Comment 11 Will Stephenson 2008-07-10 15:36:36 UTC
So I set up the following dependency chain ( '=' means "required in same version by")
libkdecore4 = kdelibs4-core
kdelibs4-core = libkde4
libkde4 = kdelibs4

built the rpms and tried to update
Comment 12 Dirk Mueller 2008-07-14 08:52:02 UTC
submitted to :Factory
Comment 13 Dirk Mueller 2008-07-21 10:55:50 UTC
also in :STABLE