View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000713||OpenMPT||User Interface||public||2015-09-30 11:03||2018-10-20 16:53|
|Platform||x86 / x64||OS||Wine||OS Version||(version plz)|
|Product Version||OpenMPT 1.25.02.* (old testing)|
|Target Version||OpenMPT 1.?? (long term goals)|
|Summary||0000713: KeyboardHook can ultimately invoke a message loop which can cause re-entry to the hook function|
Wine will loop re-entering the keyboard hook and re-process the hotkey, ultimately resulting in resource exhaustion and hang or crash, when the hotkey results in displaying a modal dialog window.
|Steps To Reproduce|
On Wine, invoke a keyboard hotkey that results in a modal dialog window being created (simple example: Ctrl-F in the pattern editor).
Keyboard hooks are processed right before a keyboard-related message is about to be delivered. When the handling in the hook function ultimately can invoke its own message loop, the same message is again in the state of being about to be delivered.
|Tags||No tags attached.|
|Has the bug occurred in previous versions?||yes|
|Tested code revision (in case you know it)|
A work-around for Wine has been applied in r5636. It just guards against re-entry of the keyboard hook function.
In general, I think in the long run, OpenMPT should move to explicit per Windows global keyboard handling instead of installing an actual global handler. That would also be way more portable to other GUI environments, thus the related issue 0000783.
Invoking a File Dialog on Wine (Linux, OSX behaviour is unknown) using a keyboard hotkey does not allow editing the filename edit control. This is caused by this very issue (verified by hacking-in async invocation of the keyboard hook input handler (which fixes the issue)).
Originally reported by hicoleri on IRC.
This also breaks assigning keyboard shortcuts in Wine when the settings window was itself invoked via a hotkey itself.
|2015-09-30 11:03||manx||New Issue|
|2015-09-30 16:39||manx||Note Added: 0002151|
|2016-08-08 17:47||manx||Relationship added||related to 0000857|
|2017-09-22 15:17||manx||Relationship added||related to 0000783|
|2017-09-22 15:19||manx||Note Added: 0003231|
|2017-09-29 16:48||manx||Note Added: 0003271|
|2017-10-02 13:45||manx||Relationship added||related to 0001037|
|2018-10-20 16:53||manx||Note Added: 0003675|