Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-59179

QWebsocket crash on close()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • 5.9.2
    • 5.8.0
    • WebSockets
    • None
    • Arch Linux
      Config: Using QtTest library 5.8.0 (branch), Qt 5.8.0 (x86_64-little_endian-lp64 shared (dynamic) debug build; by GCC 6.3.1 20170109)
    • 0f32f4efc5a9a8b33369013c2ba6c27c78498cf2

    Description

      Closing a QWebSocket with pending data leads to a crash (SIGABRT).

      Minimal example:

      #include <QWebSocket>
      #include <QWebSocketServer>
      #include <QtTest>
      
      class test_RemoteWebSocketServer
      	: public QObject
      {
      	Q_OBJECT
      
      	private Q_SLOTS:
              void testDummy()
              {
                  QWebSocketServer server("TestServer", QWebSocketServer::NonSecureMode);
                  server.setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
                  QVERIFY(server.listen(QHostAddress::LocalHost));
      
                  QWebSocket client;
                  QSignalSpy spyConnected(&client, &QWebSocket::connected);
                  QSignalSpy spyDisconnected(&client, &QWebSocket::disconnected);
      
                  client.open(QString("ws://127.0.0.1:%1").arg(server.serverPort()));
                  QTRY_COMPARE(spyConnected.count(), 1);
      
                  client.sendBinaryMessage(QByteArray(30 * 1024 * 1024, 'A'));
      
                  client.close();
                  QTRY_COMPARE(spyDisconnected.count(), 1);
              }
      
      
      };
      
      
      QTEST_GUILESS_MAIN(test_RemoteWebSocketServer)
      #include "test_RemoteWebSocketServer.moc"
      

      Stacktrace:

      1  raise                                                                                                                                                                                                              0x7ffff441904f 
      2  abort                                                                                                                                                                                                              0x7ffff441a47a 
      3  qt_message_fatal                                                                                                                                                               qlogging.cpp                   1687 0x7ffff50cf38b 
      4  QMessageLogger::fatal                                                                                                                                                          qlogging.cpp                   795  0x7ffff50cb7a4 
      5  qt_assert                                                                                                                                                                      qglobal.cpp                    3070 0x7ffff50c46ec 
      6  QWebSocketPrivate::processData                                                                                                                                                 qwebsocket_p.cpp               1148 0x7ffff7e6655b 
      7  QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (QWebSocketPrivate:: *)()>::call(void (QWebSocketPrivate:: *)(), QWebSocketPrivate *, void * *) qobjectdefs_impl.h             143  0x7ffff7e6dfc6 
      8  QtPrivate::FunctionPointer<void (QWebSocketPrivate:: *)()>::call<QtPrivate::List<>, void>(void (QWebSocketPrivate:: *)(), QWebSocketPrivate *, void * *)                       qobjectdefs_impl.h             162  0x7ffff7e6d79d 
      9  QtPrivate::QPrivateSlotObject<void (QWebSocketPrivate:: *)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void * *, bool *)                   qobject_p.h                    310  0x7ffff7e6c9a3 
      10 QtPrivate::QSlotObjectBase::call                                                                                                                                               qobject_impl.h                 101  0x7ffff537762d 
      11 QMetaCallEvent::placeMetaCall                                                                                                                                                  qobject.cpp                    500  0x7ffff536ca97 
      12 QObject::event                                                                                                                                                                 qobject.cpp                    1263 0x7ffff536db88 
      13 QCoreApplicationPrivate::notify_helper                                                                                                                                         qcoreapplication.cpp           1122 0x7ffff5333a20 
      14 doNotify                                                                                                                                                                       qcoreapplication.cpp           1063 0x7ffff53336a3 
      15 QCoreApplication::notify                                                                                                                                                       qcoreapplication.cpp           1049 0x7ffff5333616 
      16 QCoreApplication::notifyInternal2                                                                                                                                              qcoreapplication.cpp           988  0x7ffff53335a6 
      17 QCoreApplication::sendEvent                                                                                                                                                    qcoreapplication.h             231  0x7ffff5337624 
      18 QCoreApplicationPrivate::sendPostedEvents                                                                                                                                      qcoreapplication.cpp           1648 0x7ffff53349d7 
      19 QCoreApplication::sendPostedEvents                                                                                                                                             qcoreapplication.cpp           1502 0x7ffff5334354 
      20 postEventSourceDispatch                                                                                                                                                        qeventdispatcher_glib.cpp      276  0x7ffff53af9d2 
      21 g_main_context_dispatch                                                                                                                                                                                            0x7ffff0e135a7 
      22 ??                                                                                                                                                                                                                 0x7ffff0e13810 
      23 g_main_context_iteration                                                                                                                                                                                           0x7ffff0e138bc 
      24 QEventDispatcherGlib::processEvents                                                                                                                                            qeventdispatcher_glib.cpp      423  0x7ffff53b0189 
      25 QCoreApplication::processEvents                                                                                                                                                qcoreapplication.cpp           1206 0x7ffff5333b36 
      26 QTest::qWait                                                                                                                                                                   qtestsystem.h                  64   0x40672c       
      27 test_RemoteWebSocketServer::testDummy                                                                                                                                          test_RemoteWebSocketServer.cpp 27   0x406fe6       
      28 test_RemoteWebSocketServer::qt_static_metacall                                                                                                                                 test_RemoteWebSocketServer.moc 71   0x4064e1       
      29 QMetaMethod::invoke                                                                                                                                                            qmetaobject.cpp                2222 0x7ffff533fec2 
      30 QMetaMethod::invoke                                                                                                                                                            qmetaobject.h                  123  0x7ffff7f86364 
      31 QTest::TestMethods::invokeTestOnData                                                                                                                                           qtestcase.cpp                  835  0x7ffff7f7f879 
      32 QTest::TestMethods::invokeTest                                                                                                                                                 qtestcase.cpp                  1016 0x7ffff7f80322 
      33 QTest::TestMethods::invokeTests                                                                                                                                                qtestcase.cpp                  1323 0x7ffff7f813e9 
      34 QTest::qExec                                                                                                                                                                   qtestcase.cpp                  1738 0x7ffff7f81f0d 
      35 main                                                                                                                                                                           test_RemoteWebSocketServer.cpp 34   0x40645f       
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            manordheim MÃ¥rten Nordheim
            llsag85dywftnhuo Jan Murawski
            Votes:
            1 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes