On Sat, Aug 27, 2022 at 01:07:30PM +0200, Walter Alejandro Iglesias wrote:
> X crashes when moving cursor from keyboard bindings. I can reproduce
> the bug with cwm, fvwm or fvwm2 (because this window managers have that
> option). According to the logs the cause could be in wsmouse.
>
> **IT'S NOT EASY TO REPRODUCE IT**. Generally, but not necessarily is
> easier right after X started (when wsmouse is still being loaded), and
> stressing it, changing fast the direction.
>
Hi,
I also cannot reproduce it, however, I've some idea on what could be
happening.
Can you try the patch below ? It adds locking with the input thread of
the X server while adding new devices.
Index: config/wscons.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/config/wscons.c,v
retrieving revision 1.25
diff -u -r1.25 wscons.c
--- config/wscons.c 11 Jun 2019 14:51:34 -0000 1.25
+++ config/wscons.c 29 Aug 2022 18:53:31 -0000
@@ -113,9 +113,12 @@
}
close(fd);
+ input_lock();
input_options = input_option_new(input_options, "_source",
"server/wscons");
- if (input_options == NULL)
+ if (input_options == NULL) {
+ input_unlock();
return;
+ }
LogMessage(X_INFO, "config/wscons: checking input device %s\n",
WSCONS_KBD_DEVICE);
@@ -178,6 +181,7 @@
}
unwind:
input_option_free_list(&input_options);
+ input_unlock();
}
static void
@@ -194,9 +198,12 @@
if (!config_info)
return;
+ input_lock();
input_options = input_option_new(input_options, "_source",
"server/wscons");
- if (input_options == NULL)
+ if (input_options == NULL) {
+ input_unlock();
return;
+ }
input_options = input_option_new(input_options, "name", strdup(path));
input_options = input_option_new(input_options, "driver", strdup(driver));
@@ -213,6 +220,7 @@
}
unwind:
input_option_free_list(&input_options);
+ input_unlock();
}
static void
--
Matthieu Herrb