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
-~----------~----~----~----~------~----~------~--~---