@jacek sorry I somehow missed your comment on the other MR
I'm not sure I like the patch as is...
- I wonder if kernelbase.CtrlRoutine should only be called for CUI programs... MSDN doc is as usual imprecise (it speaks about all descendants, and all descendants attached to the same console)
- quick test show that a GUI process isn't killed by GenerateConsoleCtrlEvent
+ tested parent + console, cp_flags=0 and pgid = parent's pgid
+ tested parent + console, cp_flags=detached + new group, pgid = child.id
=> it doesn't fully anwser whether CtrlRoutine is called or not for GUI
- it assumes pgid are inherited for gui (but we don't have proper tests AFAICT)
moreover it means that we'd want two different behaviors when receiving SIGINT (whether it's a genuine unix signal or one sent by the server if we follow the tests result above)
perhaps, the solution would be in the default_ctrl_handler to only terminate the program if attached to a console, or in the program group of a unix console
remark: Wine unix console is the sole case where launching a GUI program from command line doesn't return immediately to prompt (native & builtin cmd implementation only wait on CUI programs completion). But that's conform to unix behavior.
note: I'm not even sure tweeking with setsid whould be useful as anyway the unix console is in raw mode, so only conhost regenerates the signals
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3312#note_39749