Bug 92651

Summary: [GTK] critical warning: gdk_window_get_cursor() called on a NULL window
Product: WebKit Reporter: Claudio Saavedra <csaavedra>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: cgarcia, gustavo, mrobinson, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
2012-07-30 Claudio Saavedra <csaavedra@igalia.com> none

Description Claudio Saavedra 2012-07-30 08:45:14 PDT
In WK2, WebKit::PageClientImpl::setCursor(WebCore::Cursor const&) is calling gdk_window_get_cursor() in a NULL GdkWindow. Maybe the underlying widget is not realized yet?

This happens when I open a new Epiphany session after having closed one with several tabs open.

#0  0x00007ffff3c23c11 in g_logv (log_domain=0x7ffff4357075 "Gdk", log_level=G_LOG_LEVEL_CRITICAL, format=0x7ffff3ca82c0 "%s: assertion `%s' failed", args1=0x7fffffffc4b8) at gmessages.c:758
#1  0x00007ffff3c23d05 in g_log (log_domain=0x7ffff4357075 "Gdk", log_level=G_LOG_LEVEL_CRITICAL, format=0x7ffff3ca82c0 "%s: assertion `%s' failed") at gmessages.c:792
#2  0x00007ffff3c23d46 in g_return_if_fail_warning (log_domain=0x7ffff4357075 "Gdk", pretty_function=0x7ffff4357e40 "gdk_window_get_cursor", expression=0x7ffff435725e "GDK_IS_WINDOW (window)")
    at gmessages.c:801
#3  0x00007ffff431163e in gdk_window_get_cursor (window=0x0) at gdkwindow.c:6766
#4  0x00007ffff6a7e8ca in WebKit::PageClientImpl::setCursor(WebCore::Cursor const&) () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#5  0x00007ffff6b83d70 in void CoreIPC::handleMessage<Messages::WebPageProxy::SetCursor, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebCore::Cursor const&)>(CoreIPC::ArgumentDecoder*, WebKit::WebPageP
roxy*, void (WebKit::WebPageProxy::*)(WebCore::Cursor const&)) () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#6  0x00007ffff6b8392b in WebKit::WebPageProxy::didReceiveWebPageProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#7  0x00007ffff6ac1a4a in WebKit::WebConnectionToWebProcess::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#8  0x00007ffff6a3f958 in CoreIPC::Connection::dispatchMessage(CoreIPC::Connection::Message<CoreIPC::ArgumentDecoder>&) () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#9  0x00007ffff6a3fa82 in CoreIPC::Connection::dispatchOneMessage() () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#10 0x00007ffff71d4224 in WebCore::RunLoop::performWork() () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#11 0x00007ffff7a99849 in WebCore::RunLoop::queueWork(WebCore::RunLoop*) () from /opt/gnome-3.0/lib64/libwebkit2gtk-3.0.so.0
#12 0x00007ffff3c1c818 in g_idle_dispatch (source=0x7fff88001c50, callback=0x7ffff7a99840 <WebCore::RunLoop::queueWork(WebCore::RunLoop*)>, user_data=0x7fffe9cf6c98) at gmain.c:4788
#13 0x00007ffff3c1a1d5 in g_main_dispatch (context=0x511510) at gmain.c:2698
#14 0x00007ffff3c1ad85 in g_main_context_dispatch (context=0x511510) at gmain.c:3202

#15 0x00007ffff3c1af68 in g_main_context_iterate (context=0x511510, block=1, dispatch=1, self=0x53a520) at gmain.c:3273
#16 0x00007ffff3c1b02c in g_main_context_iteration (context=0x511510, may_block=1) at gmain.c:3334
#17 0x00007ffff3e2e7b0 in g_application_run (application=0x630010, argc=1, argv=0x7fffffffd0c8) at gapplication.c:1607
#18 0x000000000042e0e3 in main (argc=1, argv=0x7fffffffd0c8) at ephy-main.c:493
Comment 1 Claudio Saavedra 2012-07-30 09:13:18 PDT
Created attachment 155298 [details]
2012-07-30  Claudio Saavedra  <csaavedra@igalia.com>

[GTK] critical warning: gdk_window_get_cursor() called on a NULL window
        https://bugs.webkit.org/show_bug.cgi?id=92651

        Reviewed by NOBODY (OOPS!).

        PageClientImpl::setCursor() might get called before the
        window is realized, so safeguard against it.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::setCursor): early return if the window is
        not realized.
Comment 2 WebKit Review Bot 2012-07-30 09:20:57 PDT
Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API
Comment 3 WebKit Review Bot 2012-07-30 13:58:14 PDT
Comment on attachment 155298 [details]
2012-07-30  Claudio Saavedra  <csaavedra@igalia.com>

Clearing flags on attachment: 155298

Committed r124087: <http://trac.webkit.org/changeset/124087>
Comment 4 WebKit Review Bot 2012-07-30 13:58:18 PDT
All reviewed patches have been landed.  Closing bug.