[PATCH] text: Respawn input method process if it exits

Michael Hasselmann michaelh at openismus.com
Tue May 14 08:47:44 PDT 2013


On Tue, 2013-05-14 at 12:16 -0300, Eduardo Lima (Etrunko) wrote:
> +static void launch_input_method(struct text_backend *text_backend);
> +
>  static void
>  handle_input_method_sigchld(struct weston_process *process, int status)
>  {
> +	uint32_t time;
>  	struct text_backend *text_backend =
>  		container_of(process, struct text_backend, input_method.process);
>  
>  	text_backend->input_method.process.pid = 0;
>  	text_backend->input_method.client = NULL;
> +
> +	/* if input_method dies more than 5 times in 10 seconds, give up */
> +	time = weston_compositor_get_time();
> +	if (time - text_backend->input_method.deathstamp > 10000) {
> +		text_backend->input_method.deathstamp = time;
> +		text_backend->input_method.deathcount = 0;
> +	}
> +
> +	text_backend->input_method.deathcount++;
> +	if (text_backend->input_method.deathcount > 5) {
> +		weston_log("weston-desktop-shell died, giving up.\n");

Wrong log message, should be "input_method died, giving up.\n"

> +		return;
> +	}
> +
> +	weston_log("input_method died, respawning...\n");
> +	launch_input_method(text_backend);

I am not smart enough to figure out whether this could be abused to
launch a (possibly untrusted) 3rd party input method at runtime, say by
manipulating some cached config and then triggering a crash in the input
method.

ciao Michael



More information about the wayland-devel mailing list