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

[Symbian] Intermittent crash when disk cache is activated

    XMLWordPrintable

Details

    • Bug
    • Resolution: Invalid
    • P2: Important
    • Some future release
    • 4.7.3
    • Network: Cache
    • The device is Nokia N8 022.012 RND. QT version is preinstalled one (4.7.3).

    Description

      Our application has QML UI and C++ library that takes care of network interaction. When network caching is enabled using command

      CustomNetworkCache *diskCache = new CustomNetworkCache(parent);
      diskCache->setCacheDirectory(kCacheDirName);
      nam->setCache(diskCache);

      where QNetworkAccessManager *nam is our custom cache manager, we are seeing the following intermittent crash:

      2e97599c 7d0234f7 .4.} 0007 qmalloc.o(.text) qMalloc(unsigned)
      2e9759a4 7d068c53 S..} 0023 qlist.o(.text) QListData::detach_grow(int*, int)
      PC 7d0a4268 hB.} 0004 qfile.o(t.ZNK6QFlagsIN9QIODevice12OpenModeFlagEEanES1) QFlags<QIODevice::OpenModeFlag>::operator &(QIODevice::OpenModeFlag) const
      LR 7d02a3c9 ...} 0019 qiodevice.o(.text) QIODevice::write(const char*, long long)
      2e9759a8 7ef4c438 8..~
      2e9759d4 7c71877b {.q| 0065 qnetworkreplyimpl.o(.text) QNetworkReplyImplPrivate::appendDownstreamData(QByteDataBuffer&)
      2e9759fc 7c7103ab ..q| 0017 qnetworkaccessbackend.o(.text) QNetworkAccessBackend::networkInterface() const
      2e975a04 7c7138b5 .8q| 000f qnetworkaccesshttpbackend.o(.text) QNetworkAccessHttpBackend::downstreamReadyWrite()
      2e975a34 7c7142e3 .Bq| 0017 qnetworkaccesshttpbackend.o(.text) QNetworkAccessHttpBackend::replyHeaderChanged()
      2e975a3c 7c737ae9 .zs| 0017 moc_qnetworkaccesshttpbackend_p.o(.text) QNetworkAccessHttpBackend::qt_metacall(QMetaObject::Call, int, void**)
      2e975a54 7d04947b

      {..} 0191 qobject.o(.text) QMetaObject::activate(QObject*, const QMetaObject*, int, void**)
      2e975abc 7c737817 .xs| 0007 moc_qhttpnetworkreply_p.o(.text) QHttpNetworkReply::finished()
      2e975ac4 7c70d361 a.p| 01ed qhttpnetworkconnectionchannel.o(.text) QHttpNetworkConnectionChannel::_q_receiveReply()
      2e975ad4 7d000000 ...} uc_dll_.o(.emb_text) _E32Dll
      2e975ae4 7d08b32b +..} 0007 qmutex.o(i._ZN15QBasicAtomicInt17testAndSetAcquireEii) QBasicAtomicInt::testAndSetAcquire(int, int)
      2e975afc 7c70d5a1 ..p| 005b qhttpnetworkconnectionchannel.o(.text) QHttpNetworkConnectionChannel::qt_metacall(QMetaObject::Call, int, void**)
      2e975b14 7d04947b {..}

      0191 qobject.o(.text) QMetaObject::activate(QObject*, const QMetaObject*, int, void**)
      2e975b60 7d0cf284 ...} moc_qiodevice.o(.constdata) QIODevice::staticMetaObject
      2e975b7c 7d05b2db ...} 000d moc_qiodevice.o(.text) QIODevice::readyRead()
      2e975b84 7c729c37 7.r| 0129 qabstractsocket.o(.text) QAbstractSocketPrivate::canReadNotification()
      2e975ba4 7c7416ef ..t| 0009 qudpsocket.o(i.ZThn144_N17QUdpSocketPrivateD0Ev) thunk{-144} to QUdpSocketPrivate::~QUdpSocketPrivate_deallocating()
      2e975bac 7c723bdd .;r| 000f qnativesocketengine.o(.text) QWriteNotifier::event(QEvent*)
      2e975bb4 7c2ad96f o.| 007f qapplication.o(.text) QApplicationPrivate::notify_helper(QObject, QEvent*)
      2e975bcc 7c2adc33 3.| 0241 qapplication.o(.text) QApplication::notify(QObject, QEvent*)
      2e975bd0 7d01ac88 ...} heap_hybrid.o(.text) RHybridHeap::ReAlloc(void*, int, int)
      2e975cd4 7d097ea9 .~.} 000d qcoreapplication.o(t._ZN5QListI10QPostEventE5beginEv) QList<QPostEvent>::begin()
      2e975d04 7d0434cb .4.} 0041 qcoreapplication.o(.text) QCoreApplication::notifyInternal(QObject*, QEvent*)
      2e975d34 7d08b68b ...} 0023 qcoreapplication.o(i._ZN16QCoreApplication9sendEventEP7QObjectP6QEvent) QCoreApplication::sendEvent(QObject*, QEvent*)
      2e975d3c 7d050215 ...} 00a3 qeventdispatcher_symbian.o(.text) QEventDispatcherSymbian::socketFired(QSocketActiveObject*)
      2e975d40 7d122f4c L/.} 0008 qcoreevent.o(.constdata__ZTV6QEvent) vtable for QEvent
      2e975d64 7d05025f _..} 0017 qeventdispatcher_symbian.o(.text) QSocketActiveObject::RunL()
      2e975d9c 7d050a5f _..} 0101 qeventdispatcher_symbian.o(.text) QEventDispatcherSymbian::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
      2e975ddc 7d042603 .&.} 0037 qeventloop.o(.text) QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
      2e975df4 7d0426ff .&.} 008d qeventloop.o(.text) QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
      2e975e14 7bf089ac ...

      { qdeclarativepixmapcache.o(.constdata) QDeclarativePixmapReaderThreadObject::staticMetaObject 2e975e1c 7d059c85 ...}

      0049 qthread.o(.text) QThread::exec()
      2e975e24 7d121478 x..} 0008 moc_qeventloop.o(.constdata__ZTV10QEventLoop) vtable for QEventLoop
      2e975e3c 7bf089ac ...{ qdeclarativepixmapcache.o(.constdata) QDeclarativePixmapReaderThreadObject::staticMetaObject
      2e975e44 7be828d7 .(.{ 0071 qdeclarativepixmapcache.o(.text) QDeclarativePixmapReader::run()
      2e975e48 7be82867 g(.{ 0001 qdeclarativepixmapcache.o(.text) QDeclarativePixmapReader::run()
      2e975e4c 7bf0899c ...

      { qdeclarativepixmapcache.o(.constdata) QDeclarativePixmapReply::staticMetaObject 2e975e5c 7d05a64b K..}

      0001 qthread_unix.o(.text) QThreadPrivate::start(void*)
      2e975e64 7d05a695 ...} 004b qthread_unix.o(.text) QThreadPrivate::start(void*)
      2e975e70 7d05a64b K..} 0001 qthread_unix.o(.text) QThreadPrivate::start(void*)
      2e975ec4 7d01ac88 ...} heap_hybrid.o(.text) RHybridHeap::ReAlloc(void*, int, int)
      2e975ed4 7d01aca0 ...} 0018 heap_hybrid.o(.text) RHybridHeap::ReAlloc(void*, int, int)
      2e975ef8 7d01ac88 ...} heap_hybrid.o(.text) RHybridHeap::ReAlloc(void*, int, int)

      This problem seems different than http://bugreports.qt.nokia.com/browse/QTBUG-18770, since crash occurs during writing to cache. Same code works fine on Meego and Simulator. Problem is difficult to reproduce with Wi-Fi, however quite easy with GPRS when connection is going on and off (like when signal is poor). Attached is a fully decoded crash stack.

      Also, surprisingly, we are seeing that cache is working only in the debug version of application; in the release, cache (and crash) are not present.

      Anything that could be done to fix the problem? Also, is there a way to install a debug SIS for QT on Symbian?

      Thanks a lot for looking into this.

      Attachments

        1. circles_network_crash.zip
          11 kB
          Igor Kuklin
        2. qt-5335.zip
          7 kB
          Shane Kearns
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            earthdomain Earth Domain (Inactive)
            igorkuklin Igor Kuklin
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes