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

Qml Segmentation Fault with XmlListModel + ImagesLoading

    XMLWordPrintable

Details

    • ee7c3b576ced47d3b68da1913cdf6995144bddd2

    Description

      When I navigate very fast from one index to another far index of on a ListView (using currentIndex property) the qmlviewer crashes.
      On the example I'm sending I have a feed which each feed entry has an image on the delagate component. When the list is clicked is set a random image on the list. The bug can be reproduced when you click many times and on a fast velocity. Even if all the images are loaded at least once, the bug still occurs.

      Here is the backtrace taken by gdb:

      (gdb) bt full
      #0  0x0805cd14 in QSize::width (this=0x28) at ../../include/QtCore/qsize.h:127
      No locals.
      #1  0x006ff4a8 in readImage (url=..., dev=0xb4b9d788, image=0xb4b9d7b4, 
          errorString=0xb4b9d7b0, impsize=0xb4b9d7a8, requestSize=...)
          at /home/dakerfp/workspace/qt-src/src/declarative/util/qdeclarativepixmapcache.cpp:285
              imgio = {d = 0xb562d618}
              force_scale = false
              scaled = false
      #2  0x00700097 in QDeclarativePixmapReader::networkRequestDone (this=
          0x82787d0, reply=0xb562d418)
          at /home/dakerfp/workspace/qt-src/src/declarative/util/qdeclarativepixmapcache.cpp:369
              all = {static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 
          0, data = 0x8099c60 "", array = ""}, static shared_empty = {ref = {
                    _q_value = 25}, alloc = 0, size = 0, data = 0x3386454 "", 
                  array = ""}, d = 0xb5681768}
              buff = {<QIODevice> = {<QObject> = {_vptr.QObject = 0x3381608, 
                    static staticMetaObject = {d = {superdata = 0x0, stringdata = 
          0x32e0de0 "QObject", data = 0x32e0d20, extradata = 0x337e540}}, d_ptr = {
                      d = 0xb5628e28}, static staticQtMetaObject = {d = {superdata = 
          0x0, stringdata = 0x32ee400 "Qt", data = 0x32ec1e0, extradata = 0x0}}}, 
                  static staticMetaObject = {d = warning: can't find linker symbol for virtual table for `(null)' value
      warning:   found `typeinfo for QAbstractAnimation' instead
      {superdata = 0x8099b50, 
      ---Type <return> to continue, or q <return> to quit---
                      stringdata = 0x32f43a0 "QIODevice", data = 0x32f4300, 
                      extradata = 0x0}}}, static staticMetaObject = {d = warning: can't find linker symbol for virtual table for `(null)' value
      warning:   found `typeinfo for QFile' instead
      {
                    superdata = 0x3382e68, stringdata = 0x32d3b50 "QBuffer", data = 
          0x32d3b00, extradata = 0x0}}}
              image = {<QPaintDevice> = {_vptr.QPaintDevice = 0x43619f0, painters = 
          0}, d = 0x0}
              error = QDeclarativePixmapReply::NoError
              errorString = warning: can't find linker symbol for virtual table for `QString' value
      {static null = {<No data fields>}, static shared_null = {
                  ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x8099bfe, 
                  clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
                  capacity = 0, reserved = 0, array = {0}}, static shared_empty = {
                  ref = {_q_value = 4}, alloc = 0, size = 0, data = 0x3386532, 
                  clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
                  capacity = 0, reserved = 0, array = {0}}, d = 0x8099bec, 
                static codecForCStrings = 0x0}
              readSize = {wd = -1, ht = -1}
              job = 0x84764f8
      #3  0x0070032d in QDeclarativePixmapReaderThreadObject::networkRequestDone (
          this=0xb56127f0)
          at /home/dakerfp/workspace/qt-src/src/declarative/util/qdeclarativepixmapcache.cpp:407
              reply = 0xb562d418
      #4  0x0070303c in QDeclarativePixmapReaderThreadObject::qt_metacall (this=
      ---Type <return> to continue, or q <return> to quit---
          0xb56127f0, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xb4b9d8cc)
          at .moc/debug-shared/qdeclarativepixmapcache.moc:147
      No locals.
      #5  0x0320e0fc in QMetaObject::metacall (object=0xb56127f0, cl=
          QMetaObject::InvokeMetaMethod, idx=4, argv=0xb4b9d8cc)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qmetaobject.cpp:237
              mo = 0x0
      #6  0x03220cec in QMetaObject::activate (sender=0xb562d418, m=0x271d2c, 
          local_signal_index=1, argv=0x0)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qobject.cpp:3272
              receiverInSameThread = true
              previousSender = 0x0
              receiver = 0xb56127f0
              method = 4
              currentSender = {sender = 0xb562d418, signal = 9, ref = 1}
              c = 0xb56289f8
              last = 0xb56289f8
              methodOffset = 8
              signal_absolute_index = 9
              empty_argv = {0x0}
              currentThreadData = 0x8278568
              locker = {val = 136934928}
              connectionLists = 0xb562c048
      ---Type <return> to continue, or q <return> to quit---
              signalOffset = 6
              signal_index = 7
      #7  0x00220485 in QNetworkReply::finished (this=0xb562d418)
          at .moc/debug-shared/moc_qnetworkreply.cpp:149
      No locals.
      #8  0x001d28f1 in QNetworkReplyImplPrivate::finished (this=0xb56282e8)
          at /home/dakerfp/workspace/qt-src/src/network/access/qnetworkreplyimpl.cpp:656
              q = 0xb562d418
              totalSize = {d = {data = {c = -23 '\351', i = 61929, u = 61929, b = 
          233, d = 3.0596991381302557e-319, f = 8.67810126e-41, real = 
          3.0596991381302557e-319, ll = 61929, ull = 61929, o = 0xf1e9, ptr = 
          0xf1e9, shared = 0xf1e9}, type = 4, is_shared = 0, is_null = 0}, 
                static handler = 0x435a8c0}
      #9  0x001b6ae8 in QNetworkAccessBackend::finished (this=0xb5613f78)
          at /home/dakerfp/workspace/qt-src/src/network/access/qnetworkaccessbackend.cpp:309
      No locals.
      #10 0x001bf4d9 in QNetworkAccessHttpBackend::finished (this=0xb5613f78)
          at /home/dakerfp/workspace/qt-src/src/network/access/qnetworkaccesshttpbackend.cpp:338
      No locals.
      #11 0x001c20da in QNetworkAccessHttpBackend::replyFinished (this=0xb5613f78)
      ---Type <return> to continue, or q <return> to quit---
          at /home/dakerfp/workspace/qt-src/src/network/access/qnetworkaccesshttpbackend.cpp:773
              statusCode = 200
      #12 0x001c1d0e in QNetworkAccessHttpBackend::downstreamReadyWrite (this=
          0xb5613f78)
          at /home/dakerfp/workspace/qt-src/src/network/access/qnetworkaccesshttpbackend.cpp:710
      No locals.
      #13 0x001d1567 in QNetworkReplyImplPrivate::handleNotifications (this=
          0xb56282e8)
          at /home/dakerfp/workspace/qt-src/src/network/access/qnetworkreplyimpl.cpp:367
              notification = QNetworkReplyImplPrivate::NotifyDownstreamReadyWrite
              current = {<QList<QNetworkReplyImplPrivate::InternalNotifications>> = {
          {p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, 
                        end = 0, sharable = 1, array = {0x0}}, d = 0xb562e8e8}, d = 
          0xb562e8e8}}, <No data fields>}
      #14 0x001d33c2 in QNetworkReplyImpl::event (this=0xb562d418, e=0xb5627ef8)
          at /home/dakerfp/workspace/qt-src/src/network/access/qnetworkreplyimpl.cpp:866
      No locals.
      #15 0x038b2a8a in QApplicationPrivate::notify_helper (this=0x809cd60, receiver=
          0xb562d418, e=0xb5627ef8)
      ---Type <return> to continue, or q <return> to quit---
          at /home/dakerfp/workspace/qt-src/src/gui/kernel/qapplication.cpp:4392
              consumed = true
      #16 0x038b032e in QApplication::notify (this=0xbffff318, receiver=0xb562d418, 
          e=0xb5627ef8)
          at /home/dakerfp/workspace/qt-src/src/gui/kernel/qapplication.cpp:3794
              d = 0x809cd60
              res = false
      #17 0x03206c05 in QCoreApplication::notifyInternal (this=0xbffff318, receiver=
          0xb562d418, event=0xb5627ef8)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qcoreapplication.cpp:732
              threadData = 0x8278568
              returnValue = 3
              result = false
              cbdata = {0xb562d418, 0xb5627ef8, 0xb4b9df13}
              d = 0xb56282e8
      #18 0x0806b28f in QCoreApplication::sendEvent (receiver=0xb562d418, event=
          0xb5627ef8) at ../../include/QtCore/qcoreapplication.h:215
      No locals.
      #19 0x03207c18 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, 
          event_type=0, data=0x8278568)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qcoreapplication.cpp:1373
      ---Type <return> to continue, or q <return> to quit---
              pe = @0xb5638b60
              e = 0xb5627ef8
              r = 0xb562d418
              locker = {val = 136807824}
              startOffset = 0
              i = @0x8278588
      #20 0x0320790f in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=
          0)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qcoreapplication.cpp:1266
              data = 0x8278568
      #21 0x0396d3e0 in QCoreApplication::sendPostedEvents ()
          at ../../include/QtCore/qcoreapplication.h:220
      No locals.
      #22 0x0323ae60 in postEventSourceDispatch (s=0xb5612850)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qeventdispatcher_glib.cpp:277
              source = 0xb5612850
      #23 0x004fb525 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
      No symbol table info available.
      #24 0x004ff268 in ?? () from /lib/libglib-2.0.so.0
      No symbol table info available.
      #25 0x004ff449 in g_main_context_iteration () from /lib/libglib-2.0.so.0
      ---Type <return> to continue, or q <return> to quit---
      No symbol table info available.
      #26 0x0323b63e in QEventDispatcherGlib::processEvents (this=0xb5612898, flags=
          ...)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qeventdispatcher_glib.cpp:415
              d = 0xb56128e8
              canWait = true
              savedFlags = {i = 0}
              result = true
      #27 0x0320486d in QEventLoop::processEvents (this=0xb4b9e268, flags=...)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qeventloop.cpp:149
              d = 0xb561ecf8
      #28 0x032049b2 in QEventLoop::exec (this=0xb4b9e268, flags=...)
          at /home/dakerfp/workspace/qt-src/src/corelib/kernel/qeventloop.cpp:201
              d = 0xb561ecf8
              app = 0xbffff318
              eventLoop = 0xb4b9e248
      #29 0x030f6d20 in QThread::exec (this=0x82787d0)
          at /home/dakerfp/workspace/qt-src/src/corelib/thread/qthread.cpp:490
              d = 0x8278758
              locker = {val = 136808360}
              eventLoop = {<QObject> = {_vptr.QObject = 0x3383668, 
                  static staticMetaObject = {d = {superdata = 0x0, stringdata = 
      ---Type <return> to continue, or q <return> to quit---
          0x32e0de0 "QObject", data = 0x32e0d20, extradata = 0x337e540}}, d_ptr = {
                    d = 0xb561ecf8}, static staticQtMetaObject = {d = {superdata = 
          0x0, stringdata = 0x32ee400 "Qt", data = 0x32ec1e0, extradata = 0x0}}}, 
                static staticMetaObject = {d = warning: can't find linker symbol for virtual table for `(null)' value
      warning:   found `typeinfo for QAbstractAnimation' instead
      {superdata = 0x8099b50, stringdata = 
          0x32f57f0 "QEventLoop", data = 0x32f57a0, extradata = 0x0}}}
              returnCode = 4001536
      #30 0x00701067 in QDeclarativePixmapReader::run (this=0x82787d0)
          at /home/dakerfp/workspace/qt-src/src/declarative/util/qdeclarativepixmapcache.cpp:554
      No locals.
      #31 0x030f9451 in QThreadPrivate::start (arg=0x82787d0)
          at /home/dakerfp/workspace/qt-src/src/corelib/thread/qthread_unix.cpp:274
              __clframe = warning: can't find linker symbol for virtual table for `__pthread_cleanup_class' value
      warning:   found `QThreadPrivate::start(void*)' instead
      {__cancel_routine = 
          0x30f9498 <QThreadPrivate::finish(void*)>, __cancel_arg = 0x82787d0, 
                __do_it = 1, __cancel_type = 0}
              thr = 0x82787d0
              data = 0x8278568
      #32 0x0027a919 in start_thread () from /lib/libpthread.so.0
      No symbol table info available.
      #33 0x02d54cbe in clone () from /lib/libc.so.6
      No symbol table info available.
      

      Attachments

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

        Activity

          People

            aakenned Aaron Kennedy
            dakerfp Daker Fernandes Pinheiro
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes