Consider the attached template. There is an ExecuteProcess which wraps a python script (listed below).
- start ListenTcp
- start ExecuteProcess
- stop ExecuteProcess
Expected: the ExecuteProcess component terminates successfully
Actual: there's always a thread running (1 displayed in the top-right corner of the processor)
The thread will only go away if the underlying command crashes. It's easy to replicate by stopping ListenTcp - the script will fail with a socket connection error and quit.
I have been looking into the ExecuteProcess source, and it looks like OnUnscheduled must also invoke Process.destroy() in addition to terminating the stdio/stderr I/O threads, but there's nothing like that anywhere.