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

null pointer access throws exception from QHttpNetworkConnectionChannel::allDone()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 4.7.3
    • 4.7.0
    • Network
    • None
    • Windows only

    Description

      Take Browser demo software, and access http://techcrunch.com/ website, and keep clicking links there.
      Soon you'll see browser crashed, and exception is thrown from here:

      void QHttpNetworkConnectionChannel::allDone()
      {
      .........
      
      // while handling 401 & 407, we might reset the status code, so save this.
         bool emitFinished = reply->d_func()->shouldEmitSignals();
      .........
      

      Here "reply" variable is NULL and exception is thrown when accessing it.

      Here is a stack trace:

      	browser.exe!QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData> >::data()  Line 135 + 0x3 bytes	C++
       	browser.exe!qGetPtrHelper<QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData> > >(const QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData> > & p={...})  Line 2328 + 0xb bytes	C++
       	browser.exe!QHttpNetworkReply::d_func()  Line 154 + 0x13 bytes	C++
       	browser.exe!QHttpNetworkConnectionChannel::allDone()  Line 624 + 0xe bytes	C++
       	browser.exe!QHttpNetworkConnectionChannel::_q_receiveReply()  Line 480	C++
       	browser.exe!QHttpNetworkConnectionChannel::_q_readyRead()  Line 874	C++
       	browser.exe!QHttpNetworkConnectionChannel::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=2, void * * _a=0x0018d884)  Line 92 + 0x8 bytes	C++
       	browser.exe!QMetaObject::metacall(QObject * object=0x07da594c, QMetaObject::Call cl=InvokeMetaMethod, int idx=6, void * * argv=0x0018d884)  Line 238	C++
       	browser.exe!QMetaObject::activate(QObject * sender=0x07da8ab0, const QMetaObject * m=0x027d80d8, int local_signal_index=0, void * * argv=0x00000000)  Line 3272 + 0x27 bytes	C++
       	browser.exe!QIODevice::readyRead()  Line 91 + 0x12 bytes	C++
       	browser.exe!QAbstractSocketPrivate::canReadNotification()  Line 640	C++
       	browser.exe!QAbstractSocketPrivate::readNotification()  Line 77 + 0x15 bytes	C++
       	browser.exe!QAbstractSocketEngine::readNotification()  Line 155	C++
       	browser.exe!QReadNotifier::event(QEvent * e=0x0018de34)  Line 1104	C++
       	browser.exe!QApplicationPrivate::notify_helper(QObject * receiver=0x0f228908, QEvent * e=0x0018de34)  Line 4396 + 0x11 bytes	C++
       	browser.exe!QApplication::notify(QObject * receiver=0x0f228908, QEvent * e=0x0018de34)  Line 3798 + 0x10 bytes	C++
       	browser.exe!QCoreApplication::notifyInternal(QObject * receiver=0x0f228908, QEvent * event=0x0018de34)  Line 732 + 0x15 bytes	C++
       	browser.exe!QCoreApplication::sendEvent(QObject * receiver=0x0f228908, QEvent * event=0x0018de34)  Line 215 + 0x39 bytes	C++
       	browser.exe!qt_internal_proc(HWND__ * hwnd=0x000f04b0, unsigned int message=1024, unsigned int wp=2584, long lp=1)  Line 488 + 0xf bytes	C++
       	user32.dll!76b56238() 	
       	[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]	
       	user32.dll!76b568ea() 	
       	user32.dll!76b56899() 	
       	user32.dll!76b57d31() 	
       	user32.dll!76b57dfa() 	
       	browser.exe!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...})  Line 806	C++
       	browser.exe!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...})  Line 1170 + 0x14 bytes	C++
       	browser.exe!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...})  Line 150	C++
       	browser.exe!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...})  Line 201 + 0x2d bytes	C++
       	browser.exe!QCoreApplication::exec()  Line 1009 + 0x15 bytes	C++
       	browser.exe!QApplication::exec()  Line 3673	C++
       	browser.exe!main(int argc=1, char * * argv=0x04644458)  Line 67 + 0x5 bytes	C++
       	browser.exe!WinMain(HINSTANCE__ * instance=0x00400000, HINSTANCE__ * prevInstance=0x00000000, char * __formal=0x02d44b13, int cmdShow=1)  Line 131 + 0x12 bytes	C++
       	browser.exe!__tmainCRTStartup()  Line 263 + 0x2c bytes	C
       	browser.exe!WinMainCRTStartup()  Line 182	C
       	kernel32.dll!75103677() 	
       	ntdll.dll!77239d72() 	
       	ntdll.dll!77239d45() 	
       	browser.exe!JSC::JSVariableObject::symbolTablePutWithAttributes(const JSC::Identifier & propertyName={...}, JSC::JSValue value={...}, unsigned int attributes=3246652493)  Line 148 + 0xc bytes	C++
       	e58b0cc4()	
      
      

      Attachments

        1. Screen.jpg
          143 kB
          Alexei Chaloupov

        Issue Links

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

          Activity

            People

              earthdomain Earth Domain (Inactive)
              alex_chal Alexei Chaloupov
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes