Resolution: When a PDriver task which runs a shell script is cancelled, the child process of the script may become orphaned and will never terminate.
This happens when the shell script is using the ksh shell, which doesn't maintain the Engine process' process group ID.
Attached to this article is the source for cpgwrapper.cpp, which can be compiled and used as a workaround for this issue. Change the execute statements in the PDriver script to invoke this as the main executable, and pass the target executable and args as arguments to the wrapper. For example. rather than execute "script1 arg1 arg2", use execute "cpgwrapper script1 arg1 arg2".