mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-25 05:03:05 +00:00
f8dcf7528d
The deadlock could happen on this scenario: 1. User enables vmm-swap. The main process sends Command::Enable to the monitor process. 2. User request the current status at the same time. The main process sends Command::Status to the monitor process and wait for the response from the monitor process. 3. The monitor process start enabling vmm-swap. Sends VmSwapCommand::Suspend to the main process and wait for VmSwapResponse::SuspendCompleted. 4. The main process is blocked by the step 2 and the request from step 3 is never consumed. The root issue issue is that Command::Status can be inserted between Command::Enable and VmSwapCommand::Suspend. This CL simplifies the communication between the main and monitor processes on enabling vmm-swap and resolve the deadlock. VmSwapCommand and corresponding Tube was added by https://crrev.com/c/4293656, but is now removed by this CL. BUG=b:275671628 TEST=manual test Change-Id: Ia838b1feddb4a3f41bd729e9147adc5e2df866aa Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4387662 Reviewed-by: David Stevens <stevensd@chromium.org> Commit-Queue: Shin Kawamura <kawasin@google.com> |
||
---|---|---|
.. | ||
src | ||
tests | ||
Cargo.toml |