Hi Webkit developers!
I made modifications in QtLauncher for possibility of taking large
tests and searching memory leaks or other errors with tools like valgrind.
In my version when the first parameter is an existing file with the
suffix "urllist" (for example: urls.urllist) QtLauncher loads the urls
that it contains. The file must be a simple text file with one url in each
line and the suffix must be "urllist".
When the parameter is not a file it works like before.
I found many problems in webkit with this tool. Usually these
problems appears with an assertion hit. Te most recently is:
ASSERTION FAILED: m_frame->document()->parsing()
(../../../WebCore/loader/FrameLoader.cpp:1865 void
WebCore::FrameLoader::addData(const char*, int))
I think this can be useful and I want to continue work on this, so I
ask you about your opinion. Is it possible to merge this code into the
trunk
(for except into a separate directory like WebKit/qt/QtLauncher_test)?
Anyway it could be useful for me if somebody would check it and affirm
that my code is correct and the problems are in Webkit itself (I
really believe in it
but there are some errors that I can not reproducate manually.)
My changes are just a few lines in WebKit/qt/QtLauncher/main.cpp (and
one in QtLauncher.pro). I attach my changes and a backtrace of the error
I show above.
Thanks!
Kelemen Balázs
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
Index: QtLauncher.pro
===================================================================
--- QtLauncher.pro (revision 35941)
+++ QtLauncher.pro (working copy)
@@ -3,8 +3,13 @@
CONFIG -= app_bundle
CONFIG += uitools
DESTDIR = ../../../bin
+INCPATH += $$PWD/../../../JavaScriptCore/wtf
include(../../../WebKit.pri)
Index: main.cpp
===================================================================
--- main.cpp (revision 35941)
+++ main.cpp (working copy)
@@ -42,6 +42,15 @@
#include <QtUiTools/QUiLoader>
+#include <Vector.h>
+#include <QFile>
+#include <QFileInfo>
+#include <string>
+#include <fstream>
+#include <iostream>
+#include <unistd.h>
+using namespace std;
+
class WebPage : public QWebPage
{
public:
@@ -87,6 +96,10 @@
return view->page();
}
+ QWebView *webView() const {
+ return view;
+ }
+
protected slots:
void changeLocation() {
@@ -322,12 +335,80 @@
return loader.createWidget(classId, view());
}
+class UrlLoader : public QObject
+{
+ Q_OBJECT
+public:
+ UrlLoader(const QWebView* view, const QString& inputFile, const QString& outputFile)
+ : m_outputFile(outputFile.toStdString().c_str())
+ {
+ m_view = const_cast<QWebView*>(view);
+ init(inputFile.toStdString());
+ }
+
+ ~UrlLoader()
+ {
+ m_outputFile.flush();
+ m_outputFile.close();
+ }
+
+
+public slots:
+ void loadNext()
+ {
+ QString *qstr;
+ if(getUrl(qstr)) {
+ QUrl url(*qstr, QUrl::StrictMode);
+ if(url.isValid()) {
+ cout<<"Loading "<<qstr->toStdString()<<" ......"<<endl;
+ m_outputFile<<m_index<<".: "<<qstr->toStdString()<<endl;
+ m_view->load(url);
+ } else {
+ loadNext();
+ }
+ } else {
+ disconnect(m_view, 0, this, 0);
+ }
+ }
+
+private:
+ void init(const string& inputFile)
+ {
+ ifstream file(inputFile.c_str());
+ char buffer[1024];
+ int i = 0;
+ while(true) {
+ file.getline(buffer, 1024);
+ if(file.eof())
+ break;
+ m_urls.insert(i++, new QString(buffer));
+ }
+ m_index = 0;
+ file.close();
+ }
+
+ bool getUrl(QString*& qstr)
+ {
+ if(m_index == m_urls.size()) {
+ return false;
+ }
+ qstr = m_urls[m_index++];
+ return true;
+ }
+
+private:
+ WTF::Vector<QString*> m_urls;
+ int m_index;
+ QWebView* m_view;
+ ofstream m_outputFile;
+};
+
#include "main.moc"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
- QString url = QString("%1/%2").arg(QDir::homePath()).arg(QLatin1String("index.html"));
+ QString defaultUrl = QString("%1/%2").arg(QDir::homePath()).arg(QLatin1String("index.html"));
QWebSettings::setMaximumPagesInCache(4);
@@ -341,13 +422,28 @@
QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
+ QString arg1, arg2;
const QStringList args = app.arguments();
- if (args.count() > 1)
- url = args.at(1);
+ if (args.count() > 1) {
+ arg1 = args.at(1);
+ if(args.count() > 2)
+ arg2 = args.at(2);
+ else
+ arg2 = QString("loaded_urls.txt");
+ } else {
+ arg1 = defaultUrl;
+ }
- MainWindow window(url);
- window.show();
-
- return app.exec();
+ if (QFile::exists(arg1) && QFileInfo(arg1).suffix()==QString("urllist")) {
+ MainWindow window(defaultUrl);
+ const QWebView *view = window.webView();
+ UrlLoader loader(view, arg1, arg2);
+ QObject::connect(view, SIGNAL(loadFinished(bool)), &loader, SLOT(loadNext()));
+ window.show();
+ return app.exec();
+ } else {
+ MainWindow window(arg1);
+ window.show();
+ return app.exec();
+ }
}
-
/*
* Copyright (C) 2008 Trolltech ASA
* Copyright (C) 2006 George Staikos <[EMAIL PROTECTED]>
* Copyright (C) 2006 Dirk Mueller <[EMAIL PROTECTED]>
* Copyright (C) 2006 Zack Rusin <[EMAIL PROTECTED]>
* Copyright (C) 2006 Simon Hausmann <[EMAIL PROTECTED]>
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <qwebpage.h>
#include <qwebview.h>
#include <qwebframe.h>
#include <qwebsettings.h>
#include <QtGui>
#include <QDebug>
#if QT_VERSION >= 0x040400 && !defined(QT_NO_PRINTER)
#include <QPrintPreviewDialog>
#endif
#include <QtUiTools/QUiLoader>
#include <Vector.h>
#include <QFile>
#include <QFileInfo>
#include <string>
#include <fstream>
#include <iostream>
#include <unistd.h>
using namespace std;
class WebPage : public QWebPage
{
public:
WebPage(QWidget *parent) : QWebPage(parent) {}
virtual QWebPage *createWindow(QWebPage::WebWindowType);
virtual QObject* createPlugin(const QString&, const QUrl&, const QStringList&, const QStringList&);
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(const QString& url = QString()): currentZoom(100) {
view = new QWebView(this);
setCentralWidget(view);
view->setPage(new WebPage(view));
connect(view, SIGNAL(loadFinished(bool)),
this, SLOT(loadFinished()));
connect(view, SIGNAL(titleChanged(const QString&)),
this, SLOT(setWindowTitle(const QString&)));
connect(view->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString &)),
this, SLOT(showLinkHover(const QString&, const QString&)));
connect(view->page(), SIGNAL(windowCloseRequested()), this, SLOT(deleteLater()));
setupUI();
QUrl qurl = guessUrlFromString(url);
if (qurl.isValid()) {
urlEdit->setText(qurl.toString());
view->load(qurl);
// the zoom values are chosen to be like in Mozilla Firefox 3
zoomLevels << 30 << 50 << 67 << 80 << 90;
zoomLevels << 100;
zoomLevels << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300;
}
}
QWebPage *webPage() const {
return view->page();
}
QWebView *webView() const {
return view;
}
protected slots:
void changeLocation() {
QUrl url = guessUrlFromString(urlEdit->text());
urlEdit->setText(url.toString());
view->load(url);
view->setFocus(Qt::OtherFocusReason);
}
void loadFinished() {
urlEdit->setText(view->url().toString());
QUrl::FormattingOptions opts;
opts |= QUrl::RemoveScheme;
opts |= QUrl::RemoveUserInfo;
opts |= QUrl::StripTrailingSlash;
QString s = view->url().toString(opts);
s = s.mid(2);
if (s.isEmpty())
return;
if (!urlList.contains(s))
urlList += s;
urlModel.setStringList(urlList);
}
void showLinkHover(const QString &link, const QString &toolTip) {
statusBar()->showMessage(link);
#ifndef QT_NO_TOOLTIP
if (!toolTip.isEmpty())
QToolTip::showText(QCursor::pos(), toolTip);
#endif
}
void newWindow() {
MainWindow *mw = new MainWindow;
mw->show();
}
void zoomIn() {
int i = zoomLevels.indexOf(currentZoom);
Q_ASSERT(i >= 0);
if (i < zoomLevels.count() - 1)
currentZoom = zoomLevels[i + 1];
view->setZoomFactor(qreal(currentZoom)/100.0);
}
void zoomOut() {
int i = zoomLevels.indexOf(currentZoom);
Q_ASSERT(i >= 0);
if (i > 0)
currentZoom = zoomLevels[i - 1];
view->setZoomFactor(qreal(currentZoom)/100.0);
}
void resetZoom()
{
currentZoom = 100;
view->setZoomFactor(1.0);
}
void toggleZoomTextOnly(bool b)
{
view->page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, b);
}
void print() {
#if QT_VERSION >= 0x040400 && !defined(QT_NO_PRINTER)
QPrintPreviewDialog dlg(this);
connect(&dlg, SIGNAL(paintRequested(QPrinter *)),
view, SLOT(print(QPrinter *)));
dlg.exec();
#endif
}
void setEditable(bool on) {
view->page()->setEditable(on);
formatMenuAction->setVisible(on);
}
void dumpHtml() {
qDebug() << "HTML: " << view->page()->mainFrame()->toHtml();
}
private:
QVector<int> zoomLevels;
int currentZoom;
// create the status bar, tool bar & menu
void setupUI() {
progress = new QProgressBar(this);
progress->setRange(0, 100);
progress->setMinimumSize(100, 20);
progress->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
progress->hide();
statusBar()->addPermanentWidget(progress);
connect(view, SIGNAL(loadProgress(int)), progress, SLOT(show()));
connect(view, SIGNAL(loadProgress(int)), progress, SLOT(setValue(int)));
connect(view, SIGNAL(loadFinished(bool)), progress, SLOT(hide()));
urlEdit = new QLineEdit(this);
urlEdit->setSizePolicy(QSizePolicy::Expanding, urlEdit->sizePolicy().verticalPolicy());
connect(urlEdit, SIGNAL(returnPressed()),
SLOT(changeLocation()));
QCompleter *completer = new QCompleter(this);
urlEdit->setCompleter(completer);
completer->setModel(&urlModel);
QToolBar *bar = addToolBar("Navigation");
bar->addAction(view->pageAction(QWebPage::Back));
bar->addAction(view->pageAction(QWebPage::Forward));
bar->addAction(view->pageAction(QWebPage::Reload));
bar->addAction(view->pageAction(QWebPage::Stop));
bar->addWidget(urlEdit);
QMenu *fileMenu = menuBar()->addMenu("&File");
QAction *newWindow = fileMenu->addAction("New Window", this, SLOT(newWindow()));
#if QT_VERSION >= 0x040400
fileMenu->addAction(tr("Print"), this, SLOT(print()));
#endif
fileMenu->addAction("Close", this, SLOT(close()));
QMenu *editMenu = menuBar()->addMenu("&Edit");
editMenu->addAction(view->pageAction(QWebPage::Undo));
editMenu->addAction(view->pageAction(QWebPage::Redo));
editMenu->addSeparator();
editMenu->addAction(view->pageAction(QWebPage::Cut));
editMenu->addAction(view->pageAction(QWebPage::Copy));
editMenu->addAction(view->pageAction(QWebPage::Paste));
editMenu->addSeparator();
QAction *setEditable = editMenu->addAction("Set Editable", this, SLOT(setEditable(bool)));
setEditable->setCheckable(true);
QMenu *viewMenu = menuBar()->addMenu("&View");
viewMenu->addAction(view->pageAction(QWebPage::Stop));
viewMenu->addAction(view->pageAction(QWebPage::Reload));
viewMenu->addSeparator();
QAction *zoomIn = viewMenu->addAction("Zoom &In", this, SLOT(zoomIn()));
QAction *zoomOut = viewMenu->addAction("Zoom &Out", this, SLOT(zoomOut()));
QAction *resetZoom = viewMenu->addAction("Reset Zoom", this, SLOT(resetZoom()));
QAction *zoomTextOnly = viewMenu->addAction("Zoom Text Only", this, SLOT(toggleZoomTextOnly(bool)));
zoomTextOnly->setCheckable(true);
zoomTextOnly->setChecked(false);
viewMenu->addSeparator();
viewMenu->addAction("Dump HTML", this, SLOT(dumpHtml()));
QMenu *formatMenu = new QMenu("F&ormat");
formatMenuAction = menuBar()->addMenu(formatMenu);
formatMenuAction->setVisible(false);
formatMenu->addAction(view->pageAction(QWebPage::ToggleBold));
formatMenu->addAction(view->pageAction(QWebPage::ToggleItalic));
formatMenu->addAction(view->pageAction(QWebPage::ToggleUnderline));
QMenu *writingMenu = formatMenu->addMenu(tr("Writing Direction"));
writingMenu->addAction(view->pageAction(QWebPage::SetTextDirectionDefault));
writingMenu->addAction(view->pageAction(QWebPage::SetTextDirectionLeftToRight));
writingMenu->addAction(view->pageAction(QWebPage::SetTextDirectionRightToLeft));
newWindow->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_N));
view->pageAction(QWebPage::Back)->setShortcut(QKeySequence::Back);
view->pageAction(QWebPage::Stop)->setShortcut(Qt::Key_Escape);
view->pageAction(QWebPage::Forward)->setShortcut(QKeySequence::Forward);
view->pageAction(QWebPage::Reload)->setShortcut(QKeySequence::Refresh);
view->pageAction(QWebPage::Undo)->setShortcut(QKeySequence::Undo);
view->pageAction(QWebPage::Redo)->setShortcut(QKeySequence::Redo);
view->pageAction(QWebPage::Cut)->setShortcut(QKeySequence::Cut);
view->pageAction(QWebPage::Copy)->setShortcut(QKeySequence::Copy);
view->pageAction(QWebPage::Paste)->setShortcut(QKeySequence::Paste);
zoomIn->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Plus));
zoomOut->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Minus));
resetZoom->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_0));
view->pageAction(QWebPage::ToggleBold)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_B));
view->pageAction(QWebPage::ToggleItalic)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_I));
view->pageAction(QWebPage::ToggleUnderline)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_U));
}
QUrl guessUrlFromString(const QString &string) {
QString urlStr = string.trimmed();
QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
// Check if it looks like a qualified URL. Try parsing it and see.
bool hasSchema = test.exactMatch(urlStr);
if (hasSchema) {
QUrl url(urlStr, QUrl::TolerantMode);
if (url.isValid())
return url;
}
// Might be a file.
if (QFile::exists(urlStr))
return QUrl::fromLocalFile(urlStr);
// Might be a shorturl - try to detect the schema.
if (!hasSchema) {
int dotIndex = urlStr.indexOf(QLatin1Char('.'));
if (dotIndex != -1) {
QString prefix = urlStr.left(dotIndex).toLower();
QString schema = (prefix == QLatin1String("ftp")) ? prefix : QLatin1String("http");
QUrl url(schema + QLatin1String("://") + urlStr, QUrl::TolerantMode);
if (url.isValid())
return url;
}
}
// Fall back to QUrl's own tolerant parser.
return QUrl(string, QUrl::TolerantMode);
}
QWebView *view;
QLineEdit *urlEdit;
QProgressBar *progress;
QAction *formatMenuAction;
QStringList urlList;
QStringListModel urlModel;
};
QWebPage *WebPage::createWindow(QWebPage::WebWindowType)
{
MainWindow *mw = new MainWindow;
return mw->webPage();
}
QObject *WebPage::createPlugin(const QString &classId, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues)
{
Q_UNUSED(url);
Q_UNUSED(paramNames);
Q_UNUSED(paramValues);
QUiLoader loader;
return loader.createWidget(classId, view());
}
class UrlLoader : public QObject
{
Q_OBJECT
public:
UrlLoader(const QWebView* view, const QString& inputFile, const QString& outputFile)
: m_outputFile(outputFile.toStdString().c_str())
{
m_view = const_cast<QWebView*>(view);
init(inputFile.toStdString());
}
~UrlLoader()
{
m_outputFile.flush();
m_outputFile.close();
}
public slots:
void loadNext()
{
QString *qstr;
if(getUrl(qstr)) {
QUrl url(*qstr, QUrl::StrictMode);
if(url.isValid()) {
cout<<"Loading "<<qstr->toStdString()<<" ......"<<endl;
m_outputFile<<m_index<<".: "<<qstr->toStdString()<<endl;
m_view->load(url);
} else {
loadNext();
}
} else {
disconnect(m_view, 0, this, 0);
}
}
private:
void init(const string& inputFile)
{
ifstream file(inputFile.c_str());
char buffer[1024];
int i = 0;
while(true) {
file.getline(buffer, 1024);
if(file.eof())
break;
m_urls.insert(i++, new QString(buffer));
}
m_index = 0;
file.close();
}
bool getUrl(QString*& qstr)
{
if(m_index == m_urls.size()) {
return false;
}
qstr = m_urls[m_index++];
return true;
}
private:
WTF::Vector<QString*> m_urls;
int m_index;
QWebView* m_view;
ofstream m_outputFile;
};
#include "main.moc"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QString defaultUrl = QString("%1/%2").arg(QDir::homePath()).arg(QLatin1String("index.html"));
QWebSettings::setMaximumPagesInCache(4);
app.setApplicationName("QtLauncher");
#if QT_VERSION >= 0x040400
app.setApplicationVersion("0.1");
#endif
QWebSettings::setObjectCacheCapacities((16*1024*1024) / 8, (16*1024*1024) / 8, 16*1024*1024);
QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
QString arg1, arg2;
const QStringList args = app.arguments();
if (args.count() > 1) {
arg1 = args.at(1);
if(args.count() > 2)
arg2 = args.at(2);
else
arg2 = QString("loaded_urls.txt");
} else {
arg1 = defaultUrl;
}
if (QFile::exists(arg1) && QFileInfo(arg1).suffix()==QString("urllist")) {
MainWindow window(defaultUrl);
const QWebView *view = window.webView();
UrlLoader loader(view, arg1, arg2);
QObject::connect(view, SIGNAL(loadFinished(bool)), &loader, SLOT(loadNext()));
window.show();
return app.exec();
} else {
MainWindow window(arg1);
window.show();
return app.exec();
}
}
(gdb) run crasher.urllist
Starting program: /home/balazs/Webkit/WebKitBuild/Debug/bin/QtLauncher
crasher.urllist
[Thread debugging using libthread_db enabled]
[New Thread -1266465088 (LWP 29472)]
Loading http://advertising.msn.com/home/home.asp ......
Loading
http://about.reuters.com/media/customer_support/branding/popups/full_legal_notice.htm
......
Loading
http://add.my.yahoo.com/rss?url=http://blogs.moneycentral.msn.com/smartspending/rss.aspx
......
Loading
http://ad.doubleclick.net/clk;167837766;23040241;g?http://www.scottrade.com?id=1
......
[New Thread -1270740048 (LWP 29556)]
ASSERTION FAILED: m_frame->document()->parsing()
(../../../WebCore/loader/FrameLoader.cpp:1865 void
WebCore::FrameLoader::addData(const char*, int))
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1266465088 (LWP 29472)]
0xb69809d0 in WebCore::FrameLoader::addData (this=0x811787c,
bytes=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768) at
../../../WebCore/loader/FrameLoader.cpp:1865
1865 ASSERT(m_frame->document()->parsing());
(gdb) bt
#0 0xb69809d0 in WebCore::FrameLoader::addData (this=0x811787c,
bytes=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768) at
../../../WebCore/loader/FrameLoader.cpp:1865
#1 0xb6c58f2f in WebCore::FrameLoaderClientQt::committedLoad (this=0x8117510,
loader=0x8181908,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768) at
../../../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:691
#2 0xb6978ef6 in WebCore::FrameLoader::committedLoad (this=0x811787c,
loader=0x8181908,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768) at
../../../WebCore/loader/FrameLoader.cpp:3366
#3 0xb6968e4a in WebCore::DocumentLoader::commitLoad (this=0x8181908,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768) at
../../../WebCore/loader/DocumentLoader.cpp:355
#4 0xb6968ed6 in WebCore::DocumentLoader::receivedData (this=0x8181908,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768) at
../../../WebCore/loader/DocumentLoader.cpp:367
#5 0xb697bc23 in WebCore::FrameLoader::receivedData (this=0x811787c,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768) at
../../../WebCore/loader/FrameLoader.cpp:2317
#6 0xb69a566e in WebCore::MainResourceLoader::addData (this=0x81d0870,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768,
allAtOnce=false) at ../../../WebCore/loader/MainResourceLoader.cpp:145
#7 0xb69acabf in WebCore::ResourceLoader::didReceiveData (this=0x81d0870,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768,
lengthReceived=32768, allAtOnce=false)
at ../../../WebCore/loader/ResourceLoader.cpp:251
---Type <return> to continue, or q <return> to quit---return
#8 0xb69a53f2 in WebCore::MainResourceLoader::didReceiveData (this=0x81d0870,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768,
lengthReceived=32768, allAtOnce=false)
at ../../../WebCore/loader/MainResourceLoader.cpp:305
#9 0xb69abe58 in WebCore::ResourceLoader::didReceiveData (this=0x81d0870,
data=0x8272ef0 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html
class=\"ua-wk\">\r\n<head>\r\n<script>var gTop = Number(new Date());</script>",
' ' <repeats 11 times>, "<script> </script> "..., length=32768,
lengthReceived=32768) at ../../../WebCore/loader/ResourceLoader.cpp:393
#10 0xb6c29797 in WebCore::QNetworkReplyHandler::forwardData (this=0x8201f48)
at ../../../WebCore/platform/network/qt/QNetworkReplyHandler.cpp:310
#11 0xb6c2acd8 in WebCore::QNetworkReplyHandler::qt_metacall (this=0x8201f48,
_c=QMetaObject::InvokeMetaMethod,
_id=2, _a=0x81b1270) at ./moc_QNetworkReplyHandler.cpp:70
#12 0xb4e15b59 in QMetaCallEvent::placeMetaCall (this=0x824aa08,
object=0x8201f48) at kernel/qobject.cpp:535
#13 0xb4e16d11 in QObject::event (this=0x8201f48, e=0x824aa08) at
kernel/qobject.cpp:1131
#14 0xb520c05f in QApplicationPrivate::notify_helper (this=0x80e1470,
receiver=0x8201f48, e=0x824aa08)
at kernel/qapplication.cpp:3800
#15 0xb5210b69 in QApplication::notify (this=0xbff007e0, receiver=0x8201f48,
e=0x824aa08)
at kernel/qapplication.cpp:3392
#16 0xb4e07227 in QCoreApplication::notifyInternal (this=0xbff007e0,
receiver=0x8201f48, event=0x824aa08)
at kernel/qcoreapplication.cpp:591
#17 0xb4e0852d in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0,
event_type=0, data=0x80e1528)
at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#18 0xb4e087cd in QCoreApplication::sendPostedEvents (receiver=0x0,
event_type=0)
at kernel/qcoreapplication.cpp:1095
#19 0xb4e326dd in postEventSourceDispatch (s=0x80e7ea0)
at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#20 0xb4c4a731 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#21 0xb4c4d7a6 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#22 0xb4c4dd27 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#23 0xb4e32aa8 in QEventDispatcherGlib::processEvents (this=0x80e5938, [EMAIL
PROTECTED])
at kernel/qeventdispatcher_glib.cpp:325
#24 0xb529d2f5 in QGuiEventDispatcherGlib::processEvents (this=0x80e5938,
[EMAIL PROTECTED])
---Type <return> to continue, or q <return> to quit---return
at kernel/qguieventdispatcher_glib.cpp:204
#25 0xb4e064cd in QEventLoop::processEvents (this=0xbff006f0, [EMAIL
PROTECTED]) at kernel/qeventloop.cpp:149
#26 0xb4e0666d in QEventLoop::exec (this=0xbff006f0, [EMAIL PROTECTED]) at
kernel/qeventloop.cpp:200
#27 0xb4e08886 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:849
#28 0xb520b957 in QApplication::exec () at kernel/qapplication.cpp:3330
#29 0x08057607 in main (argc=-1262438864, argv=0xb4ae6440) at
/home/balazs/Webkit/WebKit/qt/QtLauncher/main.cpp:434
(gdb) _______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev