commit | ca65bcfc01a1ad973a01440ea9be62fbd45a7c9e | [log] [tgz] |
---|---|---|
author | pigweed-integration-roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com> | Thu Jan 06 20:50:08 2022 +0000 |
committer | CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Jan 06 20:57:29 2022 +0000 |
tree | 8f2b3dcb35a4df0d79c0fc6144c480f0d61185c7 | |
parent | b2ce5bad8de73972703df6b8d7c32741161eff0e [diff] |
[roll third_party/pigweed] pw_rpc: Handle replacing a call with an acquired ChannelOutput buffer - When a pending RPC is called again, move its ChannelOutput buffer to the new call object. Previously, the ChannelOutput buffer was left active in the original call, which caused crashes. Moving the ChannelOutput buffer rather than closing it prevents code working with the original call object in another thread from sending a stale buffer if the call object is replaced. This is an incomplete solution, though, and more thought is needed. If the RPC body uses the OutputBuffer before passing it off to the other thread, that thread will use a stale buffer reference. - Rearrange the code that replaces the old call to avoid unlocking and relocking, which could cause problems if another call arrived while the lock wasn't held. - Expand tests to cover replacing a call with a ChannelOutput buffer acquired. Original-Bug: 591 Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/76920 https://pigweed.googlesource.com/pigweed/pigweed third_party/pigweed Rolled-Commits: 4b7b09e44f828a2..a06939d49ff44aa Roller-URL: https://ci.chromium.org/b/8825754017344329249 Cq-Cl-Tag: roller-builder:pigweed-experimental-roller Cq-Cl-Tag: roller-bid:8825754017344329249 CQ-Do-Not-Cancel-Tryjobs: true Change-Id: I5ae3bbc195db2b0ccd015f667589eb76e71a2a89 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/77160 Bot-Commit: Pigweed Integration Roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com> Commit-Queue: Pigweed Integration Roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com>
This repository contains experimental pigweed modules.
Clone this repo with --recursive
to get all required submodules.
git clone --recursive https://pigweed.googlesource.com/pigweed/experimental
This will pull the Pigweed source repository into third_party/pigweed
. If you already cloned but forgot to --recursive
run git submodule update --init
to pull all submodules.