Bug 50744 - [GTK] Insta-crash when closing browser with inspector window opened
Summary: [GTK] Insta-crash when closing browser with inspector window opened
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC OS X 10.5
: P2 Normal
Assignee: Gustavo Noronha (kov)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-09 02:56 PST by Xan Lopez
Modified: 2012-03-11 16:15 PDT (History)
7 users (show)

See Also:


Attachments
Patch (15.14 KB, patch)
2012-02-06 01:49 PST, Gustavo Noronha (kov)
mrobinson: review+
Details | Formatted Diff | Diff
testwebinspector backtrace (43.40 KB, text/plain)
2012-02-25 23:05 PST, Alexandre Rostovtsev
no flags Details
strace output (27.60 KB, application/x-bzip2)
2012-02-26 12:25 PST, Alexandre Rostovtsev
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Xan Lopez 2010-12-09 02:56:45 PST
The ASSERT was added by Yuri in r56051, CCing him.

ASSERTION FAILED: !m_webInspector
(../../WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:262 virtual WebKit::InspectorFrontendClient::~InspectorFrontendClient())

Program received signal SIGSEGV, Segmentation fault.
0x010d3935 in WebKit::InspectorFrontendClient::~InspectorFrontendClient (this=0x8b367b8, __in_chrg=<value optimized out>)
    at ../../WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:262
262	    ASSERT(!m_webInspector);
Missing separate debuginfos, use: debuginfo-install hunspell-1.2.8-18.fc13.i686 oprofile-jit-0.9.6-6.fc13.i686
(gdb) bt
#0  0x010d3935 in WebKit::InspectorFrontendClient::~InspectorFrontendClient (this=0x8b367b8, __in_chrg=<value optimized out>)
    at ../../WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:262
#1  0x010d3985 in WebKit::InspectorFrontendClient::~InspectorFrontendClient (this=0x8b367b8, __in_chrg=<value optimized out>)
    at ../../WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:263
#2  0x00b7c34c in WTF::deleteOwnedPtr<WebCore::InspectorFrontendClient> (ptr=0x8b367b8) at ../../JavaScriptCore/wtf/OwnPtrCommon.h:59
#3  0x00b78f19 in WTF::OwnPtr<WebCore::InspectorFrontendClient>::~OwnPtr (this=0x895daa0, __in_chrg=<value optimized out>)
    at ../../JavaScriptCore/wtf/OwnPtr.h:58
#4  0x00b6fa3f in WebCore::InspectorController::~InspectorController (this=0x895da98, __in_chrg=<value optimized out>)
    at ../../WebCore/inspector/InspectorController.cpp:176
#5  0x00cd111b in WTF::deleteOwnedPtr<WebCore::InspectorController> (ptr=0x895da98) at ../../JavaScriptCore/wtf/OwnPtrCommon.h:59
#6  0x00cd01db in WTF::OwnPtr<WebCore::InspectorController>::~OwnPtr (this=0x895d8b0, __in_chrg=<value optimized out>)
    at ../../JavaScriptCore/wtf/OwnPtr.h:58
#7  0x00cccf9a in WebCore::Page::~Page (this=0x895d898, __in_chrg=<value optimized out>) at ../../WebCore/page/Page.cpp:228
#8  0x010ede5f in webkit_web_view_dispose (object=0x8184590) at ../../WebKit/gtk/webkit/webkitwebview.cpp:1348
#9  0x080c4af5 in ephy_web_view_dispose (object=0x8184590) at ../../embed/ephy-web-view.c:556
#10 0x033e4068 in g_object_run_dispose (object=0x8184590) at gobject.c:939
#11 0x02a20efc in gtk_widget_destroy (widget=0x8184590) at gtkwidget.c:3764
#12 0x027a103c in gtk_bin_forall (container=0x82374c0, include_internals=0, callback=0x2a20e43 <gtk_widget_destroy>, callback_data=0x0) at gtkbin.c:174
#13 0x02927806 in gtk_scrolled_window_forall (container=0x82374c0, include_internals=0, callback=0x2a20e43 <gtk_widget_destroy>, callback_data=0x0)
    at gtkscrolledwindow.c:1237
#14 0x027f0196 in gtk_container_foreach (container=0x82374c0, callback=0x2a20e43 <gtk_widget_destroy>, callback_data=0x0) at gtkcontainer.c:1935
#15 0x027eeaae in gtk_container_destroy (widget=0x82374c0) at gtkcontainer.c:1317
#16 0x02926ec7 in gtk_scrolled_window_destroy (widget=0x82374c0) at gtkscrolledwindow.c:1016
#17 0x033f9d7b in g_cclosure_marshal_VOID__VOID (closure=0x813d7b8, return_value=0x0, n_param_values=1, param_values=0xb1402908, 
    invocation_hint=0xbfffc2dc, marshal_data=0x2926d3f) at gmarshal.c:79
#18 0x033e0f6e in g_type_class_meta_marshal (closure=0x813d7b8, return_value=0x0, n_param_values=1, param_values=0xb1402908, invocation_hint=0xbfffc2dc, 
    marshal_data=0x4c) at gclosure.c:877
#19 0x033e0c5d in g_closure_invoke (closure=0x813d7b8, return_value=0x0, n_param_values=1, param_values=0xb1402908, invocation_hint=0xbfffc2dc)
    at gclosure.c:766
#20 0x033f9af6 in signal_emit_unlocked_R (node=0x814eae8, detail=0, instance=0x82374c0, emission_return=0x0, instance_and_params=0xb1402908)
    at gsignal.c:3368
#21 0x033f88cb in g_signal_emit_valist (instance=0x82374c0, signal_id=16, detail=0, var_args=0xbfffc4cc "\300t#\b\001") at gsignal.c:2983
#22 0x033f8bb7 in g_signal_emit (instance=0x82374c0, signal_id=16, detail=0) at gsignal.c:3040
#23 0x02a2c77e in gtk_widget_dispose (object=0x82374c0) at gtkwidget.c:9648
#24 0x033e4068 in g_object_run_dispose (object=0x82374c0) at gobject.c:939
#25 0x02a20efc in gtk_widget_destroy (widget=0x82374c0) at gtkwidget.c:3764
#26 0x027a103c in gtk_bin_forall (container=0x8255af0, include_internals=0, callback=0x2a20e43 <gtk_widget_destroy>, callback_data=0x0) at gtkbin.c:174
#27 0x027f0196 in gtk_container_foreach (container=0x8255af0, callback=0x2a20e43 <gtk_widget_destroy>, callback_data=0x0) at gtkcontainer.c:1935
#28 0x027eeaae in gtk_container_destroy (widget=0x8255af0) at gtkcontainer.c:1317
#29 0x02a3c478 in gtk_window_destroy (widget=0x8255af0) at gtkwindow.c:4577
#30 0x033f9d7b in g_cclosure_marshal_VOID__VOID (closure=0x813d7b8, return_value=0x0, n_param_values=1, param_values=0xb720a438, 
---Type <return> to continue, or q <return> to quit---
    invocation_hint=0xbfffc74c, marshal_data=0x2a3c389) at gmarshal.c:79
#31 0x033e0f6e in g_type_class_meta_marshal (closure=0x813d7b8, return_value=0x0, n_param_values=1, param_values=0xb720a438, invocation_hint=0xbfffc74c, 
    marshal_data=0x4c) at gclosure.c:877
#32 0x033e0c5d in g_closure_invoke (closure=0x813d7b8, return_value=0x0, n_param_values=1, param_values=0xb720a438, invocation_hint=0xbfffc74c)
    at gclosure.c:766
#33 0x033f9af6 in signal_emit_unlocked_R (node=0x814eae8, detail=0, instance=0x8255af0, emission_return=0x0, instance_and_params=0xb720a438)
    at gsignal.c:3368
#34 0x033f88cb in g_signal_emit_valist (instance=0x8255af0, signal_id=16, detail=0, 
    var_args=0xbfffc93c "\230[%\b\220\320\023\b\244u\021\b\360Z%\b\020[%\b|\345\264\002|\345\264\002\210\311\377\277E\204\243\002\360Z%\bP")
    at gsignal.c:2983
#35 0x033f8bb7 in g_signal_emit (instance=0x8255af0, signal_id=16, detail=0) at gsignal.c:3040
#36 0x02a2c77e in gtk_widget_dispose (object=0x8255af0) at gtkwidget.c:9648
#37 0x02a38445 in gtk_window_dispose (object=0x8255af0) at gtkwindow.c:2378
#38 0x033e4068 in g_object_run_dispose (object=0x8255af0) at gobject.c:939
#39 0x02a20efc in gtk_widget_destroy (widget=0x8255af0) at gtkwidget.c:3764
#40 0x080b7250 in ephy_embed_dispose (object=0x8218c60) at ../../embed/ephy-embed.c:253
#41 0x033e4068 in g_object_run_dispose (object=0x8218c60) at gobject.c:939
#42 0x02a20efc in gtk_widget_destroy (widget=0x8218c60) at gtkwidget.c:3764
#43 0x0807bbc4 in notebook_page_close_request_cb (notebook=0x81aa0b8, embed=0x8218c60, window=0x8199078) at ../../src/ephy-window.c:2977
#44 0x033fa8a1 in g_cclosure_marshal_VOID__OBJECT (closure=0x81b0ee8, return_value=0x0, n_param_values=2, param_values=0xb3018aa0, 
    invocation_hint=0xbfffcbbc, marshal_data=0x0) at gmarshal.c:638
#45 0x033e0c5d in g_closure_invoke (closure=0x81b0ee8, return_value=0x0, n_param_values=2, param_values=0xb3018aa0, invocation_hint=0xbfffcbbc)
    at gclosure.c:766
#46 0x033f957c in signal_emit_unlocked_R (node=0x81c3d78, detail=0, instance=0x81aa0b8, emission_return=0x0, instance_and_params=0xb3018aa0)
    at gsignal.c:3252
#47 0x033f88cb in g_signal_emit_valist (instance=0x81aa0b8, signal_id=203, detail=0, 
    var_args=0xbfffcdbc "\241\250?\003`\202\031\b\200\335\031\b\270\240\032\b`\214!\b\bv\032\b\360WA\003\030\316\377\277{\235?\003\200\335\031\bx\220\031\b\002") at gsignal.c:2983
#48 0x033f8d22 in g_signal_emit_by_name (instance=0x81aa0b8, detailed_signal=0x80f8730 "tab-close-request") at gsignal.c:3077
#49 0x0808619d in window_cmd_file_close_window (action=0x819dd80, window=0x8199078) at ../../src/window-commands.c:409
#50 0x033f9d7b in g_cclosure_marshal_VOID__VOID (closure=0x81a7608, return_value=0x0, n_param_values=1, param_values=0x89a7130, invocation_hint=0xbfffcedc, 
    marshal_data=0x0) at gmarshal.c:79
#51 0x033e0c5d in g_closure_invoke (closure=0x81a7608, return_value=0x0, n_param_values=1, param_values=0x89a7130, invocation_hint=0xbfffcedc)
    at gclosure.c:766
#52 0x033f957c in signal_emit_unlocked_R (node=0x8158120, detail=0, instance=0x819dd80, emission_return=0x0, instance_and_params=0x89a7130)
    at gsignal.c:3252
#53 0x033f88cb in g_signal_emit_valist (instance=0x819dd80, signal_id=201, detail=0, var_args=0xbfffd0cc "Q\217L\003\300m\025\b\300m\025\b\001")
    at gsignal.c:2983
#54 0x033f8bb7 in g_signal_emit (instance=0x819dd80, signal_id=201, detail=0) at gsignal.c:3040
#55 0x02787d70 in _gtk_action_emit_activate (action=0x819dd80) at gtkaction.c:798
#56 0x02789e64 in closure_accel_activate (closure=0x81b1218, return_value=0xbfffd1b0, n_param_values=4, param_values=0x81ae418, invocation_hint=0xbfffd1cc, 
---Type <return> to continue, or q <return> to quit---
    marshal_data=0x0) at gtkaction.c:1634
#57 0x033e0c5d in g_closure_invoke (closure=0x81b1218, return_value=0xbfffd1b0, n_param_values=4, param_values=0x81ae418, invocation_hint=0xbfffd1cc)
    at gclosure.c:766
#58 0x033f957c in signal_emit_unlocked_R (node=0x8157948, detail=1890, instance=0x8153990, emission_return=0xbfffd2ec, instance_and_params=0x81ae418)
    at gsignal.c:3252
#59 0x033f8957 in g_signal_emit_valist (instance=0x8153990, signal_id=195, detail=1890, var_args=0xbfffd3c8 "\324\323\377\277~\bx\002x\220\031\b")
    at gsignal.c:2993
#60 0x033f8bb7 in g_signal_emit (instance=0x8153990, signal_id=195, detail=1890) at gsignal.c:3040
#61 0x02781cae in gtk_accel_group_activate (accel_group=0x8153990, accel_quark=1890, acceleratable=0x8199078, accel_key=119, accel_mods=GDK_CONTROL_MASK)
    at gtkaccelgroup.c:905
#62 0x02781dd1 in gtk_accel_groups_activate (object=0x8199078, accel_key=119, accel_mods=GDK_CONTROL_MASK) at gtkaccelgroup.c:942
#63 0x02a4450a in gtk_window_activate_key (window=0x8199078, event=0x9976518) at gtkwindow.c:9402
#64 0x02a3e9f9 in gtk_window_key_press_event (widget=0x8199078, event=0x9976518) at gtkwindow.c:5826
#65 0x08076c13 in ephy_window_key_press_event (widget=0x8199078, event=0x9976518) at ../../src/ephy-window.c:1003
#66 0x028a0593 in _gtk_marshal_BOOLEAN__BOXED (closure=0x81500e8, return_value=0xbfffd690, n_param_values=2, param_values=0xb720a118, 
    invocation_hint=0xbfffd6ac, marshal_data=0x807686c) at gtkmarshalers.c:85
#67 0x033e0f6e in g_type_class_meta_marshal (closure=0x81500e8, return_value=0xbfffd690, n_param_values=2, param_values=0xb720a118, 
    invocation_hint=0xbfffd6ac, marshal_data=0xd4) at gclosure.c:877
#68 0x033e0c5d in g_closure_invoke (closure=0x81500e8, return_value=0xbfffd690, n_param_values=2, param_values=0xb720a118, invocation_hint=0xbfffd6ac)
    at gclosure.c:766
#69 0x033f9741 in signal_emit_unlocked_R (node=0x8150080, detail=0, instance=0x8199078, emission_return=0xbfffd7cc, instance_and_params=0xb720a118)
    at gsignal.c:3290
#70 0x033f8957 in g_signal_emit_valist (instance=0x8199078, signal_id=46, detail=0, var_args=0xbfffd8a0 "\270\330\377\277\030\315\024\b\001")
    at gsignal.c:2993
#71 0x033f8bb7 in g_signal_emit (instance=0x8199078, signal_id=46, detail=0) at gsignal.c:3040
#72 0x02a24dae in gtk_widget_event_internal (widget=0x8199078, event=0x9976518) at gtkwidget.c:5814
#73 0x02a24624 in gtk_widget_event (widget=0x8199078, event=0x9976518) at gtkwidget.c:5527
#74 0x028a03e6 in gtk_propagate_event (widget=0x8199078, event=0x9976518) at gtkmain.c:2474
#75 0x0289edb0 in gtk_main_do_event (event=0x9976518) at gtkmain.c:1726
#76 0x00259c75 in _gdk_event_emit (event=0x9976518) at gdkevents.c:70
#77 0x00284b70 in gdk_event_source_dispatch (source=0x8138560, callback=0, user_data=0x0) at gdkeventsource.c:321
#78 0x0347c02b in g_main_dispatch (context=0x8137400) at gmain.c:2440
#79 0x0347d38f in g_main_context_dispatch (context=0x8137400) at gmain.c:3013
#80 0x0347d7e4 in g_main_context_iterate (context=0x8137400, block=1, dispatch=1, self=0x8112898) at gmain.c:3091
#81 0x0347df4d in g_main_loop_run (loop=0x8197968) at gmain.c:3299
#82 0x0289e407 in gtk_main () at gtkmain.c:1295
#83 0x0806cee6 in main (argc=1, argv=0xbfffeca4) at ../../src/ephy-main.c:747
(gdb)
Comment 1 Sergio Villar Senin 2011-01-26 04:19:56 PST
After investigating this a bit and discussing it with Yury as well, it seems that the ASSERT is triggered because we reuse the frontend page. The inspector controller does not intentionally allow to set a client more than once because the code assumes that the inspector window is closed when no longer used. This means that we should recreate the frontend page, the inspector controller and so on, everytime openInspectorFrontend is called.

The problem is caused because ephypany does not really destroy the inspector window. Instead it hides it and reuses the created instance.

So basically we have 2 options:
   * ensure that the frontend page is destroyed when the inspector is closed
   * change epy code to destroy the inspector window

IMHO the approach of emitting a "close-window" and let the client decide what to do with the windows is incorrect. We must unconditionally close it in InspectorClientGtk as the inspector code assumes that.
Comment 2 Philippe Normand 2011-02-22 05:02:25 PST
http/tests/inspector-enabled/open-close-open.html is a test-case trigerring this crash.

I'll skip it for now.
Comment 3 Martin Robinson 2011-02-22 08:20:16 PST
(In reply to comment #2)
> http/tests/inspector-enabled/open-close-open.html is a test-case trigerring this crash.
> 
> I'll skip it for now.

Looks like the stack for this one is very similar.

0  0x00007fd9f00166a5 in WebKit::InspectorFrontendClient::~InspectorFrontendClient (this=0x3db4050, __in_chrg=<value optimized out>) at ../../Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:211
#1  0x00007fd9f0016daf in WTF::deleteOwnedPtr<WebCore::InspectorFrontendClient> (ptr=0x3db4050) at ../../Source/JavaScriptCore/wtf/OwnPtrCommon.h:59
#2  0x00007fd9f055c843 in WTF::OwnPtr<WebCore::InspectorFrontendClient>::~OwnPtr (this=0x3a34a20, __in_chrg=<value optimized out>) at ../../Source/JavaScriptCore/wtf/OwnPtr.h:57
#3  0x00007fd9f055bf56 in WebCore::InspectorController::~InspectorController (this=0x3a34a10, __in_chrg=<value optimized out>) at ../../Source/WebCore/inspector/InspectorController.cpp:62
#4  0x00007fd9f06ecb59 in WTF::deleteOwnedPtr<WebCore::InspectorController> (ptr=0x3a34a10) at ../../Source/JavaScriptCore/wtf/OwnPtrCommon.h:59
#5  0x00007fd9f06ebdd1 in WTF::OwnPtr<WebCore::InspectorController>::~OwnPtr (this=0x375b088, __in_chrg=<value optimized out>) at ../../Source/JavaScriptCore/wtf/OwnPtr.h:57
#6  0x00007fd9f06e861a in WebCore::Page::~Page (this=0x375b060, __in_chrg=<value optimized out>) at ../../Source/WebCore/page/Page.cpp:208
#7  0x00007fd9f0033ba7 in webkit_web_view_dispose (object=0xae6490) at ../../Source/WebKit/gtk/webkit/webkitwebview.cpp:1396
#8  0x00007fd9eda9ec90 in g_object_run_dispose (object=0xae6490) at /tmp/buildd/glib2.0-2.27.91/./gobject/gobject.c:941
#9  0x00007fd9ef096639 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#10 0x00007fd9eda9c33e in g_closure_invoke (closure=0xa87a00, return_value=0x0, n_param_values=1, param_values=0x2cc3b40, invocation_hint=0x7fff17643200) at /tmp/buildd/glib2.0-2.27.91/./gobject/gclosure.c:767
#11 0x00007fd9edab522b in signal_emit_unlocked_R (node=0xa88070, detail=<value optimized out>, instance=<value optimized out>, emission_return=<value optimized out>, instance_and_params=<value optimized out>) at /tmp/buildd/glib2.0-2.27.91/./gobject/gsignal.c:3368
#12 0x00007fd9edab6b36 in g_signal_emit_valist (instance=0x2d11280, signal_id=<value optimized out>, detail=0, var_args=0x7fff176433f0) at /tmp/buildd/glib2.0-2.27.91/./gobject/gsignal.c:2983
#13 0x00007fd9edab7363 in g_signal_emit (instance=0x7fff17642670, signal_id=0, detail=3959758336) at /tmp/buildd/glib2.0-2.27.91/./gobject/gsignal.c:3040
#14 0x00007fd9ef13f540 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#15 0x00007fd9eda9ec90 in g_object_run_dispose (object=0x2d11280) at /tmp/buildd/glib2.0-2.27.91/./gobject/gobject.c:941
#16 0x000000000041ed0e in webInspectorCloseWindow (data=0x0) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:968
#17 0x00007fd9f004687e in webkit_marshal_BOOLEAN__VOID (closure=0xb74630, return_value=0x7fff17643700, n_param_values=1, param_values=0x7fd9902762e0, invocation_hint=0x7fff176436c0, marshal_data=0x0) at DerivedSources/webkit/webkitmarshal.cpp:642
#18 0x00007fd9eda9c33e in g_closure_invoke (closure=0xb74630, return_value=0x7fff17643700, n_param_values=1, param_values=0x7fd9902762e0, invocation_hint=0x7fff176436c0) at /tmp/buildd/glib2.0-2.27.91/./gobject/gclosure.c:767
#19 0x00007fd9edab53b9 in signal_emit_unlocked_R (node=0xae8d20, detail=<value optimized out>, instance=<value optimized out>, emission_return=<value optimized out>, instance_and_params=<value optimized out>) at /tmp/buildd/glib2.0-2.27.91/./gobject/gsignal.c:3252
#20 0x00007fd9edab697c in g_signal_emit_valist (instance=0xad8d40, signal_id=<value optimized out>, detail=0, var_args=0x7fff176438e0) at /tmp/buildd/glib2.0-2.27.91/./gobject/gsignal.c:2993
#21 0x00007fd9edab6e32 in g_signal_emit_by_name (instance=0xad8d40, detailed_signal=<value optimized out>) at /tmp/buildd/glib2.0-2.27.91/./gobject/gsignal.c:3077
#22 0x00007fd9f00167b6 in WebKit::InspectorFrontendClient::destroyInspectorWindow (this=0x30a94d0, notifyInspectorController=false) at ../../Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:231
#23 0x00007fd9f00169d1 in WebKit::InspectorFrontendClient::disconnectFromBackend (this=0x30a94d0) at ../../Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:272
#24 0x00007fd9f059575c in WebCore::InspectorFrontendHost::disconnectFromBackend (this=0x31b87e0) at ../../Source/WebCore/inspector/InspectorFrontendHost.cpp:173
#25 0x00007fd9f0c7b43c in WebCore::jsInspectorFrontendHostPrototypeFunctionDisconnectFromBackend (exec=0x7fd9e2c63140) at DerivedSources/WebCore/JSInspectorFrontendHost.cpp:224
#26 0x00007fd99c0001b8 in ?? ()
#27 0x00007fff17643b80 in ?? ()
#28 0x00007fd99c0f7421 in ?? ()
#29 0x00007fff17643b00 in ?? ()
#30 0x00007fd9e44ca2b8 in ?? ()
#31 0x00000000042b6da8 in ?? ()
#32 0x00007fd9e44c6db8 in ?? ()
#33 0x00007fff17643b30 in ?? ()
#34 0x00007fd9f0141063 in JSC::Register::Register (this=0x7fd9ed47c170) at ../../Source/JavaScriptCore/interpreter/Register.h:106
#35 0x00007fd9f0e86cff in JSC::JITCode::execute (this=0x3026d18, registerFile=0x111a418, callFrame=0x7fd9e2c63038, globalData=0x1115be0) at ../../Source/JavaScriptCore/jit/JITCode.h:77
#36 0x00007fd9f0e83d90 in JSC::Interpreter::executeCall (this=0x111a400, callFrame=0x3d50778, function=0x7fd9e474ce78, callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...) at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:851
#37 0x00007fd9f0f103ac in JSC::call (exec=0x3d50778, functionObject=..., callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...) at ../../Source/JavaScriptCore/runtime/CallData.cpp:38
#38 0x00007fd9f011f203 in WebCore::JSMainThreadExecState::call (exec=0x3d50778, functionObject=..., callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...) at ../../Source/WebCore/bindings/js/JSMainThreadExecState.h:48
#39 0x00007fd9f0183d2a in WebCore::ScheduledAction::executeFunctionInContext (this=0x32f3e30, globalObject=0x7fd9e44c6db8, thisValue=..., context=0x3e3d178) at ../../Source/WebCore/bindings/js/ScheduledAction.cpp:106
#40 0x00007fd9f0183f1c in WebCore::ScheduledAction::execute (this=0x32f3e30, document=0x3e3d110) at ../../Source/WebCore/bindings/js/ScheduledAction.cpp:128
#41 0x00007fd9f0183ae6 in WebCore::ScheduledAction::execute (this=0x32f3e30, context=0x3e3d178) at ../../Source/WebCore/bindings/js/ScheduledAction.cpp:76
#42 0x00007fd9f069ba99 in WebCore::DOMTimer::fired (this=0x3db4160) at ../../Source/WebCore/page/DOMTimer.cpp:130
#43 0x00007fd9f07c3580 in WebCore::ThreadTimers::sharedTimerFiredInternal (this=0xb201b0) at ../../Source/WebCore/platform/ThreadTimers.cpp:112
#44 0x00007fd9f07c34b7 in WebCore::ThreadTimers::sharedTimerFired () at ../../Source/WebCore/platform/ThreadTimers.cpp:90
#45 0x00007fd9effbac1e in WebCore::timeout_cb () at ../../Source/WebCore/platform/gtk/SharedTimerGtk.cpp:49
#46 0x00007fd9ed1dbdbb in g_timeout_dispatch (source=0x3b34090, callback=0, user_data=0x7fd9ec051e00) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3877
#47 0x00007fd9ed1db362 in g_main_dispatch (context=0xffff000000000002) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:2440
#48 g_main_context_dispatch (context=0xffff000000000002) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3013
#49 0x00007fd9ed1dfa28 in g_main_context_iterate (context=0xa7b1e0, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3091
#50 0x00007fd9ed1dff35 in g_main_loop_run (loop=0x7fd99016acd0) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3299
#51 0x00007fd9ef114657 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#52 0x000000000041df63 in runTest (testPathOrURL=...) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:667
#53 0x000000000041d633 in runTestingServerLoop () at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:481
#54 0x000000000041f6da in main (argc=2, argv=0x7fff17644cf8) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:1131
Comment 4 Gustavo Noronha (kov) 2012-02-06 01:49:28 PST
Created attachment 125598 [details]
Patch
Comment 5 Gustavo Noronha (kov) 2012-02-06 01:52:30 PST
This fixes the issue of destroying a webview while requiring no changes to Epiphany =)
Comment 6 Gustavo Noronha (kov) 2012-02-06 02:33:53 PST
(In reply to comment #1)
> IMHO the approach of emitting a "close-window" and let the client decide what to do with the windows is incorrect. We must unconditionally close it in InspectorClientGtk as the inspector code assumes that.

You're right about this, I believe, FWIW - let's keep it in mind for our WebKit2 API. That said, we do have to notify the client, because we can't be sure destroying the toplevel the inspector webview has been added to is right. Not destroying and recreating the webview does cause problems, but it's not the particular problem this bug is about. I have an ephy patch that I'll submit later today, but it's not necessary to fix the insta crash when closing a tab that is being inspected; for that (and for the ASSERT) the patch I just submitted is enough.
Comment 7 Martin Robinson 2012-02-06 09:06:02 PST
Comment on attachment 125598 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=125598&action=review

Great stuff! Just have a few minor nits below.

> Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:236
> +    GRefPtr<WebKitWebInspector> webInspector = adoptGRef(m_webInspector.leakRef());

I think eventually we should do away with GRefPtr. RefPtr/PassRefPtr have so many good features. For instance this would just be:

RefPtr<WebKitWebInspector> webInspector = m_webInspector.release();

> Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:239
> +        g_signal_handlers_disconnect_by_func(m_inspectorWebView, (gpointer)notifyWebViewDestroyed, (gpointer)this);

You shouldn't have to cast to gpointer here, I don't think. If it complains about notifyWebViewDestroyed, you should use reinterpret_cast.

> Source/WebKit/gtk/tests/testwebinspector.c:27
> +#include "test_utils.h"
> +
> +#include <errno.h>
> +#include <unistd.h>
> +#include <string.h>
> +

You have a few extra newlines here.

> Source/WebKit/gtk/tests/testwebinspector.c:68
> +                                             gpointer data)
> +{
> +    int *beenThere = (int*)data;

Since you are already casting these functions, I think you can just use an int* in the signature. For instance:

static WebKitWebView* inspectElementCallback(WebKitWebInspector *inspector, WebKitWebView *inspectedWebView, int *timesElementInspected)

The signature should all be one line too.

> Source/WebKit/gtk/tests/testwebinspector.c:87
> +static gboolean closeInspector (WebKitWebInspector *inspector,
> +                                gpointer data)

Ditto.

> Source/WebKit/gtk/tests/testwebinspector.c:110
> +    int beenThere = 0;
> +    int closed = 0;

I'd suggest timesClosed and timesElementInspected or something like that.

> Source/WebKit/gtk/tests/testwebinspector.c:174
> +    g_test_add_func("/webkit/webinspector/destroy-inspected-web-view", test_webkit_web_inspector_destroy_inspected_web_view);
> +    g_test_add_func("/webkit/webinspector/close_and_inspect", test_webkit_web_inspector_close_and_inspect);

Perhaps the second test should be called close-and-inspect to match the naming style of the other tests?
Comment 8 Gustavo Noronha (kov) 2012-02-06 09:53:58 PST
(In reply to comment #7)
> Great stuff! Just have a few minor nits below.

\o/
 
> > Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:236
> > +    GRefPtr<WebKitWebInspector> webInspector = adoptGRef(m_webInspector.leakRef());
> 
> I think eventually we should do away with GRefPtr. RefPtr/PassRefPtr have so many good features. For instance this would just be:

Agree, I thought this was impossible, though? I don't remember any details, though, so maybe it was just a nightmare.

> > Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:239
> > +        g_signal_handlers_disconnect_by_func(m_inspectorWebView, (gpointer)notifyWebViewDestroyed, (gpointer)this);
> 
> You shouldn't have to cast to gpointer here, I don't think. If it complains about notifyWebViewDestroyed, you should use reinterpret_cast.

Oops, yeah, I just moved this, should have fixed it. I'll land in a few, after incorporating your suggestions, thanks for the review! =)
Comment 9 Gustavo Noronha (kov) 2012-02-06 12:13:01 PST
Committed r106831: <http://trac.webkit.org/changeset/106831>
Comment 10 Philippe Normand 2012-02-06 14:31:33 PST
(In reply to comment #9)
> Committed r106831: <http://trac.webkit.org/changeset/106831>

This patch broke the API tests it seems:

TEST: ./WebKitBuild/Release/Programs/unittests/testwebinspector... (pid=25250)

** WARNING **: Console: undefined @0: ReferenceError: Can't find variable: WebInspector
Comment 11 Philippe Normand 2012-02-06 14:32:32 PST
(In reply to comment #10)
> (In reply to comment #9)
> > Committed r106831: <http://trac.webkit.org/changeset/106831>
> 
> This patch broke the API tests it seems:
> 
> TEST: ./WebKitBuild/Release/Programs/unittests/testwebinspector... (pid=25250)
> 
> ** WARNING **: Console: undefined @0: ReferenceError: Can't find variable: WebInspector

http://webkit-bots.igalia.com/amd64debug/svn_106832.core-when_1328562083-_-who_testwebinspecto-_-why_5.trace.html
Comment 12 Gustavo Noronha (kov) 2012-02-06 14:52:17 PST
(In reply to comment #10)
> This patch broke the API tests it seems:
> 
> TEST: ./WebKitBuild/Release/Programs/unittests/testwebinspector... (pid=25250)
> 
> ** WARNING **: Console: undefined @0: ReferenceError: Can't find variable: WebInspector

That's because it needs the inspector files and we do not install them, which should have been obvious from the onset, but the fact that I do install my webkit builds made me miss it =(. I landed a fix http://trac.webkit.org/changeset/106851 but it looks like that didn't work in the 64 bits release bot, I'm waiting for any of the other two bots to cycle or for someone who can log in to the 64 bits release bot to help me debug, if I can't make it work I'll skip.
Comment 13 Gustavo Noronha (kov) 2012-02-06 14:54:39 PST
(In reply to comment #11)
> http://webkit-bots.igalia.com/amd64debug/svn_106832.core-when_1328562083-_-who_testwebinspecto-_-why_5.trace.html

an strace would rock =)
Comment 14 Alexandre Rostovtsev 2012-02-25 23:05:17 PST
Created attachment 128906 [details]
testwebinspector backtrace

(In reply to comment #10)
> (In reply to comment #9)
> > Committed r106831: <http://trac.webkit.org/changeset/106831>
> 
> This patch broke the API tests it seems:
> 
> TEST: ./WebKitBuild/Release/Programs/unittests/testwebinspector... (pid=25250)
> 
> ** WARNING **: Console: undefined @0: ReferenceError: Can't find variable: WebInspector

I am seeing this failure when building webkit-gtk-1.7.90 for gtk2 from the tarball release. Gdb backtrace is attached (webkit-gtk was built without debug symbols since linking a debug version is beyond my machine's capabilities).
Comment 15 Martin Robinson 2012-02-26 10:05:21 PST
(In reply to comment #14)
> I am seeing this failure when building webkit-gtk-1.7.90 for gtk2 from the tarball release. Gdb backtrace is attached (webkit-gtk was built without debug symbols since linking a debug version is beyond my machine's capabilities).

Do you mind attaching the output from strace?
Comment 16 Alexandre Rostovtsev 2012-02-26 12:25:34 PST
Created attachment 128925 [details]
strace output

(In reply to comment #15)
> (In reply to comment #14)
> > I am seeing this failure when building webkit-gtk-1.7.90 for gtk2 from the tarball release. Gdb backtrace is attached (webkit-gtk was built without debug symbols since linking a debug version is beyond my machine's capabilities).
> 
> Do you mind attaching the output from strace?

The crash apparently does not occur when Programs/unittests/testwebinspector is run under strace (note that the crash occurs 100% of the time when not running under strace).

I have attached the strace output anyway in case it will be useful.
Comment 17 Philippe Normand 2012-02-28 00:20:56 PST
The crash often happens on the 64-bit debug bot and 32-bit Release too. Here's a trace:

http://webkit-bots.igalia.com/amd64debug/svn_109083.core-when_1330416644-_-who_testwebinspecto-_-why_5.trace.html

Thread 1 (Thread 0x7f5d42c15900 (LWP 1695)):
#0  0x00007f5d4a5f998d in g_logv () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#1  0x00007f5d4a5f9aaa in g_log () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#2  0x000000000040174d in consoleMessageCallback (webView=0x13383a0, message=0x1539b90 "ReferenceError: Can't find variable: WebInspector", line=0, sourceId=0x1448ba0 "undefined") at ../../Source/WebKit/gtk/tests/testwebinspector.c:46
#3  0x00007f5d4cc9c08e in webkit_marshal_BOOLEAN__STRING_INT_STRING (closure=0x13e5cc0, return_value=0x7fff42e86a50, n_param_values=4, param_values=0x7f5cfc06b9e0, invocation_hint=0x7fff42e86a80, marshal_data=0x0) at DerivedSources/webkit/webkitmarshal.cpp:562
#4  0x00007f5d4a8fbfff in g_closure_invoke () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#5  0x00007f5d4a91595d in signal_emit_unlocked_R () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#6  0x00007f5d4a914b6a in g_signal_emit_valist () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#7  0x00007f5d4a9151e8 in g_signal_emit_by_name () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libgobject-2.0.so.0
#8  0x00007f5d4cc3f7bc in WebKit::ChromeClient::addMessageToConsole (this=0x13d6b20, source=WebCore::JSMessageSource, type=WebCore::LogMessageType, level=WebCore::ErrorMessageLevel, message="ReferenceError: Can't find variable: WebInspector", lineNumber=0, sourceId="undefined") at ../../Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:329
#9  0x00007f5d4d4c3be2 in WebCore::Console::addMessage (this=0x1526000, source=WebCore::JSMessageSource, type=WebCore::LogMessageType, level=WebCore::ErrorMessageLevel, message="ReferenceError: Can't find variable: WebInspector", sourceURL="undefined", lineNumber=0, callStack=...) at ../../Source/WebCore/page/Console.cpp:144
#10 0x00007f5d4d049120 in WebCore::Document::addMessage (this=0x1430b90, source=WebCore::JSMessageSource, type=WebCore::LogMessageType, level=WebCore::ErrorMessageLevel, message="ReferenceError: Can't find variable: WebInspector", sourceURL="undefined", lineNumber=0, callStack=...) at ../../Source/WebCore/dom/Document.cpp:4898
#11 0x00007f5d4d0f83a5 in WebCore::ScriptExecutionContext::addConsoleMessage (this=0x1430d38, source=WebCore::JSMessageSource, type=WebCore::LogMessageType, level=WebCore::ErrorMessageLevel, message="ReferenceError: Can't find variable: WebInspector", sourceURL="undefined", lineNumber=0, callStack=...) at ../../Source/WebCore/dom/ScriptExecutionContext.cpp:352
#12 0x00007f5d4d03f708 in WebCore::Document::logExceptionToConsole (this=0x1430b90, errorMessage="ReferenceError: Can't find variable: WebInspector", sourceURL="undefined", lineNumber=0, callStack=...) at ../../Source/WebCore/dom/Document.cpp:2476
#13 0x00007f5d4d0f8221 in WebCore::ScriptExecutionContext::reportException (this=0x1430d38, errorMessage="ReferenceError: Can't find variable: WebInspector", lineNumber=0, sourceURL="undefined", callStack=...) at ../../Source/WebCore/dom/ScriptExecutionContext.cpp:338
#14 0x00007f5d4cddd931 in WebCore::reportException (exec=0x7f5d00f5f7e8, exception=...) at ../../Source/WebCore/bindings/js/JSDOMBinding.cpp:171
#15 0x00007f5d4ce57b13 in WebCore::ScriptController::evaluateInWorld (this=0x13dd0a0, sourceCode=..., world=0x7f5cfc01c670) at ../../Source/WebCore/bindings/js/ScriptController.cpp:151
#16 0x00007f5d4ce57bca in WebCore::ScriptController::evaluate (this=0x13dd0a0, sourceCode=...) at ../../Source/WebCore/bindings/js/ScriptController.cpp:162
#17 0x00007f5d4d33120a in WebCore::InspectorClient::doDispatchMessageOnFrontendPage (this=0x13400b0, frontendPage=0x13d82c0, message="{\"method\":\"Profiler.resetProfiles\"}") at ../../Source/WebCore/inspector/InspectorClient.cpp:62
#18 0x00007f5d4cc675a3 in WebKit::InspectorClient::sendMessageToFrontend (this=0x13400b0, message="{\"method\":\"Profiler.resetProfiles\"}") at ../../Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:155
#19 0x00007f5d4db4da17 in WebCore::InspectorFrontend::Profiler::resetProfiles (this=0x13e5af8) at DerivedSources/WebCore/InspectorFrontend.cpp:776
#20 0x00007f5d4d39ea9c in WebCore::InspectorProfilerAgent::resetFrontendProfiles (this=0x1376090) at ../../Source/WebCore/inspector/InspectorProfilerAgent.cpp:276
#21 0x00007f5d4d39e903 in WebCore::InspectorProfilerAgent::resetState (this=0x1376090) at ../../Source/WebCore/inspector/InspectorProfilerAgent.cpp:267
#22 0x00007f5d4d386377 in WebCore::InspectorInstrumentation::didCommitLoadImpl (instrumentingAgents=0x1373990, page=0x1373600, loader=0x13ccf00) at ../../Source/WebCore/inspector/InspectorInstrumentation.cpp:741
#23 0x00007f5d4d32c6ae in WebCore::InspectorInstrumentation::didCommitLoad (frame=0x1329c00, loader=0x13ccf00) at ../../Source/WebCore/inspector/InspectorInstrumentation.h:1060
#24 0x00007f5d4d4475b8 in WebCore::FrameLoader::dispatchDidCommitLoad (this=0x1329cb8) at ../../Source/WebCore/loader/FrameLoader.cpp:3277
#25 0x00007f5d4d43b212 in WebCore::FrameLoader::receivedFirstData (this=0x1329cb8) at ../../Source/WebCore/loader/FrameLoader.cpp:585
#26 0x00007f5d4d43cb4a in WebCore::FrameLoader::willSetEncoding (this=0x1329cb8) at ../../Source/WebCore/loader/FrameLoader.cpp:986
#27 0x00007f5d4d436874 in WebCore::DocumentWriter::setEncoding (this=0x13cd020, name="UTF-8", userChosen=false) at ../../Source/WebCore/loader/DocumentWriter.cpp:239
#28 0x00007f5d4d42a3ca in WebCore::DocumentLoader::commitData (this=0x13ccf00, bytes=0x13b6e90 "<html><body><p>woohoo</p></body></html>", length=39) at ../../Source/WebCore/loader/DocumentLoader.cpp:325
#29 0x00007f5d4cc57f4a in WebKit::FrameLoaderClient::committedLoad (this=0x137c740, loader=0x13ccf00, data=0x13b6e90 "<html><body><p>woohoo</p></body></html>", length=39) at ../../Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:168
#30 0x00007f5d4d42a315 in WebCore::DocumentLoader::commitLoad (this=0x13ccf00, data=0x13b6e90 "<html><body><p>woohoo</p></body></html>", length=39) at ../../Source/WebCore/loader/DocumentLoader.cpp:313
#31 0x00007f5d4d42a4fc in WebCore::DocumentLoader::receivedData (this=0x13ccf00, data=0x13b6e90 "<html><body><p>woohoo</p></body></html>", length=39) at ../../Source/WebCore/loader/DocumentLoader.cpp:339
#32 0x00007f5d4d4770b3 in WebCore::MainResourceLoader::addData (this=0x13d0f00, data=0x13b6e90 "<html><body><p>woohoo</p></body></html>", length=39, allAtOnce=true) at ../../Source/WebCore/loader/MainResourceLoader.cpp:170
#33 0x00007f5d4d484903 in WebCore::ResourceLoader::didReceiveData (this=0x13d0f00, data=0x13b6e90 "<html><body><p>woohoo</p></body></html>", length=39, encodedDataLength=39, allAtOnce=true) at ../../Source/WebCore/loader/ResourceLoader.cpp:287
#34 0x00007f5d4d47857c in WebCore::MainResourceLoader::didReceiveData (this=0x13d0f00, data=0x13b6e90 "<html><body><p>woohoo</p></body></html>", length=39, encodedDataLength=39, allAtOnce=true) at ../../Source/WebCore/loader/MainResourceLoader.cpp:464
#35 0x00007f5d4d477b5a in WebCore::MainResourceLoader::continueAfterContentPolicy (this=0x13d0f00, contentPolicy=WebCore::PolicyUse, r=...) at ../../Source/WebCore/loader/MainResourceLoader.cpp:320
#36 0x00007f5d4d477d96 in WebCore::MainResourceLoader::continueAfterContentPolicy (this=0x13d0f00, policy=WebCore::PolicyUse) at ../../Source/WebCore/loader/MainResourceLoader.cpp:338
#37 0x00007f5d4d477cd0 in WebCore::MainResourceLoader::callContinueAfterContentPolicy (argument=0x13d0f00, policy=WebCore::PolicyUse) at ../../Source/WebCore/loader/MainResourceLoader.cpp:330
#38 0x00007f5d4d4782c7 in WebCore::MainResourceLoader::didReceiveResponse (this=0x13d0f00, r=...) at ../../Source/WebCore/loader/MainResourceLoader.cpp:418
#39 0x00007f5d4d478b48 in WebCore::MainResourceLoader::handleDataLoadNow (this=0x13d0f00) at ../../Source/WebCore/loader/MainResourceLoader.cpp:529
#40 0x00007f5d4d479b76 in WebCore::Timer<WebCore::MainResourceLoader>::fired (this=0x13d1510) at ../../Source/WebCore/platform/Timer.h:100
#41 0x00007f5d4d6549a8 in WebCore::ThreadTimers::sharedTimerFiredInternal (this=0x13b5870) at ../../Source/WebCore/platform/ThreadTimers.cpp:115
#42 0x00007f5d4d6548df in WebCore::ThreadTimers::sharedTimerFired () at ../../Source/WebCore/platform/ThreadTimers.cpp:93
#43 0x00007f5d4dfc0e2e in WebCore::timeout_cb () at ../../Source/WebCore/platform/gtk/SharedTimerGtk.cpp:49
#44 0x00007f5d4a5f1bbb in g_timeout_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#45 0x00007f5d4a5efdf3 in g_main_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#46 0x00007f5d4a5f0ab9 in g_main_context_dispatch () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#47 0x00007f5d4a5f0ca3 in g_main_context_iterate () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#48 0x00007f5d4a5f10d9 in g_main_loop_run () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#49 0x0000000000401cc0 in test_webkit_web_inspector_destroy_inspected_web_view () at ../../Source/WebKit/gtk/tests/testwebinspector.c:145
#50 0x00007f5d4a619234 in test_case_run () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#51 0x00007f5d4a619513 in g_test_run_suite_internal () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#52 0x00007f5d4a6195d5 in g_test_run_suite_internal () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#53 0x00007f5d4a6195d5 in g_test_run_suite_internal () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#54 0x00007f5d4a619737 in g_test_run_suite () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#55 0x00007f5d4a618992 in g_test_run () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Dependencies/Root/lib64/libglib-2.0.so.0
#56 0x0000000000401dea in main (argc=1, argv=0x7fff42e886b8) at ../../Source/WebKit/gtk/tests/testwebinspector.c:167
Comment 18 Martin Robinson 2012-02-28 13:35:41 PST
Just to be clear, this is not a crash, right? From what I see it's test failure due to a problem loading inspector resources, that results in a JavaScript error on the console.
Comment 19 Philippe Normand 2012-03-01 05:44:36 PST
(In reply to comment #18)
> Just to be clear, this is not a crash, right? From what I see it's test failure due to a problem loading inspector resources, that results in a JavaScript error on the console.

Yes.
Comment 20 Sergio Villar Senin 2012-03-01 06:00:11 PST
(In reply to comment #18)
> Just to be clear, this is not a crash, right? From what I see it's test failure due to a problem loading inspector resources, that results in a JavaScript error on the console.

I'm still getting a crash when closing epy with the inspector window opened
Comment 21 Martin Robinson 2012-03-04 20:23:33 PST
I created a bug for this issue: https://bugs.webkit.org/show_bug.cgi?id=80235
Comment 22 Gustavo Noronha (kov) 2012-03-11 16:15:52 PDT
(In reply to comment #20)
> I'm still getting a crash when closing epy with the inspector window opened

That's sad. Can you get a trace and open a new bug?