On Sun, Mar 22, 2009 at 1:01 AM, Darin Fisher <[email protected]> wrote:
> It would be nice to track down the source of the null NativeViewId.  I bet
> that corresponds to a real bug.

Here's a backtrace from the renderer with host_window_ == NULL
obtained from clicking on a link in an email in gmail:

(gdb) bt
#0  RenderWidget::GetRootWindowRect (this=0x9330530,
webwidget=0x932ffc0, rect=0xb77b4508) at renderer/render_widget.cc:602
#1  0x011808f1 in ChromeClientImpl::windowRect (this=0x90b76b8) at
/home/craig/chromium.git/src/webkit/glue/chrome_client_impl.cc:100
#2  0x07692c3c in WebCore::Chrome::windowRect (this=0x9338000) at
/home/craig/chromium.git/src/third_party/WebKit/WebCore/page/Chrome.cpp:119
#3  0x07a435e7 in WebCore::FrameLoader::createWindow (this=0x8b3715c,
frameLoaderForFrameLookup=0x8a6caac, reque...@0xb77b47b4,
featur...@0xb77b4b54,
    creat...@0xb77b4abb) at
/home/craig/chromium.git/src/third_party/WebKit/WebCore/loader/FrameLoader.cpp:380
#4  0x0444ec13 in createWindow (openerFrame=0x8a6ca80,
u...@0xb77b4bcc, framena...@0xb77b4bc8, windowfeatur...@0xb77b4b54,
dialogArgs=
        {<v8::Handle<v8::Value>> = {val_ = 0x0}, <No data fields>})
    at 
/home/craig/chromium.git/src/third_party/WebKit/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:270
#5  0x0444fee0 in WebCore::V8Custom::v8DOMWindowOpenCallback (ar...@0xb77b4ce4)
    at 
/home/craig/chromium.git/src/third_party/WebKit/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:492
#6  0x0806e20d in Builtin_HandleApiCall (__argc__=4,
__argv__=0xb77b4da0) at
/home/craig/chromium.git/src/v8/src/builtins.cc:380

After poking at some code and inserting the odd printf, it seems as if
RenderView::CreateWebView is calling RenderView::Create and passing a
_hardcoded_ NULL as the parent_hwnd which is then passed to
RenderView::Init where host_window_ is set to parent_hwnd which is
NULL. That NULL would seem to me to be wrong. If it's not wrong, the
other  initialisation path for host_window_ is
RenderWidget::CompleteInit which is called from
RenderWidget::OnCreatingNewAck. The CreatingNewAck message should be
sent by RenderWidgetHost::Init() but I never see that being called
when creating the error.

Hopefully that's enough detail for someone who actually understands
what these things do to propose a fix :)

It looks trivial to squash sending the NULL to the browser to in
RenderWidget::GetRootWindowRect but that is probably not the right
fix.

Thank you,

--Craig

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: [email protected] 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to