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.
libinjector, win: Fix intermittent timeouts
After restoring the saved CPU registers, each injection method waits
for the next trap before exiting the injector loop. This means that
the target thread, continuing to execute the original program, needs
to trigger the same trap before the injector can finish. And that leads
to unpredictable waits. For example, waits of a few minutes were
observed when testing injector against explorer.exe under Windows 7
Enterprise (x64). Further, injector could wait forever in case the
target thread never revisits the trap.
The waits were introduced when refactoring injection methods in commit
3fdb370 ("win_injector: seperate readfile and writefile to
different files (#1319)").
Fix this issue by arranging for the injector loop to exit immediately
after restoring the saved CPU registers.