Bug 52157 - dcop server crashed, took down KDE
Summary: dcop server crashed, took down KDE
Status: RESOLVED FIXED
Alias: None
Product: dcop
Classification: Frameworks and Libraries
Component: dcopserver (show other bugs)
Version: unspecified
Platform: Compiled Sources Solaris
: NOR crash
Target Milestone: ---
Assignee: Matthias Ettrich
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-12-21 02:29 UTC by Aaron Williams
Modified: 2002-12-22 12:35 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 Aaron Williams 2002-12-21 02:29:18 UTC
Version:            (using KDE KDE 3.0.99)
Installed from:    Compiled From Sources
Compiler:          gcc 2.95.3 Ultrasparc Solaris 2.7
OS:          Solaris

While changing tabs in Konqueror, dcopserver appears to have crashed.  The crash caused KDE to exit.  This is with KDE 3.1rc5.  The patch level of Solaris is relatively recent.

Here is the trace:

Loaded symbols for /usr/lib/locale/en_US/en_US.so.2
#0  0xfeb54d28 in KDE_IceSetShutdownNegotiation (iceConn=0x0, negotiate=0)
    at shutdown.c:89
89          iceConn->skip_want_to_close = negotiate ? False : True;
(gdb) bt
#0  0xfeb54d28 in KDE_IceSetShutdownNegotiation (iceConn=0x0, negotiate=0)
    at shutdown.c:89
#1  0xfd3dbd34 in DCOPServer::newClient (this=0x39068) at dcopserver.cpp:1106
#2  0xfd3de3fc in DCOPServer::qt_invoke (this=0x39068, _id=2, _o=0xffbee738)
    at dcopserver.moc:102
#3  0xfe38680c in QObject::activate_signal ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#4  0xfe386a14 in QObject::activate_signal ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#5  0xfe6f6458 in QSocketNotifier::activated ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#6  0xfe3a18b4 in QSocketNotifier::event ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#7  0xfe319c80 in QApplication::internalNotify ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#8  0xfe319384 in QApplication::notify ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#9  0xfe2ece60 in QEventLoop::activateSocketNotifiers ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#10 0xfe2c8b08 in QEventLoop::processEvents ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#11 0xfe3306f8 in QEventLoop::enterLoop ()
   from /tools/qt/qt-3.1/lib/libqt-mt.so.3
---Type <return> to continue, or q <return> to quit---
#12 0xfe3305d4 in QEventLoop::exec () from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#13 0xfe319e80 in QApplication::exec () from /tools/qt/qt-3.1/lib/libqt-mt.so.3
#14 0xfd3de228 in main (argc=2, argv=0x34b10) at dcopserver.cpp:1623
#15 0x00014e88 in _end ()
#16 0x00016f4c in main (argc=3, argv=0xffbeef0c, envp=0xffbeef1c)
    at kinit.cpp:1451
Current language:  auto; currently c
Comment 1 Stephan Kulow 2002-12-22 12:35:42 UTC
Subject: kdelibs/dcop

CVS commit by coolo: 

catching connection errors (thanks to the excellent stacktrace :)
CCMAIL: 52157-close@bugs.kde.org


  M +8 -0      dcopserver.cpp   1.148


--- kdelibs/dcop/dcopserver.cpp  #1.147:1.148
@@ -1107,4 +1107,12 @@ void DCOPServer::newClient( int /*socket
     IceAcceptStatus status;
     IceConn iceConn = IceAcceptConnection( static_cast<const  DCOPListener*>(sender())->listenObj, &status);
+    if (!iceConn) {
+      if (status == IceAcceptBadMalloc)
+         qWarning("Failed to alloc connection object!\n");
+      else // IceAcceptFailure
+         qWarning("Failed to accept ICE connection!\n");
+      return;
+    }
+
     IceSetShutdownNegotiation( iceConn, False );