1. 29 Sep, 2020 1 commit
    • Koby Kahane's avatar
      Do not attempt to use __rdtsc on non-x64/x86 MSVC targets (#1461) · 6c4cef83
      Koby Kahane authored
      Summary:
      Currently, Hardware.h assumes the `__rdtsc` intrinsic is always available when building with MSVC. However, this is not the case when building for Windows for ARM64.
      
      This blocks successful compilation of https://github.com/facebook/rocksdb on Windows for ARM64, since that library embeds Folly and includes this specific header.
      
      Instead, use a condition similar to the check in `asm_volatile_pause` in Asm.h. This results in successful compilation and a fallback to `steady_clock::now()` on Windows for ARM64 targets.
      
      Pull Request resolved: https://github.com/facebook/folly/pull/1461
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23952622
      
      Pulled By: Orvid
      
      fbshipit-source-id: 1f02d04cbbbde42c80ad56d8d7ccc4dd7fe86847
      6c4cef83
  2. 28 Sep, 2020 3 commits
    • Zeyi (Rice) Fan's avatar
      build zstd in static to avoid DLL dependency on Windows · a1ba5275
      Zeyi (Rice) Fan authored
      Summary: It seems after updating zstd to 1.4.5. `Dllexport` for zstd.dll was not being picked up correctly. Instead of having zstd being a runtime dependency let's try statically link it to avoid the DLL issue.
      
      Reviewed By: vitaut
      
      Differential Revision: D23970349
      
      fbshipit-source-id: 3b14dddb64d410cb9546c416f27d73b7604b21ba
      a1ba5275
    • Maged Michael's avatar
      hazptr_obj_cohort: Fix race condition · b29f0eb3
      Maged Michael authored
      Summary:
      Fix race condition in hazptr_obj_cohort deactivation
      
      Race condition:
      - Thread T1 is doing asynchronous reclamation of objects.
      - Thread T2 starts deactivating cohort C.
      - T1 reclaims an object that its destructor retires a tagged object A that belongs to cohort C.
      - T1 checks that C is active.
      - T2 sets C.active_ to false.
      - T2 pops and reclaims the objects in C's list.
      - T1 pushes A in C's list
      - T2 expects to find C's list empty but it is not. Assertion failure.
      
      With the fix.
      - Thread T1 is doing asynchronous reclamation of objects.
      - Thread T2 starts deactivating cohort C.
      - T1 reclaims an object that its destructor retires a tagged object A that belongs to cohort C.
      - T1 checks that C is active.
      - T2 sets C.active_ to false.
      - **T2 waits for T1 to release the lock on the domain tagged list**
      - T1 pushes A in C's list
      - **T1 releases the lock**
      - **T2 cleans up C's objects in the domain tagged list**
      - **No subsequent asynchronous reclamation of objects in the domain will involve objects that belong to C**
      - T2 pops and reclaims the objects in C's list **including A**
      - T2 finds C's list empty as expected.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23947490
      
      fbshipit-source-id: 943664e61190da7b4ad1bb31ac47609bdea2314d
      b29f0eb3
    • Richard Tynan's avatar
      Fix typo in coments for SharedMutex · 005bacc2
      Richard Tynan authored
      Summary: Simple typo that I spotted.
      
      Differential Revision: D23963553
      
      fbshipit-source-id: 018e81c4878f4cb27b6676e88278d47d38706ed4
      005bacc2
  3. 27 Sep, 2020 1 commit
    • Andrii Grynenko's avatar
      Add upcasting support · 15906ea2
      Andrii Grynenko authored
      Summary: Store a raw pointer to the managed object outside of the ReadMostlySharedPtrCore to make casting easier.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23920580
      
      fbshipit-source-id: 4d3d3423f4ef3a78ebbd5efd45bb365ca0f72a18
      15906ea2
  4. 26 Sep, 2020 2 commits
  5. 25 Sep, 2020 7 commits
    • Dan Melnic's avatar
      Skip deadlocking fork tests in TSAN mode · d586f9f8
      Dan Melnic authored
      Summary: Skip deadlocking fork tests in TSAN mode
      
      Differential Revision: D23933183
      
      fbshipit-source-id: a5fe2da954676f6ced2f00dea280e10ac88d99cd
      d586f9f8
    • Dan Melnic's avatar
      Add support for immediate SQ poll submit · aeea7370
      Dan Melnic authored
      Summary: Add support for immediate SQ poll submit
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D23818098
      
      fbshipit-source-id: d8d626c51aef0cf8c0049e081d86313cb731429a
      aeea7370
    • Robin Cheng's avatar
      Make SymbolizerTest pass if compiled as PIE. · 0f0fe916
      Robin Cheng authored
      Summary:
      The symbolizer takes mapped addresses (address listed in ELF, offset by the binary offset (which is zero for non-PIE)) and symbolizes it into non-mapped addresses. In a couple of places in SymbolizerTest, we took the non-mapped addresses and symbolized them again, which wouldn't work if the binary was compiled with PIE. In another place in SymbolizerTest, the mapped address was used to look up DWARF information, whereas we needed the non-mapped address. This diff addresses these issues.
      
      Additionally, I discovered that r_debug::r_map->l_addr is the "right" way to get the PIE offset, so this diff pulls that common functionality to symbolizer/detail/Debug.h and use it for Symbolizer and the three tests so far that need PIE relocation adjustments.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23492850
      
      fbshipit-source-id: 62353e576c50b44070b323b5477fea9bb4c0b500
      0f0fe916
    • Robin Cheng's avatar
      Suppress another TSAN false positive due to openssl not compiled with TSAN instrumentation. · e653781c
      Robin Cheng authored
      Summary: Similar to D23139413, this is another place where openssl causes TSAN issues widely in fbcode.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23698225
      
      fbshipit-source-id: e883784500392c2d5be757c37cceb8bf8cc8b2aa
      e653781c
    • Chad Austin's avatar
      use backtrace(2) on all Apple platforms · 1d2bff8d
      Chad Austin authored
      Summary: I don't recall what previous intermediate state justified guarding use of backtrace with __APPLE__ and FOLLY_USE_SYMBOLIZER, but it no longer applies.
      
      Reviewed By: yfeldblum, luciang
      
      Differential Revision: D23881192
      
      fbshipit-source-id: b3ca829f9c738f50f7ab7e038348ec3df65ae4b9
      1d2bff8d
    • Orvid King's avatar
      Back out "Update folly's source of truth to xplat" · 8be3153a
      Orvid King authored
      Summary: Original commit changeset: 6362acb7a668 (D23066827 (https://github.com/facebook/folly/commit/0b3d9d21b7d1496e0b592ee6ce7a687c86c0498f))
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23837145
      
      fbshipit-source-id: 642c1401aea0b01c0c5e53c24b100f5daa600512
      8be3153a
    • Yedidya Feldblum's avatar
      Fix the Apple LLVM version when disabling tests for Xcode 12 · d8e10145
      Yedidya Feldblum authored
      Summary: [Folly] Fix the Apple LLVM version when disabling is-constexpr-default-constructible test expectations over types with non-trivial destructors for Xcode 12.
      
      Differential Revision: D23917973
      
      fbshipit-source-id: 1238ec5a53ba0ff73afd67f81ad2868f37196eaa
      d8e10145
  6. 24 Sep, 2020 9 commits
    • Yang Chi's avatar
      Move common/gtest:gtest_coro to folly/experimental/coro · 137a7249
      Yang Chi authored
      Reviewed By: yfeldblum
      
      Differential Revision: D23847355
      
      fbshipit-source-id: b5fbf5bea515111d34962100af0f44ae11e0845f
      137a7249
    • Nicholas Ormrod's avatar
      Move not_null to folly · 405149cf
      Nicholas Ormrod authored
      Summary:
      - Changed namespace from facebook::memory to folly
      - Changed include paths
      - Left a stub file in common/memory/not_null.h
      
      Differential Revision: D23740776
      
      fbshipit-source-id: 6eff6823017e3a5d20a540fde10b99aa0381d4b0
      405149cf
    • Yedidya Feldblum's avatar
      Internally rename await in folly/fibers/ · 53874b38
      Yedidya Feldblum authored
      Summary: [Folly] Internally rename `await` in `folly/fibers/` since some versions of MSVC effectively `#define await co_await` breaking the build - except it's not really a `#define` and there is no reliable way to detect it.
      
      Reviewed By: Orvid
      
      Differential Revision: D23882811
      
      fbshipit-source-id: 836bebcbcfe01ce39c873202b67796efafa1c366
      53874b38
    • Kevin Vigor's avatar
      use folly::Function for callback in async IO interface. · acf28118
      Kevin Vigor authored
      Summary:
      folly::Function is non-copyable. This means it can be used with lambdas that capture
      a unique_ptr, whereas std::function can not.
      
      See https://www.internalfb.com/intern/wiki/Folly/Function/
      
      Differential Revision: D23883275
      
      fbshipit-source-id: a26cda0d3833e3ea822beef99c6a28a6dd90fa83
      acf28118
    • Curtis Li's avatar
      Fix some -Wdocumentation errors in folly · 73d254b5
      Curtis Li authored
      Summary:
      Fixes a few documentation errors that get surfaced when compiling with the -Wdocumentation flag.
      Full explanation of errors with examples here:
      https://clang.llvm.org/docs/DiagnosticsReference.html#wdocumentation
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23872718
      
      fbshipit-source-id: 0bb803c6e9412e72985c17415b424be08b51a693
      73d254b5
    • Yedidya Feldblum's avatar
      Rename private find member · c28acad2
      Yedidya Feldblum authored
      Summary: [Folly] Rename private `find` member in `sorted_vector_set`, `sorted_vector_map` to avoid confusing conflicts with derived-class `using` statements when the derived class privately inherits the base.
      
      Reviewed By: ha1dfo
      
      Differential Revision: D23863338
      
      fbshipit-source-id: 43e67da9683fb4c0af3fa1c86ade7735935e5e0c
      c28acad2
    • Yedidya Feldblum's avatar
      Suppress is-constexpr-default-constructible test under Clang 10 · 8695aec8
      Yedidya Feldblum authored
      Summary:
      [Folly] Suppress is-constexpr-default-constructible test for types with non-trivial user-provided (until C++20) or non-constexpr (since C++20) destructors under Clang 10.
      
      Responsible llvm commit: https://github.com/llvm/llvm-project/commit/457226e02a6e.
      
      Related llvm bug report: https://bugs.llvm.org/show_bug.cgi?id=47620. This bug report documents a crash in the compiler, but fails to document deviation from the language spec.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D23862920
      
      fbshipit-source-id: 855db4773ffc062ad9d361feac3709922db7b42d
      8695aec8
    • Xavier Deguillard's avatar
      io: fix signed comparison warning · 15523d66
      Xavier Deguillard authored
      Summary: This shows up when compiling with mode/win.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23871729
      
      fbshipit-source-id: 1d52f41f425cd542bae1ac2c3bfe9893fffefdf4
      15523d66
    • Maged Michael's avatar
      hazptr: Clarify warning about reclamation executor · 92fe7260
      Maged Michael authored
      Summary:
      Change WARNING to INFO because there are cases where not using a dedicated thread pool is the right choice. INFO still provides the debugging benefit if the lack of dedicated thread pool indeed leads to deadlock.
      
      Clarify that the likely cause for the message about the reclamation executor is that the program did not call folly::enable_hazptr_thread_pool_executor which is called by folly::init.
      
      Reviewed By: yfeldblum, joshkehn
      
      Differential Revision: D23826463
      
      fbshipit-source-id: a5906ee974b5fe87c2d38dcff9a0f2717afb2a5c
      92fe7260
  7. 23 Sep, 2020 4 commits
    • Rahul Tekawade's avatar
      Fix Traits `folly::IsOneOf` document typo · 09cfcf96
      Rahul Tekawade authored
      Summary: Fix document typo for `folly::IsOneOf` (see diff)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23863254
      
      fbshipit-source-id: 02f64a72decab028be832f71e1132dfce7fe5fa9
      09cfcf96
    • Chad Austin's avatar
      enable symbolizer on any platform with backtrace(3) · c0938b8a
      Chad Austin authored
      Summary:
      Now that symbolizer has precise feature flags, enable
      FOLLY_USE_SYMBOLIZER on any platform that has backtrace(3), which is
      all that's needed to get a useful stack trace printed in the signal
      handler.
      
      Reviewed By: yfeldblum, luciang
      
      Differential Revision: D23361609
      
      fbshipit-source-id: b124f7fd01e94f90d8f8586555a64bd6e412040c
      c0938b8a
    • Dan Melnic's avatar
      Allow changing the Sleeper sleep interval · d7736cff
      Dan Melnic authored
      Summary: Allow changing the Sleeper sleep interval
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23591682
      
      fbshipit-source-id: 81b55fa699362d62e436c599c38046d15fecee37
      d7736cff
    • Zhaodong Wang's avatar
      Return erased size in erase_if · 0a1b471e
      Zhaodong Wang authored
      Summary:
      To have parity with C++20 `std::erase_if`: https://en.cppreference.com/w/cpp/container/unordered_set/erase_if
      
      Added a return value for `folly::erase_if` for the number of the removed elements.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23779631
      
      fbshipit-source-id: cea42b90557dd570db8e010d68c2b9ecf0bcc515
      0a1b471e
  8. 22 Sep, 2020 5 commits
    • Nick Terrell's avatar
      Fix 1-byte heap overrun · cfd29074
      Nick Terrell authored
      Summary: Fix 1-byte buffer overrun when parsing the string "\t".
      
      Reviewed By: mhlakhani
      
      Differential Revision: D22931605
      
      fbshipit-source-id: a90d0a64b882ed8fef96285d47e11fa082178449
      cfd29074
    • Andrii Grynenko's avatar
      Fix builds on windows · ef52bd9a
      Andrii Grynenko authored
      Summary:
      Move ContextPrimaryPtr definition outside of the function.
      Rename MasterPtr to PrimaryPtr.
      
      Reviewed By: Orvid
      
      Differential Revision: D23836006
      
      fbshipit-source-id: d2ad229809fb260c485a7349eca7378e22dc66c4
      ef52bd9a
    • Andrii Grynenko's avatar
      Unwrap Observer<Observer<T>>> · 39e09616
      Andrii Grynenko authored
      Differential Revision: D23829791
      
      fbshipit-source-id: 4a13cd70f20de487ece11a1eada94467e1700b6e
      39e09616
    • Michael Lee (Engineering)'s avatar
      Check the value of `FOLLY_USE_JEMALLOC` instead of assuming defined · 0e94731b
      Michael Lee (Engineering) authored
      Summary:
      To be able to override this feature, we should check that
      `FOLLY_USE_JEMALLOC` is set to 1 rather than just set.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D22681072
      
      fbshipit-source-id: 18b35910217fd1869cc23107a50241c4ed2ed1b7
      0e94731b
    • Chad Austin's avatar
      only build exception_tracer on elf platforms with libdwarf · c43ba39c
      Chad Austin authored
      Summary: FOLLY_USE_SYMBOLIZER is too coarse of a flag to determine whether ExceptionTracer is available. Instead, use FOLLY_HAVE_ELF and FOLLY_HAVE_DWARF.
      
      Reviewed By: yfeldblum, luciang
      
      Differential Revision: D23361407
      
      fbshipit-source-id: 2326f185c98f58e7afb007befc9121a365c22e77
      c43ba39c
  9. 21 Sep, 2020 2 commits
  10. 19 Sep, 2020 1 commit
  11. 18 Sep, 2020 5 commits