Version: latest git snapshot (using KDE 4.5.0) OS: Linux Opening http://www.sfx.co.uk/2010/08/26/from-the-sfx-office-25/ crashes rekonq Konqueror (khtml) and firefox can open it. Konqueror (kwebkitpart) also crashes. Reproducible: Always Steps to Reproduce: Open http://www.sfx.co.uk/2010/08/26/from-the-sfx-office-25/ Actual Results: Rekonq Crashes Expected Results: Rekonq should display the page OS: Linux (i686) release 2.6.35-19-generic Compiler: cc
It crashes here too with rekonq and konqi webkitpart. But NOT with arora :( KIO related? Dawit?
It looks like a bug in KIO. What happens is that WebKit creates a request with the operation QNetworkAccessManager::CustomOperation (this is necessary to support OPTIONS, see https://bugs.webkit.org/show_bug.cgi?id=34647 ). Since Rekonq does not handle that case, it is passed to KIO: reply = AccessManager::createRequest(op, req, outgoingData); Which return 0. We get a segfault when this reply is used by WebKit.
For the KIO devs, note that QNetworkAccessManager::sendCustomRequest() and QNetworkAccessManager::CustomOperation are new in Qt 4.7: http://doc.qt.nokia.com/4.7-snapshot/qnetworkaccessmanager.html#sendCustomRequest
commit a3e57d0dfb6cbc45e8039820ecf8a4d8c90aa6ac Author: Andrea Diamantini <adjam7@gmail.com> Date: Tue Aug 31 12:02:27 2010 +0200 This works as wrokaround for KIO missing implementation in DELETE & CUSTOM access manager operations It will be removed when we'll implement it in the right place. BUG: 249275 diff --git a/src/networkaccessmanager.cpp b/src/networkaccessmanager.cpp index 9d9d052..f746087 100644 --- a/src/networkaccessmanager.cpp +++ b/src/networkaccessmanager.cpp @@ -104,16 +104,17 @@ QNetworkReply *NetworkAccessManager::createRequest(QNetworkAccessManager::Operat break; case QNetworkAccessManager::DeleteOperation: + kDebug() << "DELETE OPERATION..."; + reply = QNetworkAccessManager::createRequest(op, req, outgoingData); + if(!reply) + kDebug() << "OOOOOOOOOOOOOOOOOOO DELETE REPLY NULL"; break; case QNetworkAccessManager::CustomOperation: -/* { - kDebug() << "CUSTOM OPERATION..."; - QByteArray verb("*"); - reply = sendCustomRequest(req, verb, outgoingData); - } + kDebug() << "CUSTOM OPERATION..."; + reply = QNetworkAccessManager::createRequest(op, req, outgoingData); if(!reply) - kDebug() << "OOOOOOOOOOOOOOOOOOO CUSTOM REPLY NULL";*/ + kDebug() << "OOOOOOOOOOOOOOOOOOO CUSTOM REPLY NULL"; break; default:
Works now for me - thanks!