On Wed, Jan 16, 2019 at 3:27 PM Venedict Tchistopolskii <veny...@gmail.com> wrote:
> Pressing "STOP" in the CMake GUI interface halts CMake itself but does not > stop any execute_process that is going on at the time. This makes it hang > until the process finishes, since no interrupt is sent...... > > Aggravating when you're using an exterior script (e.g. a .exe or .py) that > e.g. handles package maintenance. Would hang up for the entire duration of > ~40 minutes unless you force kill that sub process. > > I think force-killing CMake GUI also won't forward the kill to the > exec_process, orphaning it.....>.< > > My reproduction: > Windows 10 > CMake script via CMakeLists.txt files > Executing a Python script PyInstalled into a .exe for windows use -> > Downloads and untars some SDK's and shows progress (plus a bit more) but > takes 40-70 minutes average. > > Canceling CMake won't cancel python script -> 70min hangup or requirement > to use task manage and force-kill subprocess. > > Let me know any suggestions or possible fixes > -- > > I commented on this about a month ago: > Looks like this would require a code change how the GUI works and the > internal way execute_process works. Now execute_process knows how to > cancel a process due to time out, but it didn't seem to check for anything > else. Essentially it looks like execute_process needs to be signaled by > the button press to cancel the process in addition to checking for > timeout. There are other internal interrupt flags that seem to be set when > the GUI stop button is pressed. Anyways this is what I noticed in the > code base. > So in the execute_process function it sits in a loop waiting for the process to finish. If the timeout occurs it kills the process. At the same time when the GUI stop button is pressed it sets some sort of abort flag that is used during command processing to quit processing commands. It seems that someone should be able to take this abort flag and use it to not only stop the command processing loop but to also have the execute_process timeout loop to kill the process if the abort flag is set. Best regards, F
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake-developers