[Marble-devel] KDE/kdeedu/marble/src/plugins/network/qnam

Michael Jansen kde at michael-jansen.biz
Sat Jul 18 15:51:32 CEST 2009


SVN commit 998749 by mjansen:

Fix a crash. From Memcheck (one of many invalid read/writes)

Do not delete a object when handling a signal emitted from the object.

==6651== Invalid read of size 8
==6651==    at 0x5B85910: QListData::size() const (qlist.h:87)
==6651==    by 0x5BBECFA: QList<QNetworkReplyImplPrivate::InternalNotifications>::size() const (qlist.h:117)
==6651==    by 0x5BBCB38: QNetworkReplyImplPrivate::resumeNotificationHandling() (qnetworkreplyimpl.cpp:313)
==6651==    by 0x5BBCCF6: QNetworkReplyImplPrivate::finished() (qnetworkreplyimpl.cpp:488)
==6651==    by 0x5BA891A: QNetworkAccessBackend::finished() (qnetworkaccessbackend.cpp:284)
==6651==    by 0x5BAFDB6: QNetworkAccessHttpBackend::finished() (qnetworkaccesshttpbackend.cpp:336)
==6651==    by 0x5BB04D6: QNetworkAccessHttpBackend::replyFinished() (qnetworkaccesshttpbackend.cpp:689)
==6651==    by 0x5BB0550: QNetworkAccessHttpBackend::downstreamReadyWrite() (qnetworkaccesshttpbackend.cpp:639)
==6651==    by 0x5BBE915: QNetworkReplyImplPrivate::handleNotifications() (qnetworkreplyimpl.cpp:284)
==6651==    by 0x5BBE9DF: QNetworkReplyImpl::event(QEvent*) (qnetworkreplyimpl.cpp:663)
==6651==    by 0x6B5886C: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4106)
==6651==    by 0x6B6150B: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3632)
==6651==  Address 0x1e573148 is 320 bytes inside a block of size 432 free'd
==6651==    at 0x4C23EAD: operator delete(void*) (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==6651==    by 0x5BBF4E6: QNetworkReplyImplPrivate::~QNetworkReplyImplPrivate() (qnetworkreplyimpl_p.h:102)
==6651==    by 0x7EF1AD6: QObject::~QObject() (qobject.cpp:850)
==6651==    by 0x7E7FFD0: QIODevice::~QIODevice() (qiodevice.cpp:403)
==6651==    by 0x5BBBD9E: QNetworkReply::~QNetworkReply() (qnetworkreply.cpp:342)
==6651==    by 0x5BBC5C1: QNetworkReplyImpl::~QNetworkReplyImpl() (qnetworkreplyimpl.cpp:543)
==6651==    by 0x13998524: Marble::QNamDownloadJob::finished() (QNamDownloadJob.cpp:81)
==6651==    by 0x13998639: Marble::QNamDownloadJob::qt_metacall(QMetaObject::Call, int, void**) (QNamDownloadJob.moc:75)
==6651==    by 0x7EF07C7: QMetaObject::activate(QObject*, int, int, void**) (qobject.cpp:3115)
==6651==    by 0x7EF1B88: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3192)
==6651==    by 0x5C08751: QNetworkReply::finished() (moc_qnetworkreply.cpp:144)
==6651==    by 0x5BBCCED: QNetworkReplyImplPrivate::finished() (qnetworkreplyimpl.cpp:487)

CCMAIL:marble-devel at kde.org

 M  +2 -1      QNamDownloadJob.cpp  


--- trunk/KDE/kdeedu/marble/src/plugins/network/qnam/QNamDownloadJob.cpp #998748:998749
@@ -78,7 +78,8 @@
     }
 
     m_networkReply->disconnect( this );
-    delete m_networkReply;
+    // No delete. This method is called by a signal QNetworkReply::finished.
+    m_networkReply->deleteLater();
     m_networkReply = 0;
 }
 


More information about the Marble-devel mailing list