http://bugs.winehq.org/show_bug.cgi?id=36854
--- Comment #13 from Ken Thomases ken@codeweavers.com --- That tight loop looks like something I've encountered before with the Mac driver. I fixed it with http://source.winehq.org/git/wine.git/?a=commit;h=ae2ce18fd669efb797e11ef0e614be309e83fd3f.
The program is basically trying to build an internal model of the keyboard layout. It runs every vkey through ToUnicodeEx(). For keys whose first press produces a dead key, it tries every possible sequence of subsequent keys to see how the dead key modifies those keys. It relies on every sequence eventually clearing the dead state to terminate the search. Some keyboard layouts on the Mac, and apparently X11, can perpetuate the dead key state indefinitely. So, the search loops infinitely.
My fix was to detect the dead key state being perpetuated and to manually clear it. It's not clear to me if the X11 APIs allow direct access to the dead key state to compare it like I do in the Mac driver.