Bug 45034 - [Qt] Memory leak is observed in qwebpage.
Summary: [Qt] Memory leak is observed in qwebpage.
Status: RESOLVED WORKSFORME
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Qt (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P1 Normal
Assignee: Nobody
URL:
Keywords: EasyFix, Qt, QtTriaged
Depends on:
Blocks:
 
Reported: 2010-09-01 05:17 PDT by Sreedhar Vaddi
Modified: 2011-01-30 08:19 PST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sreedhar Vaddi 2010-09-01 05:17:12 PDT
Memory Leak Observed in qwebpage.

I am going through the code of qwebpage.cpp I found the below code
void QWebPage::setView(QWidget* view)
{
    if (this->view() == view)
        return;

    d->view = view;
    setViewportSize(view ? view->size() : QSize(0, 0));

    // If we have no client, we install a special client delegating
    // the responsibility to the QWidget. This is the code path
    // handling a.o. the "legacy" QWebView.
    //
    // If such a special delegate already exist, we substitute the view.

    if (d->client) {
        if (d->client->isQWidgetClient())
            static_cast<PageClientQWidget*>(d->client)->view = view;
        return;
    }

    if (view)
        d->client = new PageClientQWidget(view);
}

Here d->client is created but it is not deleted.

I have QtWebkit build on S60(Symbian) environment. 
I found this as a leak using hook logger while executing unit testcases.
<M:\sf\os\ossrv\genericopenlibs\cppstdlib\src\stdcpp_support.cpp #83> + 15 -
libstdcppv5.dll! 63913640()
        QWebPage::setView(class QWidget *)
<Y:\sf\mw\qt\src\3rdparty\webkit\WebKit\qt\Api\qwebpage.cpp #1787> + 7 -
QtWebKit.dll! 53ef2107()
        QWebPage::QWebPage(class QObject *)
<Y:\sf\mw\qt\src\3rdparty\webkit\WebKit\qt\Api\qwebpage.cpp #1694> + 24 -
QtWebKit.dll! 53ef1d42()
        WRT::WrtPage::WrtPage(class QWidget *)
<T:\cwrt\wrt\runtimecore\wrtpage.cpp #54> + 43 - RuntimeCore.dll! 4f3e8f4b()
        WRT::WrtControllerPrivate::WrtControllerPrivate(class QWidget *,enum
WRT::WebKitView) <T:\cwrt\wrt\runtimecore\wrtcontroller.cpp #62> + 39 -
RuntimeCore.dll! 4f3eac53()
        WRT::WrtController::WrtController(class QWidget *,enum WRT::WebKitView)
<T:\cwrt\wrt\runtimecore\wrtcontroller.cpp #149> + 21 - RuntimeCore.dll!
4f3eb25e()
Comment 1 Benjamin Poulain 2011-01-30 08:18:33 PST
client is a OwnPtr, your tool is broken or the code has been updated since you reported the issue.