bugzilla.mozilla.org has resumed normal operation. Attachments prior to 2014 will be unavailable for a few days. This is tracked in Bug 1475801.
Please report any other irregularities here.

testgtkembed crashes on exit if you close it using a window manager

RESOLVED DUPLICATE of bug 372077

Status

()

Core
Embedding: APIs
--
critical
RESOLVED DUPLICATE of bug 372077
12 years ago
10 years ago

People

(Reporter: timeless, Assigned: timeless)

Tracking

Trunk
x86
Linux
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

629 bytes, patch
Benjamin Smedberg
: review+
Details | Diff | Splinter Review
(Assignee)

Description

12 years ago
we're not 100% certain about the simplicity of this summary, or the general "windowmanager" statement, but...

windowmanager tested: Ion 3
this is gtkembed trunk, x86, gtk2
gcc4.0.4
embedding profile minimal
testgtkembed

this is a stack showing that xpcom is shutting down while nested, which is bad and leads to a crash near the frames marked 62/63

#0  nsEventQueue::GetEvent (this=0x80cc168, mayWait=0, result=0xafd4f2b4) at nsAutoLock.h:250
#1  0xa6f34d39 in nsThread::ProcessNextEvent (this=0x80cc148, mayWait=0, result=0xafd4f2f8) at nsThread.h:109
#2  0xa6efb5b2 in NS_ProcessPendingEvents_P (thread=0x80cc148, timeout=4294967295) at nsThreadUtils.cpp:179
#3  0xa6efdf2c in NS_ShutdownXPCOM_P (servMgr=0x0) at nsXPComInit.cpp:734
#4  0xa69bd472 in XRE_TermEmbedding () at nsEmbedFunctions.cpp:160
#5  0xa69c3475 in EmbedPrivate::PopStartup () at EmbedPrivate.cpp:664
#6  0xa69c35ed in ~EmbedPrivate (this=0x80cb8d8) at EmbedPrivate.cpp:247
#7  0xa69c124a in gtk_moz_embed_destroy (object=0x8083b88) at gtkmozembed2.cpp:449
#8  0xa7952d7b in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#9  0xa7943fc9 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
#10 0xa7945afc in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#11 0xa7956626 in g_signal_chain_from_overridden () from /usr/lib/libgobject-2.0.so.0
#12 0xa7957379 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#13 0xa7957529 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#14 0xa7ca5c7f in gtk_object_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#15 0xa7d7ee93 in gtk_widget_hide_on_delete () from /usr/lib/libgtk-x11-2.0.so.0
#16 0xa7948091 in g_object_run_dispose () from /usr/lib/libgobject-2.0.so.0
#17 0xa7ca5c2e in gtk_object_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#18 0xa7d76d75 in gtk_widget_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#19 0xa7bb74c0 in gtk_box_reorder_child () from /usr/lib/libgtk-x11-2.0.so.0
#20 0xa7bf2dd9 in gtk_container_foreach () from /usr/lib/libgtk-x11-2.0.so.0
#21 0xa7bf4d9e in gtk_container_unset_focus_chain () from /usr/lib/libgtk-x11-2.0.so.0
#22 0xa7952d7b in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#23 0xa7943fc9 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
#24 0xa7945afc in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#25 0xa7956626 in g_signal_chain_from_overridden () from /usr/lib/libgobject-2.0.so.0
#26 0xa7957379 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#27 0xa7957529 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#28 0xa7ca5c7f in gtk_object_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#29 0xa7d7ee93 in gtk_widget_hide_on_delete () from /usr/lib/libgtk-x11-2.0.so.0
#30 0xa7948091 in g_object_run_dispose () from /usr/lib/libgobject-2.0.so.0
#31 0xa7ca5c2e in gtk_object_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#32 0xa7d76d75 in gtk_widget_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#33 0xa7bb3aaf in gtk_bin_get_type () from /usr/lib/libgtk-x11-2.0.so.0
#34 0xa7bf2dd9 in gtk_container_foreach () from /usr/lib/libgtk-x11-2.0.so.0
#35 0xa7bf4d9e in gtk_container_unset_focus_chain () from /usr/lib/libgtk-x11-2.0.so.0
#36 0xa7d8d5f3 in gtk_window_set_transient_for () from /usr/lib/libgtk-x11-2.0.so.0
#37 0xa7952d7b in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#38 0xa7943fc9 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
#39 0xa7945a0b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#40 0xa7956626 in g_signal_chain_from_overridden () from /usr/lib/libgobject-2.0.so.0
#41 0xa7957379 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#42 0xa7957529 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#43 0xa7ca5c7f in gtk_object_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#44 0xa7d7ee93 in gtk_widget_hide_on_delete () from /usr/lib/libgtk-x11-2.0.so.0
#45 0xa7d862c2 in gtk_window_remove_embedded_xid () from /usr/lib/libgtk-x11-2.0.so.0
#46 0xa7948091 in g_object_run_dispose () from /usr/lib/libgobject-2.0.so.0
#47 0xa7ca5c2e in gtk_object_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#48 0xa7d76d75 in gtk_widget_destroy () from /usr/lib/libgtk-x11-2.0.so.0
#49 0x0804b9b9 in delete_cb (widget=0x80cc168, event=0x8151808, browser=0x809f220) at TestGtkEmbed.cpp:711
#50 0xa7c86aa0 in _gtk_marshal_BOOLEAN__BOXED () from /usr/lib/libgtk-x11-2.0.so.0
#51 0xa7945a0b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#52 0xa7955e83 in g_signal_chain_from_overridden () from /usr/lib/libgobject-2.0.so.0
#53 0xa7957158 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#54 0xa7957529 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#55 0xa7d78624 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
#56 0xa7c8545c in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#57 0xa7affbfa in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
#58 0xa78d9e2c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#59 0xa78dd176 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#60 0xa78dd6f7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#61 0xa6ec5b23 in nsAppShell::ProcessNextNativeEvent (this=0x82c5f58, mayWait=135053672) at nsAppShell.cpp:159
>#62 0xa6ed504e in nsBaseAppShell::DoProcessNextNativeEvent (this=0x8086270, mayWait=135053672) at nsBaseAppShell.cpp:144
?#63 0xa6ed51ee in nsBaseAppShell::OnProcessNextEvent (this=0x82c5f58, thr=0x80cc148, mayWait=0, recursionDepth=0) at nsBaseAppShell.cpp:217
#64 0xa6f34d01 in nsThread::ProcessNextEvent (this=0x80cc148, mayWait=0, result=0xafd50b58) at nsThread.cpp:469
#65 0xa6efb5b2 in NS_ProcessPendingEvents_P (thread=0x80cc148, timeout=20) at nsThreadUtils.cpp:179
#66 0xa6ed4fff in nsBaseAppShell::NativeEventCallback (this=0x82c5f58) at nsBaseAppShell.cpp:119
#67 0xa6ec583b in nsAppShell::EventProcessorCallback (source=0x82c6f60, condition=G_IO_IN, data=0x82c5f58) at nsAppShell.cpp:78
#68 0xa79027ef in g_io_channel_unix_get_fd () from /usr/lib/libglib-2.0.so.0
#69 0xa78d9e2c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#70 0xa78dd176 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#71 0xa78dd537 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#72 0xa7c844e1 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#73 0x0804b4ea in main (argc=2, argv=0xafd51de4) at TestGtkEmbed.cpp:265
(Assignee)

Comment 1

12 years ago
Created attachment 228951 [details] [diff] [review]
per bsmedberg

using this with a second patch definitely fixes it. although i'm not sure if the second patch is absolutely necessary.
Attachment #228951 - Flags: review?(benjamin)

Updated

12 years ago
Attachment #228951 - Flags: review?(benjamin) → review+
(Assignee)

Comment 2

11 years ago
i believe someone found a more correct fix
Whiteboard: DUPEME
I believe someone found exactly the same fix.
Status: NEW → RESOLVED
Last Resolved: 10 years ago
Resolution: --- → DUPLICATE
Whiteboard: DUPEME
Duplicate of bug: 372077
You need to log in before you can comment on or make changes to this bug.