Motif assumes that you can call functions that lock the display inside XCheckIfEvent as it never calls XInitThreads itself. It also never uses threads.
Please revert the following change to Xlib: commit afcdb6fb0045c6186aa83d9298f327a7ec1b2cb9 Author: Adam Jackson <a...@redhat.com> Date: Tue Mar 22 18:24:29 2022 -0400 global: call XInitThreads() from the library's constructor There is really no point in not being thread safe, I measured, all you can see happen is noop performance gets like twice as slow and you have thread safety bugs. And we're using xcb as the transport which means we should expect threads in our clients anyway. Just do it. This assumes your compiler understands __attribute__((constructor)). If this is not your compiler, you can disable this with the appropriate configure flag, but be aware you're asking for bugs. Signed-off-by: Adam Jackson <a...@redhat.com> as it stops Motif from working (this is easily seen by dragging something onto a Motif program and observing the ensuing hang.)