Change how we fork so we don't fork while threads are present. This fixes a couple things. 1) A flake that was common in debug builds where the PerfettoCmdlineTest.*Trigger* tests would fail. The cause was we started the service in a separate thread, which would hold a lock to fprintf when we forked, but that would deadlock the forked child process and then we would never progress until the test timed out. 2) In the PerfettoCmdlineTest.*Trigger* we exec twice causing a data race when touching |stderr_| member variable of the test. This refactor fixes this by making people explicitly provide the string the stderr should be saved into. Bug: 137770927 Change-Id: Ib75ab148de01115f6de05d914a2092dd7be6fe06
Perfetto is an open-source project for performance instrumentation and tracing of Linux/Android/Chrome platforms and user-space apps.
See www.perfetto.dev for docs.