Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Crash in QListData::realloc(), Datarace condition found during Image Download

Crash in QListData::realloc(), Datarace condition found during Image Download

Scheduled Pinned Locked Moved Mobile and Embedded
2 Posts 2 Posters 2.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    maheshnagarajan
    wrote on last edited by
    #1
    • I have created a sample app containing two threads - one thread downloads the images and the main thread will be informed continuously about the download from the download thread.
    • We ran with the valgrind and found the below datarace condition continuously.
    • The datarace condition between QObject::moveToThread() and QCoreApplication::postEvent().
    • I am using Qt_4.8.0

    ==16049== Possible data race during read of size 4 at 0x6aecee4 by thread #4
    ==16049== at 0x629BE7B: QObjectPrivate::setThreadData_helper(QThreadData*, QThreadData*) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x629C2C9: QObject::moveToThread(QThread*) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x607450C: QNetworkAccessHttpBackend::postRequest() (qnetworkaccesshttpbackend.cpp:534)
    ==16049== by 0x6075097: QNetworkAccessHttpBackend::open() (qnetworkaccesshttpbackend.cpp:702)
    ==16049== by 0x606C99D: QNetworkAccessBackend::start() (qnetworkaccessbackend.cpp:418)
    ==16049== by 0x60826F3: QNetworkReplyImplPrivate::_q_startOperation() (qnetworkreplyimpl.cpp:93)
    ==16049== by 0x6084281: QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation, QNetworkRequest const&, QIODevice*) (qnetworkreplyimpl.cpp:378)
    ==16049== by 0x60661D5: QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation, QNetworkRequest const&, QIODevice*) (qnetworkaccessmanager.cpp:1008)
    ==16049== by 0x60651E0: QNetworkAccessManager::get(QNetworkRequest const&) (qnetworkaccessmanager.cpp:599)
    ==16049== by 0x8049740: CImageDecodingThreadSample::loadFromNetwork(QUrl) (in /mnt/nfs/env/Receiver)
    ==16049== by 0x80497CC: CImageDecodingThreadSample::LoadImage(QString) (in /mnt/nfs/env/Receiver)
    ==16049== by 0x804994E: CImageDecodingThreadSample::onStarted() (in /mnt/nfs/env/Receiver)
    ==16049== This conflicts with a previous write of size 4 by thread #1
    ==16049== at 0x61A68F8: QListData::realloc(int) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x61A6993: QListData::append(int) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x61A6A15: QListData::append() (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x628CD17: ??? (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x628C591: QCoreApplication::postEvent(QObject*, QEvent*, int) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x628C63C: QCoreApplication::postEvent(QObject*, QEvent*) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x629DC21: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x62EC4F7: QTimer::timeout() (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== Address 0x6aecee4 is 28 bytes inside a block of size 60 alloc'd
    ==16049== at 0x402461D: operator new(unsigned int) (vg_replace_malloc.c:255)
    ==16049== by 0x618525B: ??? (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x61852EB: QThread::QThread(QObject*) (in /usr/local/Qt/lib/libQtCore.so.4.8.0)
    ==16049== by 0x80494ED: CImageResourceSample::CImageResourceSample() (in /mnt/nfs/env/Receiver)
    ==16049== by 0x80495FF: CImageResourceSample::getInstance() (in /mnt/nfs/env/Receiver)
    ==16049== by 0x8049301: main (in /mnt/nfs/env/Receiver)

    We are using for Embedded platform unix.
    Kindly let us the know the root cause for the race condition.

    1 Reply Last reply
    0
    • D Offline
      D Offline
      Duck
      wrote on last edited by
      #2

      The root cause is faulty code. Without seeing your code it's hard to tell where the problem is exactly.

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved