Conversation
7194462 to
06a1daf
Compare
Codecov Report
@@ Coverage Diff @@
## main #1504 +/- ##
==========================================
- Coverage 53.00% 52.91% -0.10%
==========================================
Files 140 140
Lines 21004 21035 +31
Branches 5318 5321 +3
==========================================
- Hits 11134 11131 -3
- Misses 6941 6970 +29
- Partials 2929 2934 +5
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
|
Oops, I seem to have jumped the gun on tests passing, and accidentally set the reviewer to @stevenengler instead of Ryan. Please disregard, and I'll see if I can sort out the remaining issues... |
4cd3b9c to
f3874cd
Compare
|
Sending to @stevenengler after all since it's more outside of IPC and preload than in it, though @rwails you're welcome to take a look too if you have cycles :) |
|
p.s. I can take a look at this late tonight if you want my review, but if you're ready to merge earlier than that, go for it! |
* Register managed process PIDs in a global pid -> IPC map. * Install a SIGCHLD handler that, on process death, marks all of its threads dead and wakes up any Shadow threads waiting on IPC. * Remove shim-side global destructor, so that shadow continues to capture all syscalls until the process actually exits. Fixes shadow#1476
Adds ChildPidWatcher, which uses a dedicated thread to `wait` on all children and notify via callbacks. This turns out to be incompatible with ptrace; I didn't think `wait` called from a non-tracer thread would get the ptrace stops, but it looks like it does.
5c12771 to
af7f095
Compare
We use `pidfd_open` to get a file descriptor for each child pid, which we can then monitor with `epoll`. This doesn't interact with other process state transitions (such as ptrace stops).
af7f095 to
022d3bf
Compare
capture all syscalls until the process actually exits.
Fixes #1476