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

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

          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