Fix foreground process group on restart #904
Open
+123
−19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
[ There's still a bug during restart in this PR. I'll fix that later. It's not yet ready for final review. the script test is failing to restart. ]
'
The key to reviewing this is to read the changes in
src/terminal.cpp
(i.e., the most recent commit: "Fix foreground process group on restart").Without this PR, we have the bug described in Issue #903. The problem occurs when
dmtcp_launch
is called from a shell script instead of from the command line. On restart, the restarted process acts as if it's in background, and ^C (and other input?) does not reach the restarted process.Sometimes 'dmtcp_launch' is called from inside a shell script (e.g., for a batch job). In this case, on restart, the foreground process group leader is the restarted process, and yet the process group leader is the parent (presumably the login shell). So, the foreground process group leader is not the leader of a process group. To fix this, we set the process group leader to also be the leader of the foreground process group.