UnixTaskRunner.Quit: keep holding lock while notifying to prevent race

Currently, we unlock after setting the |quit_| flag, but before notifying.
Therefore, if woken up for other reasons, the task runner can quit its Run()
loop before the notify happens (and while the original thread is still inside
Quit()). This is unexpected, and opens up a data race in ThreadTaskRunner's
usage of this class (caught by tsan).

Change-Id: Ibf398af3243d9bd1d8fae97b9c228626ef5f317e
1 file changed
tree: 5d48dde5f68bb725712ba6bb703c65c8b1dd9c52
  1. build_overrides/
  2. buildtools/
  3. debian/
  4. docs/
  5. gn/
  6. include/
  7. infra/
  8. protos/
  9. src/
  10. test/
  11. tools/
  12. ui/
  13. .clang-format
  14. .gitignore
  15. .gn
  16. .travis.yml
  17. Android.bp
  18. Android.bp.extras
  19. BUILD.gn
  20. codereview.settings
  21. heapprofd.rc
  22. MODULE_LICENSE_APACHE2
  23. NOTICE
  24. OWNERS
  25. perfetto.rc
  26. PRESUBMIT.py
  27. README.chromium
  28. README.md
README.md

Perfetto - Performance instrumentation and tracing

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.

Bugs

  • For bugs affecting Android or the tracing internals use the internal bug tracker (go/perfetto-bugs).
  • For bugs affecting Chrome use http://crbug.com, Component:Speed>Tracing label:Perfetto.