[Spice-devel] [PATCH spice] spicec-x11: Fix unhandled exception: no window proc crash (rhbz#655836)
Alon Levy
alevy at redhat.com
Tue Nov 23 08:48:34 PST 2010
On Tue, Nov 23, 2010 at 03:39:12PM +0100, Hans de Goede wrote:
> When XIM + ibus is in use XIM creates an invisible window for its own
> purposes, we sometimes get a _GTK_LOAD_ICONTHEMES ClientMessage event on
> this window. Since this window was not explicitly created by spicec, it
> does not have a Window Context (with the event handling function for the
> window in question) set. This would cause spicec to throw an unhandled
> exception and exit.
>
> This patch replaces the exception throwing with silently ignoring
> ClientMessage events on Windows without a Context and logging a warning
> for other event types.
> ---
> client/x11/platform.cpp | 10 +++++++++-
> 1 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/client/x11/platform.cpp b/client/x11/platform.cpp
> index 2009817..334a74f 100644
> --- a/client/x11/platform.cpp
> +++ b/client/x11/platform.cpp
> @@ -295,7 +295,15 @@ void XEventHandler::on_event()
> }
>
> if (XFindContext(&_x_display, event.xany.window, _win_proc_context, &proc_pointer)) {
> - THROW("no window proc");
> + /* When XIM + ibus is in use XIM creates an invisible window for
> + its own purposes, we sometimes get a _GTK_LOAD_ICONTHEMES
> + ClientMessage event on this window -> skip logging. */
> + if (event.type != ClientMessage) {
> + LOG_WARN(
> + "Event on window without a win proc, type: %d, window: %u",
> + event.type, (unsigned int)event.xany.window);
> + }
> + continue;
> }
> XUnlockDisplay(x_display);
> ((XPlatform::win_proc_t)proc_pointer)(event);
> --
> 1.7.3.2
ACK (this time to list)
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list