Fix EventBase destruction race in FiberManagerMap
authorAndrii Grynenko <andrii@fb.com>
Wed, 10 Feb 2016 19:14:26 +0000 (11:14 -0800)
committerfacebook-github-bot-4 <folly-bot@fb.com>
Wed, 10 Feb 2016 20:20:26 +0000 (12:20 -0800)
commitd7c3a477457e2a0506de1e9c44cd9e8cca4a45d1
tree596d0afa8145769c344af264d429a25d971f3c01
parentb0a7bdf6b2ad6255b4ea843703b77aed040718d3
Fix EventBase destruction race in FiberManagerMap

Summary:
Previously we could be reading from thread-local FiberManagerMap while it was modified.
This is now fixed by keeping a per-thread list of EventBases which need to be removed from local maps. On the fast-path no action is taken, since list will be empty.

This is second try, since D2853921 got reverted.
The new implementation is simpler and does not rely on AtomicLinkedList.

Reviewed By: yfeldblum

Differential Revision: D2908018

fb-gh-sync-id: 4d7aed974c19761f7e2732ddbf8694af57c69bd6
shipit-source-id: 4d7aed974c19761f7e2732ddbf8694af57c69bd6
folly/experimental/fibers/FiberManagerMap.cpp