I'm maintaining a C++ build system running on Windows and consisting of the named components. When we upgraded from Windows XP to Windows 7 some time ago we noticed that builds could be canceled any more, the Eclipse Cancel button just grays but the build always runs to the end. We further found that by using MSYS instead of MSYS2, the build can be canceled also in Windows 7, but the multicore build (e.g. make -j4) hangs right from the start (while working with MSYS2). We need multicore, so that's no solution.
We did some research and came to the conclusion that MSYS2 starts the make process using the WinAPI process creation flag CREATE_NEW_PROCESS_GROUP. We suppose this flag is not executed in Windows XP explaning why caneling works there.
We read that CREATE_NEW_PROCESS_GROUP causes another WinAPI call SetConsoleCtrlHandler(NULL,TRUE) which in turn causes that Ctrl-C gets disabled, the process may only be terminated by Ctrl-Break. We could verify this behavior by testing our build from the command line.
What is the intended solution for this problem? Is it possible to have Eclipse send Ctrl-Break instead of Ctrl-C when pressing Cancel? Or is our MSYS2 misconfigured and it should not suppress Ctrl-C for the build process? Or is our analysis garbage and the problem is something completely different?