- 25 Dec, 2019 5 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Use `getCurrentThreadName()` in `EventBaseTestLib.h` v.s. using pthread directly. Reviewed By: Orvid Differential Revision: D19226856 fbshipit-source-id: 90f825ab0fc186a896cd63c425e55153daa0fefd
-
Yedidya Feldblum authored
Summary: [Folly] Update a comment in `CacheLocalityBenchmark.cpp` to refer to the direct function used for fetching the thread-id. Reviewed By: Orvid Differential Revision: D19226855 fbshipit-source-id: 8cf203daa7b3fbc00e387dca881be7f9ce47af95
-
Yedidya Feldblum authored
Summary: [Folly] Use `std::thread` in `AtomicHashMapTest.cpp` instead of using the pthread API. In general in normal C++ code, prefer C++ standard library facilities over C facilities. Reviewed By: Orvid Differential Revision: D19226850 fbshipit-source-id: 7edc5fca25266b48ab3e8c8829708594d7563409
-
Joe Loser authored
Summary: - EventBaseTestLib.cpp file was moved to EventBaseTestLibProvider.cpp in Differential Revision: D19001877. - Change CMakeLists.txt to specify EventBaseTestLibProvider.cpp so that CMake does not fail at configure time due to EventBaseTestLib.cpp not existing in the source tree. Pull Request resolved: https://github.com/facebook/folly/pull/1284 Reviewed By: markisaa Differential Revision: D19226798 Pulled By: yfeldblum fbshipit-source-id: 45a5e5ca03a52897a6f8f711761bf78ef386e6f6
-
Yedidya Feldblum authored
Summary: [Folly] Fix typo in `clang-format` control. Reviewed By: markisaa Differential Revision: D19224383 fbshipit-source-id: 1d153fb4eaead422d93c235e40163b8ae855d13a
-
- 24 Dec, 2019 2 commits
-
-
Giuseppe Ottaviano authored
Summary: It's a read-only interface. Reviewed By: philippv, luciang Differential Revision: D19199710 fbshipit-source-id: 5e900edd35640cded45e6376eb0b81b9036bd792
-
Giuseppe Ottaviano authored
Summary: It can be useful for diagnostics to print the stack traces of thrown exceptions that are not yet handled, for example if a fatal error happens during unwinding. Reviewed By: philippv, luciang Differential Revision: D19191089 fbshipit-source-id: dae8cc0a095570bfe7d6c4c7ef2b5dc08aa9f1f9
-
- 21 Dec, 2019 7 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Let `AtFork` accept ptr-to-`const` handle rather than requiring only ptr-to-non-`const`. Reviewed By: luciang Differential Revision: D19208255 fbshipit-source-id: c7a6ab42b7b652ebc4ea6465f80db37ef1d155df
-
Yedidya Feldblum authored
Summary: [Folly] Rename `object` to `handle` in `AtFork` since it is used opaquely. Reviewed By: luciang Differential Revision: D19208246 fbshipit-source-id: 3fc23e85b64f911f8e172a22f7e7080952d4dfe9
-
Yedidya Feldblum authored
Summary: [Folly] Register with `AtFork` without an object in `BufferedRandomDevice`, since no object is actually needed and since it is possible for the object passed in to be destroyed. Reviewed By: luciang Differential Revision: D19207385 fbshipit-source-id: 7c0e2793d9b438e576bf26bc3b3b459b372aec6d
-
Yedidya Feldblum authored
Summary: [Folly] Let `AtFork` ignore unregistration of `nullptr` objects - i.e., let `nullptr` objects be the way of signaling immunity from unregistration. Reviewed By: luciang Differential Revision: D19207380 fbshipit-source-id: 6dfee52bf815fc257697fb89d67f69cede0f39f6
-
Yedidya Feldblum authored
Summary: [Folly] Define `to_narrow` in terms of implicit conversion to take advantage of ubsan's truncation checks. Note that integer truncation is not undefined behavior per se but is commonly unintended, so ubsan checks for it. Uses of `to_narrow` should not be subject to truncation; wherever truncation is anticipated, better to use an explicit conversion with a named destination type. Requires suppressing `-Wconversion` around the implicit conversion to avoid extraneous warnings and errors when the compiler detects narrowing implicit conversions. Since `to_narrow` models explicit conversion while merely being defined in terms of implicit conversion, it is already anticipated by all users that a narrowing conversion may occur; the warning is there to inform users only about unanticipated cases. Reviewed By: luciang Differential Revision: D19201430 fbshipit-source-id: b3739d3d9aa05e95f7b3e4dff54e719691c1f04c
-
Yedidya Feldblum authored
Summary: [Folly] Mark `co_error` as `final`. Reviewed By: lewissbaker Differential Revision: D19173904 fbshipit-source-id: 3dedf9a27629dd495d7097d00566a92753b65778
-
Yedidya Feldblum authored
Summary: [Folly] Forbid `co_error` with empty `exception_wrapper`. Reviewed By: lewissbaker Differential Revision: D19172250 fbshipit-source-id: 5ffa7502eb97b6a084be3112b17f29bad2d96a0f
-
- 20 Dec, 2019 7 commits
-
-
Rosen Penev authored
Summary: Found with modernize-loop-convert Signed-off-by: Rosen Penev <rosenp@gmail.com> Pull Request resolved: https://github.com/facebook/folly/pull/1260 Reviewed By: markisaa Differential Revision: D18747876 Pulled By: yfeldblum fbshipit-source-id: f2b19654bb3fcbb75b1210edeef536c88f3052d1
-
Yedidya Feldblum authored
Summary: [Folly] Let `PriorityUnboundedQueueSet` align its queues, which have extended alignment, even when `std::allocator` does not honor extended alignment. Reviewed By: magedm Differential Revision: D19174993 fbshipit-source-id: 0bc0d75c6d239c97b6e1c7380bffff0363008e16
-
Yedidya Feldblum authored
Summary: [Folly] Let AlignedSysAllocator consider the natural or specified alignment of the type for which memory is being allocated, rather than only considering a constant or fixed alignment. Reviewed By: nbronson Differential Revision: D19174932 fbshipit-source-id: e8ed0fbaf30d285cadd061d0fe5d69fcbb16f9e2
-
Tristan Rice authored
Summary: The tagged/specific exception variant of thenError and deferError propagate interrupts where currently the untagged variant of thenError does not. As far as I can tell this was an oversight. This makes untagged thenError behave as expected. Reviewed By: yfeldblum, mpark Differential Revision: D18643814 fbshipit-source-id: 42688c4363de2f6b027766b19276b2e8ec6a48a8
-
Yedidya Feldblum authored
Summary: [Folly] Remove spelled default ctor in `AlignedSysAllocator`, which was needed only for gcc49. Reviewed By: aary Differential Revision: D19171223 fbshipit-source-id: ee42f6ac188dc896519537870353116c0dfd3acd
-
Yedidya Feldblum authored
Summary: [Folly] Extended constructibility for `co_error` - constructible from everything `exception_wrapper` is constructible from, but not default-constructible. This permits: ```lang=c++ co_yield folly::coro::co_error(std::runtime_error("foo")); ``` Reviewed By: lewissbaker Differential Revision: D19172210 fbshipit-source-id: df21c4f2a15ad2286e7cb34aae7c1be05e797a94
-
Yedidya Feldblum authored
Summary: [Folly] Avoid a too-large pointer literal in StlVectorTest, keeping the literal value divisible by 8 to avoid ubsan violations. Reviewed By: igorsugak Differential Revision: D19170467 fbshipit-source-id: 2c93d2b3d9f7515761668d3364c4b8b5093a6145
-
- 19 Dec, 2019 6 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Only use `explicit` copy-ctor in `to_narrow` with C++17 and higher, since C++17 introduces mandatory copy elision and the technique here relies on mandatory copy elision. Differential Revision: D19175384 fbshipit-source-id: 9d3234a71b1b5e4f31d14137e42dbf3a73c79b2e
-
Lilit Yenokyan authored
Summary: Fixing warning exposed by -Wpointer-bool-conversion ``` folly/container/test/F14MapTest.cpp:1370:35: error: address of function 'Tracked<0>::counts' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion] << "key_type ops " << Tracked<0>::counts << ", mapped_type ops " ~~ ^~~~~~~~~~~~~~~~~~ folly/container/test/F14MapTest.cpp:1370:35: note: prefix with the address-of operator to silence this warning << "key_type ops " << Tracked<0>::counts << ", mapped_type ops " ^ & folly/container/test/F14MapTest.cpp:1371:16: error: address of function 'Tracked<1>::counts' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion] << Tracked<1>::counts; ~~ ^~~~~~~~~~~~~~~~~~ folly/container/test/F14MapTest.cpp:1371:16: note: prefix with the address-of operator to silence this warning << Tracked<1>::counts; ^ & 2 errors generated. Reviewed By: yfeldblum Differential Revision: D19131722 fbshipit-source-id: 9db48848ab5d68bc73ab0d6a4ef557d0db05414e
-
Yedidya Feldblum authored
Summary: [Folly] Extract `has_extended_alignemnt`. Reviewed By: aary Differential Revision: D19149753 fbshipit-source-id: c6fa5cf2adcab732a21fbb31ab8ab60e978b9bc8
-
Yedidya Feldblum authored
Summary: [Folly] Canonical impl of futures `Core::removeStaleDependents` using std algorithms. Reviewed By: leikahing, igorsugak Differential Revision: D19167292 fbshipit-source-id: 702fdf07bdcc295ed990d2c02cd3380ea81694a2
-
Mark Williams authored
Summary: In cores we're only interested in the ElfPhdrs (and there generally aren't any sections), so apart from some asserts, the code already does everything we need. Reviewed By: paulbiss Differential Revision: D19161810 fbshipit-source-id: fe6e2f34413d61067156858fc652ffffd910433c
-
Igor Sugak authored
Summary: Exposed by UBSAN's misaligned-pointer-use: ```lang=bash > folly/test/stl_tests/StlVectorTest.cpp:544:12: runtime error: upcast of misaligned address 0x0000feebdaed for type 'DataTracker<false>', which requires 8 byte alignment > 0x0000feebdaed: note: pointer points here > <memory cannot be printed> > #0 0x6c9b93 in DataTracker<false>::~DataTracker() folly/test/stl_tests/StlVectorTest.cpp:544 > #1 0x6c94fe in Data<0u, 0ul>::~Data() folly/test/stl_tests/StlVectorTest.cpp:605 > #2 0xcc5f93 in void test_iteratorInsertionN2<folly::fbvector<Data<0u, 0ul>, std::allocator<Data<0u, 0ul> > > >(std::integral_constant<bool, true>) folly/test/stl_tests/StlVectorTest.cpp:2422 > #3 0x5c9bac in void test_iteratorInsertionN3<folly::fbvector<Data<0u, 0ul>, std::allocator<Data<0u, 0ul> > > >() folly/test/stl_tests/StlVectorTest.cpp:2422 > #4 0x5c67bd in FBVector_iteratorInsertionN_Test::TestBody() folly/test/stl_tests/StlVectorTest.cpp:2422 > #5 0x7f9c4e5316c9 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) xplat/third-party/gmock/googletest-1.8.0/googletest/src/gtest.cc:2464 > #6 0x7f9c4e530dcc in testing::Test::Run() xplat/third-party/gmock/googletest-1.8.0/googletest/src/gtest.cc:2480 > #7 0x7f9c4e5350a0 in testing::TestInfo::Run() xplat/third-party/gmock/googletest-1.8.0/googletest/src/gtest.cc:2662 > #8 0x7f9c4e539408 in testing::TestCase::Run() xplat/third-party/gmock/googletest-1.8.0/googletest/src/gtest.cc:2780 > #9 0x7f9c4e55a672 in testing::internal::UnitTestImpl::RunAllTests() xplat/third-party/gmock/googletest-1.8.0/googletest/src/gtest.cc:4655 > #10 0x7f9c4e5595de in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) xplat/third-party/gmock/googletest-1.8.0/googletest/src/gtest.cc:2464 > #11 0x7f9c4e558b72 in testing::UnitTest::Run() xplat/third-party/gmock/googletest-1.8.0/googletest/src/gtest.cc:4263 > #12 0x6591f3 in RUN_ALL_TESTS() buck-out/cells/fbsource/gen/xplat/third-party/gmock/gtest_headers#header-mode-symlink-tree-with-header-map,headers/gtest/gtest.h:2247 > #13 0x659139 in main folly/test/stl_tests/StlVectorTest.cpp:3074 > #14 0x7f9c4c75b1a5 in __libc_start_main /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/csu/libc-start.c:308:16 > #15 0x4de029 in _start /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/sysdeps/x86_64/start.S:120 > > SUMMARY: UndefinedBehaviorSanitizer: misaligned-pointer-use folly/test/stl_tests/StlVectorTest.cpp:544:12 ``` Make the crafted pointer address aligned. Reviewed By: Gownta Differential Revision: D19166262 fbshipit-source-id: f766656d031079350838598b135275bdbc047642
-
- 18 Dec, 2019 9 commits
-
-
Matt Ma authored
Summary: Not sure if there is any predefined cross-platform macro that I can use the detect the build mode. Reviewed By: luciang Differential Revision: D19161841 fbshipit-source-id: 49dd12096ab20bbcaada566f2ad854a9ea340c11
-
Yedidya Feldblum authored
Summary: [Folly] Canonical implementation of `IoUringBackend::NotAvailable` - need to export exceptions since they are the most likely use-case for RTTI and can just bring the base class's ctors into scope. Differential Revision: D19154080 fbshipit-source-id: efaf9440a5ec3d78201448160efe4b8893314956
-
Andrii Grynenko authored
Reviewed By: yfeldblum, lewissbaker Differential Revision: D19156701 fbshipit-source-id: 80bd8b7fc6dfde71756411342e5f4eb912150f06
-
Igor Sugak authored
Summary: Exposed by UBSAN's unsigned-integer-overflow: ``` > folly/experimental/observer/detail/Core.cpp:179:9: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'size_t' (aka 'unsigned long') > #0 0x7f605837dfea in folly::observer_detail::Core::removeStaleDependents()::$_4::operator()(std::vector<std::weak_ptr<folly::observer_detail::Core>, std::allocator<std::weak_ptr<folly::observer_detail::Core> > >&) const folly/experimental/observer/detail/Core.cpp:179 > #1 0x7f6058344b0c in auto folly::SynchronizedBase<folly::Synchronized<std::vector<std::weak_ptr<folly::observer_detail::Core>, std::allocator<std::weak_ptr<folly::observer_detail::Core> > >, folly::SharedMutexImpl<false, void, std::atomic, false, false> >, (folly::detail::MutexLevel)1>::withWLock<folly::observer_detail::Core::removeStaleDependents()::$_4>(folly::observer_detail::Core::removeStaleDependents()::$_4&&) folly/Synchronized.h:210 > #2 0x7f6058344917 in folly::observer_detail::Core::removeStaleDependents() folly/experimental/observer/detail/Core.cpp:174 > #3 0x7f60583785cb in folly::observer_detail::Core::~Core()::$_2::operator()(std::unordered_set<std::shared_ptr<folly::observer_detail::Core>, std::hash<std::shared_ptr<folly::observer_detail::Core> >, std::equal_to<std::shared_ptr<folly::observer_detail::Core> >, std::allocator<std::shared_ptr<folly::observer_detail::Core> > > const&) const folly/experimental/observer/detail/Core.cpp:156 > #4 0x7f6058343cdc in auto folly::SynchronizedBase<folly::Synchronized<std::unordered_set<std::shared_ptr<folly::observer_detail::Core>, std::hash<std::shared_ptr<folly::observer_detail::Core> >, std::equal_to<std::shared_ptr<folly::observer_detail::Core> >, std::allocator<std::shared_ptr<folly::observer_detail::Core> > >, folly::SharedMutexImpl<false, void, std::atomic, false, false> >, (folly::detail::MutexLevel)1>::withWLock<folly::observer_detail::Core::~Core()::$_2>(folly::ob server_detail::Core::~Core()::$_2&&) folly/Synchronized.h:210 > #5 0x7f6058343a17 in folly::observer_detail::Core::~Core() folly/experimental/observer/detail/Core.cpp:154 > #6 0x7f605838b8ca in std::_Sp_counted_ptr<folly::observer_detail::Core*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/bits/shared_ptr_base.h:378 > #7 0x7f605834d411 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/bits/shared_ptr_base.h:156 > #8 0x7f605834d332 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/bits/shared_ptr_base.h:686 > #9 0x7f605834d23a in std::__shared_ptr<folly::observer_detail::Core, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/bits/shared_ptr_base.h:1125 > #10 0x7f605833c416 in std::shared_ptr<folly::observer_detail::Core>::~shared_ptr() buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/bits/shared_ptr.h:93 > #11 0x7f6058376413 in folly::observer_detail::ObserverManager::scheduleRefresh(std::shared_ptr<folly::observer_detail::Core>, unsigned long)::'lambda'()::~() folly/experimental/observer/detail/ObserverManager.h:91 > #12 0x7f6058377014 in unsigned long folly::detail::function::execSmall<folly::observer_detail::ObserverManager::scheduleRefresh(std::shared_ptr<folly::observer_detail::Core>, unsigned long)::'lambda'()>(folly::detail::function::Op, folly::detail::function::Data*, folly::detail::function::Data*) folly/Function.h:592 > #13 0x7f6058377788 in folly::Function<void ()>::exec(folly::detail::function::Op, folly::detail::function::Data*, folly::detail::function::Data*) const folly/Function.h:649 > #14 0x7f6058376380 in folly::Function<void ()>::~Function() folly/Function.h:781 > #15 0x7f6058477b99 in folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()::operator()() const folly/experimental/observer/detail/ObserverManager.cpp:73 > #16 0x7f6058473de8 in void std::__invoke_impl<void, folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()>(std::__invoke_other, folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()&&) buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/bits/invoke.h:60 > #17 0x7f6058473c08 in std::__invoke_result<folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()>::type std::__invoke<folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()>(folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()&&) buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/bits/invok e.h:95 > #18 0x7f6058473b66 in decltype(std::__invoke(_S_declval<0ul>())) std::thread::_Invoker<std::tuple<folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/thread:234 > #19 0x7f6058473a43 in std::thread::_Invoker<std::tuple<folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()> >::operator()() buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/thread:243 > #20 0x7f6058473549 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<folly::observer_detail::ObserverManager::UpdatesManager::CurrentQueue::CurrentQueue()::'lambda'()> > >::_M_run() buck-out/cells/fbsource/gen/third-party/gcc/7.x/stdc++-headers#header-mode-symlink-tree-with-header-map,headers/thread:186 > #21 0x7f60576bac5f in std::execute_native_thread_routine(void*) third-party/gcc/7.x/libstdc++-v3/src/c++11/thread.cc:83 > #22 0x7f605639e6b5 in start_thread /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/nptl/pthread_create.c:465:7 > #23 0x7f6055ecdebe in __GI___clone /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/sysdeps/unix/sysv/linux/x86_64/clone.S:95 > > SUMMARY: UndefinedBehaviorSanitizer: unsigned-integer-overflow folly/experimental/observer/detail/Core.cpp:179:9 ``` Fix the error by rearranging increment and decrement operations. Reviewed By: leikahing Differential Revision: D19164999 fbshipit-source-id: d3c9b638492d0bf44c2acaac1e95fafe8b785182
-
David Carlier authored
Summary: - __cxa_get_globals signature closer of the libcxxabi. - malloc.h exists now on FreeBSD but prevents stdlib.h inclusion if __STDC__. Pull Request resolved: https://github.com/facebook/folly/pull/1281 Reviewed By: Orvid Differential Revision: D19140640 Pulled By: yfeldblum fbshipit-source-id: 525014b5a367b8d8e95cf10e3e779cd7f0647bd5
-
Andrii Grynenko authored
Summary: An alternative to co_return Try that works for Task<void> Reviewed By: yfeldblum Differential Revision: D19136334 fbshipit-source-id: 72a18482b326dbc40b691712a5fd311efad45785
-
Matt Ma authored
Summary: The general idea is to change cache to a mapping between an address and array of frames instead of just one frame. Also changed Dwarf to directly fill frames array with inline function calls, instead of allocating extra LocationInfo array. Moved shared data structure like LocationInfo and SymbolizedFrame into a separate file so that it can used in both Dwarf.cpp and Symbolizer.cpp. Reviewed By: luciang Differential Revision: D18825831 fbshipit-source-id: fe963a1adbbc6f0055c466b91708eee732abc141
-
Dan Melnic authored
Summary: Skip the EventBase tests if the backend is not available Reviewed By: yfeldblum Differential Revision: D19002064 fbshipit-source-id: a995df02998c80de2f9076ea16a0281b6288d6b5
-
Dan Melnic authored
Summary: Fix io_uring backend tests Reviewed By: yfeldblum, danobi Differential Revision: D19023775 fbshipit-source-id: d696064d26b37f52529c84601f6797ef82b0ddb5
-
- 17 Dec, 2019 4 commits
-
-
Dan Melnic authored
Summary: EventBase test lib rework Reviewed By: yfeldblum Differential Revision: D19001877 fbshipit-source-id: d99ad41007012c7bd21ee259a0a0b5ee2b709512
-
Dan Melnic authored
Summary: Add IoUringBackend::NotAvailable exception Reviewed By: kevin-vigor Differential Revision: D19143143 fbshipit-source-id: 7b55106d50882d34fc6100a81ff2a4e5748e9b85
-
Andrii Grynenko authored
Summary: This allows makeObserver to work even during shutdown. Reviewed By: yfeldblum Differential Revision: D19136597 fbshipit-source-id: 17e946a66743a56d24904697c02ce7165bcaf397
-
Misha Shneerson authored
Summary: Linux thread identifier is something that we can get with `gettid`. http://man7.org/linux/man-pages/man2/gettid.2.html This TID is super usefully for providing thread information while debugging on Linux (this is the thing that `ps` command uses, or procfs), but is not really mappable from `std::thread::id` (e.g. the thread handle we get with `pthread_self()`). Reviewed By: yfeldblum Differential Revision: D19134596 fbshipit-source-id: 32ad025c5e378e3c7b55da1aad8dd9f3e26d0892
-