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

crash on ssl write error

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • Some future release
    • 5.7
    • Network: SSL
    • None
    • qt 5.7 git (1a78ef09b93b0a7)
      32-bit x86 Linux, OpenSSL 1.0.2g
    • 86632bd377e9809a6670ee069b45bfb59a07d0fa

    Description

      While running a QML application I got a crash with the following stack trace (I've clipped the relevant part since this is an infinite recursion):

      #0  0x768a3512 in QSslSocketBackendPrivate::transmit() () from /usr/lib/libQt5Network.so.5
      #1  0x7689607e in QSslSocket::flush() () from /usr/lib/libQt5Network.so.5
      #2  0x76899bd1 in QSslSocket::close() () from /usr/lib/libQt5Network.so.5
      #3  0x76844ccc in QHttpNetworkConnectionChannel::close() () from /usr/lib/libQt5Network.so.5
      #4  0x76840cba in QHttpNetworkConnectionPrivate::shouldEmitChannelError(QAbstractSocket*) () from /usr/lib/libQt5Network.so.5
      #5  0x76846a91 in QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #6  0x76626eaa in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
      #7  0x766279cc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQt5Core.so.5
      #8  0x76884116 in QAbstractSocket::error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #9  0x76885315 in QAbstractSocketPrivate::setErrorAndEmit(QAbstractSocket::SocketError, QString const&) () from /usr/lib/libQt5Network.so.5
      #10 0x768a3a72 in QSslSocketBackendPrivate::transmit() () from /usr/lib/libQt5Network.so.5
      #11 0x7689607e in QSslSocket::flush() () from /usr/lib/libQt5Network.so.5
      #12 0x76899bd1 in QSslSocket::close() () from /usr/lib/libQt5Network.so.5
      
      [...]
      #17320 0x768a3a72 in QSslSocketBackendPrivate::transmit() () from /usr/lib/libQt5Network.so.5
      #17321 0x7689607e in QSslSocket::flush() () from /usr/lib/libQt5Network.so.5
      #17322 0x76899bd1 in QSslSocket::close() () from /usr/lib/libQt5Network.so.5
      #17323 0x76844ccc in QHttpNetworkConnectionChannel::close() () from /usr/lib/libQt5Network.so.5
      #17324 0x76840cba in QHttpNetworkConnectionPrivate::shouldEmitChannelError(QAbstractSocket*) () from /usr/lib/libQt5Network.so.5
      #17325 0x76846a91 in QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #17326 0x76626eaa in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
      #17327 0x766279cc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQt5Core.so.5
      #17328 0x76884116 in QAbstractSocket::error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #17329 0x76885315 in QAbstractSocketPrivate::setErrorAndEmit(QAbstractSocket::SocketError, QString const&) () from /usr/lib/libQt5Network.so.5
      #17330 0x768a3a72 in QSslSocketBackendPrivate::transmit() () from /usr/lib/libQt5Network.so.5
      #17331 0x7689607e in QSslSocket::flush() () from /usr/lib/libQt5Network.so.5
      #17332 0x76899bd1 in QSslSocket::close() () from /usr/lib/libQt5Network.so.5
      #17333 0x76844ccc in QHttpNetworkConnectionChannel::close() () from /usr/lib/libQt5Network.so.5
      #17334 0x76840cba in QHttpNetworkConnectionPrivate::shouldEmitChannelError(QAbstractSocket*) () from /usr/lib/libQt5Network.so.5
      #17335 0x76846a91 in QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #17336 0x76626eaa in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
      #17337 0x766279cc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQt5Core.so.5
      #17338 0x76884116 in QAbstractSocket::error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #17339 0x76885315 in QAbstractSocketPrivate::setErrorAndEmit(QAbstractSocket::SocketError, QString const&) () from /usr/lib/libQt5Network.so.5
      #17340 0x768a3a72 in QSslSocketBackendPrivate::transmit() () from /usr/lib/libQt5Network.so.5
      #17341 0x7689607e in QSslSocket::flush() () from /usr/lib/libQt5Network.so.5
      #17342 0x76899bd1 in QSslSocket::close() () from /usr/lib/libQt5Network.so.5
      #17343 0x76844ccc in QHttpNetworkConnectionChannel::close() () from /usr/lib/libQt5Network.so.5
      #17344 0x76840cba in QHttpNetworkConnectionPrivate::shouldEmitChannelError(QAbstractSocket*) () from /usr/lib/libQt5Network.so.5
      #17345 0x76846a91 in QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #17346 0x76626eaa in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
      #17347 0x766279cc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQt5Core.so.5
      #17348 0x76884116 in QAbstractSocket::error(QAbstractSocket::SocketError) () from /usr/lib/libQt5Network.so.5
      #17349 0x76885315 in QAbstractSocketPrivate::setErrorAndEmit(QAbstractSocket::SocketError, QString const&) () from /usr/lib/libQt5Network.so.5
      #17350 0x768a3a72 in QSslSocketBackendPrivate::transmit() () from /usr/lib/libQt5Network.so.5
      #17351 0x7689607e in QSslSocket::flush() () from /usr/lib/libQt5Network.so.5
      #17352 0x768964aa in QSslSocketPrivate::_q_flushWriteBuffer() () from /usr/lib/libQt5Network.so.5
      #17353 0x7662479b in QMetaCallEvent::placeMetaCall(QObject*) () from /usr/lib/libQt5Core.so.5
      #17354 0x76628979 in QObject::event(QEvent*) () from /usr/lib/libQt5Core.so.5
      #17355 0x765f67b4 in QCoreApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
      #17356 0x765f6845 in QCoreApplication::notify(QObject*, QEvent*) [clone .localalias.90] () from /usr/lib/libQt5Core.so.5
      #17357 0x76e57047 in QGuiApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Gui.so.5
      #17358 0x765f69a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
      #17359 0x765fa29b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQt5Core.so.5
      #17360 0x765fa8e4 in QCoreApplication::sendPostedEvents(QObject*, int) () from /usr/lib/libQt5Core.so.5
      #17361 0x76653c7f in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib/libQt5Core.so.5
      #17362 0x758ac172 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
      #17363 0x758ac3c9 in g_main_context_iterate.isra () from /usr/lib/libglib-2.0.so.0
      #17364 0x758ac480 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
      #17365 0x76654158 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #17366 0x765f3aea in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #17367 0x765f453c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #17368 0x763f9a67 in QThread::exec() () from /usr/lib/libQt5Core.so.5
      #17369 0x763f9b4c in QThread::run() () from /usr/lib/libQt5Core.so.5
      #17370 0x764002a8 in QThreadPrivate::start(void*) () from /usr/lib/libQt5Core.so.5
      #17371 0x762cc3d2 in start_thread () from /usr/lib/libpthread.so.0
      #17372 0x75fea7ee in clone () from /usr/lib/libc.so.6
      

      I'm not sure how to reproduce it, is the stack trace itself enough to understand this issue ? Adding a guard in QSslSocket::flush to avoid recursion could work but I'm not sure this is the best thing to do.

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-56476
          # Subject Branch Project Status CR V

          Activity

            People

              tpochep Timur Pocheptsov
              rawoul Arnaud Vrac
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes