1. 02 Feb, 2022 7 commits
    • Michael Voznesensky's avatar
      Expose cloneAsValue from IOBuf.h in cython IOBuf · 7e27b793
      Michael Voznesensky authored
      Summary: We need it for lego
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33910794
      
      fbshipit-source-id: 2a326f8fc41baae0db68657331f93b3d8124b8d8
      7e27b793
    • Adam Gleitman's avatar
      fix: Flip signs in Time.h's Apple version checks (#1688) · 4a8837f3
      Adam Gleitman authored
      Summary:
      When trying to bring react-native-macos up to date with 0.66, I was running into an issue getting RNTester to compile due to an error regarding redefining `clockid_t`. Other people have been seeing similar issues as per [these search results](https://github.com/facebook/folly/issues?q=clockid_t).
      
      The history behind this appears to be as follows:
      
      Several declarations in `<time.h>` were not available on Apple platforms until macOS 10.12 and iOS 10, which is why Folly needs to check the minimum version and set `FOLLY_HAVE_CLOCK_GETTIME` as needed. The problem is, the current logic as it stands right now is to set `FOLLY_HAVE_CLOCK_GETTIME = 1` (which implies that we don't need to declare them ourselves as the OS provides them for us) if...
      * ...we're building for macOS, and the minimum required version is less than 10.12, or...
      * ...we're building for iOS, and the minimum required version is less than 10.
      
      However, this doesn't make any sense. This is saying that we don't need to declare these missing APIs if we could be compiling Folly for use on an older version (i.e., macOS 10.11/iOS 9 or earlier), which is totally wrong! Instead, we ought to be checking if the versions are *at least* macOS 10.12 or iOS 10.
      
      React Native currently works around this by eliminating the minimum version check entirely with [this PR](https://github.com/facebook/react-native/pull/32715/), which is certainly a valid local fix ([the minimum iOS version for React Native apps is currently iOS 11](https://github.com/facebook/react-native/blob/1b31d6bb582768ccbe92d3c1a9e43354a8c531e5/template/ios/Podfile#L4)), but doesn't solve the problem at its core. This PR does solve the problem.
      
      I have not tested building this with a minimum version below the above thresholds for use on a modern version of macOS/iOS, but considering the discussion in https://github.com/facebook/folly/issues/1545, I think we should be safe to ignore these older versions from now on.
      
      Pull Request resolved: https://github.com/facebook/folly/pull/1688
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33483705
      
      Pulled By: Orvid
      
      fbshipit-source-id: 0fe7c556af7e5b79a7679f75d003cf81a8f412ce
      4a8837f3
    • Yicheng Wang's avatar
      remove temp directive in AsyncServerSocket · c6981b29
      Yicheng Wang authored
      Summary: ^
      
      Reviewed By: praihan
      
      Differential Revision: D33807636
      
      fbshipit-source-id: 0a0aaa533387284f758daf057529aaa7ddc3ce04
      c6981b29
    • Dan Melnic's avatar
      Add support for Linux TCP zerocopy RX · a02ba06a
      Dan Melnic authored
      Summary:
      Add support for Linux TCP zerocopy RX
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: simpkins
      
      Differential Revision: D32741177
      
      fbshipit-source-id: 412981fdd4a27437d6f22a80dc7c5fc864335ddf
      a02ba06a
    • Kenny Yu's avatar
      delete detail::getSingletonStackTrace · 886ed94b
      Kenny Yu authored
      Summary: This removes `detail::getSingletonStackTrace` in favor of `symbolizer::getStackTraceStr`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33783970
      
      fbshipit-source-id: 416ff70abb79ce4e9c3180c0872432ae2966effc
      886ed94b
    • Yedidya Feldblum's avatar
      recursive function · 9adda7dd
      Yedidya Feldblum authored
      Summary:
      Check that recursion builds with specific versions of gcc. Fix failures with that version.
      
      Addresses these failures:
      
      ```
      In file included from folly/test/FunctionTest.cpp:17:
      folly/Function.h: In substitution of 'template<class ReturnType, class ... Args> template<class F, class R> using IfSafeResult = folly::detail::function::IfSafeResultImpl<R, ReturnType> [with F = folly::Function<RecFolly()>; R = RecFolly; ReturnType = RecFolly; Args = {}]':
      folly/Function.h:761:7:   required by substitution of 'template<class Signature, class> folly::Function<RecFolly()>::Function(folly::Function<F>&&) [with Signature = RecFolly(); <template-parameter-1-2> = <missing>]'
      folly/Function.h:293:40:   required by substitution of 'template<class From, class To, class> using IfSafeResultImpl = decltype ((void)(static_cast<To>(declval<From>()))) [with From = RecFolly; To = RecFolly; <template-parameter-1-3> = void]'
      folly/Function.h:363:9:   required by substitution of 'template<class ReturnType, class ... Args> template<class F, class R> using IfSafeResult = folly::detail::function::IfSafeResultImpl<R, ReturnType> [with F = folly::Function<RecFolly()>; R = RecFolly; ReturnType = RecFolly; Args = {}]'
      folly/Function.h:761:7:   required by substitution of 'template<class Signature, class> folly::Function<RecFolly()>::Function(folly::Function<F>&&) [with Signature = RecFolly(); <template-parameter-1-2> = <missing>]'
      folly/Function.h:293:40:   required by substitution of 'template<class From, class To, class> using IfSafeResultImpl = decltype ((void)(static_cast<To>(declval<From>()))) [with From = RecFolly; To = RecFolly; <template-parameter-1-3> = void]'
      folly/Function.h:363:9:   [ skipping 501 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
      folly/Function.h:363:9:   required by substitution of 'template<class ReturnType, class ... Args> template<class F, class R> using IfSafeResult = folly::detail::function::IfSafeResultImpl<R, ReturnType> [with F = folly::Function<RecFolly()>; R = RecFolly; ReturnType = RecFolly; Args = {}]'
      folly/Function.h:761:7:   required by substitution of 'template<class Signature, class> folly::Function<RecFolly()>::Function(folly::Function<F>&&) [with Signature = RecFolly(); <template-parameter-1-2> = <missing>]'
      folly/Function.h:293:40:   required by substitution of 'template<class From, class To, class> using IfSafeResultImpl = decltype ((void)(static_cast<To>(declval<From>()))) [with From = RecFolly; To = RecFolly; <template-parameter-1-3> = void]'
      folly/Function.h:363:9:   required by substitution of 'template<class ReturnType, class ... Args> template<class F, class R> using IfSafeResult = folly::detail::function::IfSafeResultImpl<R, ReturnType> [with F = folly::Function<RecFolly()>; R = RecFolly; ReturnType = RecFolly; Args = {}]'
      folly/Function.h:761:7:   required by substitution of 'template<class Signature, class> folly::Function<RecFolly()>::Function(folly::Function<F>&&) [with Signature = RecFolly(); <template-parameter-1-2> = <missing>]'
      folly/test/FunctionTest.cpp:212:54:   required from here
      folly/Function.h:363:9: fatal error: template instantiation depth exceeds maximum of 512 (use '-ftemplate-depth=' to increase the maximum)
        363 |   using IfSafeResult = IfSafeResultImpl<R, ReturnType>;
            |         ^~~~~~~~~~~~
      compilation terminated.
      ```
      
      ```
      In file included from folly/test/FunctionTest.cpp:17:
      folly/Function.h: In member function 'virtual void Function_SelfMove_Test::TestBody()':
      folly/Function.h:709:70: error: 'f.folly::Function<int()>::exec_' is used uninitialized in this function [-Werror=uninitialized]
        709 |   Function(Function&& that) noexcept : call_(that.call_), exec_(that.exec_) {
            |                                                                 ~~~~~^~~~~
      folly/Function.h: In member function 'virtual void Function_SelfMove2_Test::TestBody()':
      folly/Function.h:709:70: warning: 'f.folly::Function<int()>::exec_' may be used uninitialized in this function [-Wmaybe-uninitialized]
        709 |   Function(Function&& that) noexcept : call_(that.call_), exec_(that.exec_) {
            |                                                                 ~~~~~^~~~~
      folly/Function.h: In member function 'virtual void Function_SelfStdSwap_Test::TestBody()':
      folly/Function.h:709:70: error: 'f.folly::Function<int()>::exec_' is used uninitialized in this function [-Werror=uninitialized]
        709 |   Function(Function&& that) noexcept : call_(that.call_), exec_(that.exec_) {
            |                                                                 ~~~~~^~~~~
      folly/Function.h:709:70: warning: 'f.folly::Function<int()>::exec_' may be used uninitialized in this function [-Wmaybe-uninitialized]
        709 |   Function(Function&& that) noexcept : call_(that.call_), exec_(that.exec_) {
            |                                                                 ~~~~~^~~~~
      folly/Function.h:709:70: warning: 'f.folly::Function<int()>::exec_' may be used uninitialized in this function [-Wmaybe-uninitialized]
        709 |   Function(Function&& that) noexcept : call_(that.call_), exec_(that.exec_) {
            |                                                                 ~~~~~^~~~~
      ```
      
      Notes:
      * For some versions of gcc, the compiler sees the converting-move-ctor as a better match than the actual move-ctor and this leads the compiler to infinite recursion; to work around this, explicitly exclude the same-type case of the converting-move-ctor.
      * `std::exchange` on `exec_` would be incorrect for self-move because of order of operations.
      * `std::exchange` on `call_` might be correct but it would be an extra template instantiation which is not desireable for `folly::Function`.
      
      Differential Revision: D33881266
      
      fbshipit-source-id: 5403b83498b9c1afa772564246eba4f112495761
      9adda7dd
    • Chad Austin's avatar
      limit parallelism based on available RAM · fa2f89f9
      Chad Austin authored
      Summary:
      A long time ago, getdeps scheduled each build up to the number of hardware threads. For some builds, that was too heavy, so it got throttled back to only ever use half the hardware threads. This left parallelism on the table for CPU-bound projects that don't use much RAM per compilation.
      
      This commit makes better use of the hardware with finer-grained logic that allows each manifest to specify a `job_weight_mib` estimate in MiB, and limit concurrency to `available_ram / job_weight`.
      
      Reviewed By: ahornby
      
      Differential Revision: D33754018
      
      fbshipit-source-id: 785bed6c6cfe3c473244e0806a77cec1fc119e1f
      fa2f89f9
  2. 01 Feb, 2022 5 commits
    • Yedidya Feldblum's avatar
      atomic_fetch_flip · aa68792c
      Yedidya Feldblum authored
      Summary:
      The flip operation, like the set and reset operations, are optimizable on x86-related architectures using the `btc` instruction, compared with `bts` and `btr` for set and reset operations.
      
      The optimization is done for gnu-like compilers. However, for MSVC, there is no interlocked intrinsic for `btc`, so the optimization is not done.
      
      Reviewed By: luciang
      
      Differential Revision: D32049844
      
      fbshipit-source-id: 5f60f8c4c534fb0ee41d76c5d766f96f7ff94892
      aa68792c
    • Chad Austin's avatar
      update to checkout@v2 · 49bf3d46
      Chad Austin authored
      Summary:
      checkout@v2 is the current action version, and the old one may have
      security issues. Let's just run with the latest version.
      
      Reviewed By: ahornby
      
      Differential Revision: D33834847
      
      fbshipit-source-id: fba0733577bf23c208c9824aa3815bd01a813d9a
      49bf3d46
    • Chad Austin's avatar
      update all github action workflows · 6a80f70a
      Chad Austin authored
      Summary:
      I'm about to upgrade from checkout v1 to checkout v2. First, update
      the GitHub action workflows for all projects.
      
      Reviewed By: ahornby
      
      Differential Revision: D33834784
      
      fbshipit-source-id: f4cba24f1a589588dbfaf7ad7ada7122dd8284cb
      6a80f70a
    • Xavier Deguillard's avatar
      eden: do not copy public_autocargo in internal builds · ea1dd511
      Xavier Deguillard authored
      Summary:
      The public_autocargo is for external builds, not internal ones as they contain
      references to git repository, while the non-public_autocargo refers to path in
      fbcode. In Sandcastle, git repositories can fail to be accessed due to lack fo
      proxies, thus we shouldn't access them.
      
      Reviewed By: kmancini
      
      Differential Revision: D33907864
      
      fbshipit-source-id: 3f2006607676cebd92201560365d179231214db4
      ea1dd511
    • Yedidya Feldblum's avatar
      bump googletest to 1.11.0 · 568f1c60
      Yedidya Feldblum authored
      Summary: Release notes are: https://github.com/google/googletest/releases/tag/release-1.11.0.
      
      Reviewed By: bigfootjon
      
      Differential Revision: D33868235
      
      fbshipit-source-id: 57b0e118d6ebadbaf634caccec50a0dd87f34fc8
      568f1c60
  3. 31 Jan, 2022 4 commits
    • Alex Hornby's avatar
      workaround for getdeps builds · 8d41a264
      Alex Hornby authored
      Summary: Workaround for getdeps builds of edenfs
      
      Reviewed By: fanzeyi
      
      Differential Revision: D33896917
      
      fbshipit-source-id: 9aed609ca6d5b209cda4fc7eecb52e5cfa9f6dac
      8d41a264
    • Alex Hornby's avatar
      move cargo logic to cargo.py · 8ff3267e
      Alex Hornby authored
      Summary:
      Move cargo logic to separate file as builder.py was getting a bit large
      
      It's just a move of source file for CargoBuilder.  Diff looks a bit big as I did hg cp to preserve history
      
      Differential Revision: D33888925
      
      fbshipit-source-id: 2d57343535ab087e09876edba4d00a6f0234fcd0
      8ff3267e
    • Michael Voznesensky's avatar
      Add empty IOBuf ctor to folly cython, to match IOBuf.h · 7725223a
      Michael Voznesensky authored
      Summary: Title
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33873064
      
      fbshipit-source-id: 65b16ad30a7bf9f2b9e23857f072d33c94098899
      7725223a
    • Alex Hornby's avatar
      add autocargo for hgclientconf · 5da36fa6
      Alex Hornby authored
      Summary: Generate cargo files for hgclientconf
      
      Reviewed By: yancouto
      
      Differential Revision: D33843589
      
      fbshipit-source-id: d9b3452be684fcaa727c0c0a1175c1d8954bf9f2
      5da36fa6
  4. 29 Jan, 2022 6 commits
    • Yedidya Feldblum's avatar
      avoid append-va-arg in FOLLY_SAFE_CHECK · 53e82da0
      Yedidya Feldblum authored
      Summary:
      Since clang has a mode which rejects the append-va-arg construct as implemented in `FOLLY_PP_DETAIL_APPEND_VA_ARG`.
      
      Do this by avoiding appending va-args to other args. Instead, take advantage of `operator()` as a workaround.
      
      Avoids:
      ```
      folly/Preprocessor.h:72:46: error: token pasting of ',' and __VA_ARGS__ is a GNU extension [-Werror,-Wgnu-zero-variadic-macro-arguments]
      #define FOLLY_PP_DETAIL_APPEND_VA_ARG(...) , ##__VA_ARGS__
                                                   ^
      ```
      
      Reviewed By: luciang
      
      Differential Revision: D33863906
      
      fbshipit-source-id: 14912aca73e332ab811db4c0ac772a2d224a0666
      53e82da0
    • Yedidya Feldblum's avatar
      atomic-fetch-bit-op check functions · 84ff4e5f
      Yedidya Feldblum authored
      Summary: So that we may easily inspect the generated code.
      
      Reviewed By: ot, luciang
      
      Differential Revision: D32161049
      
      fbshipit-source-id: 00ca6f4196518389f7b1b18d9278085e1a3b43d2
      84ff4e5f
    • Yedidya Feldblum's avatar
      mark Function exec pointer as noexcept · 68b03455
      Yedidya Feldblum authored
      Summary:
      Function implements move and nuke operations via a type-erased pointer to an exec function. Both operations are explicitly noexcept but the function pointer which these operations call is not marked as noexcept. So the compiler emits unnecessary exception-handling code/data around the call. The exception-handling stuff make generated code larger and in theory may also hinder possible optimizations.
      
      But when the exec function pointer as marked as `noexcept`, the compiler may elide the exception-handling stuff, shrinking generated code and in theory permitting a class of optimizations.
      
      It is not possible for the underlying move operation to throw an exception since, if the move operation of the contained callable could throw an exception, the contained callable would be on-heap and not in-situ, and the underlying move operation would just be an infallible relocation of the in-situ `Function` state.
      
      It is possible for the underlying nuke operation to throw an exception since the destructor of the contained callable could throw an exception. But this is rare. In this case, the exec function would contain exception-handling stuff; but in general, it would not. And this would merely moves where the exception-handling stuff is for the nuke operation, from one side of the type-erasure to the other side.
      
      Reviewed By: ot, philippv, luciang
      
      Differential Revision: D32904616
      
      fbshipit-source-id: 5853a2d81a30bef565b350b72f5f35e6c9c9a45b
      68b03455
    • Yedidya Feldblum's avatar
      tweak symbolizer max-expected-frame-size for 32-bit · b1cf29bd
      Yedidya Feldblum authored
      Summary:
      Avoids:
      ```
      folly/experimental/symbolizer/StackTrace.cpp:192:15: error: the pointer incremented by 68719476736 refers past the last possible element for an array in 32-bit address space containing 64-bit (8-byte) elements (max possible 536870912 elements) [-Werror,-Warray-bounds]
                    normalStackFrame + kMaxExpectedStackFrameSize)) {
                    ^                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
      ```
      
      Reviewed By: kennyyu, luciang
      
      Differential Revision: D33837703
      
      fbshipit-source-id: 0ca6b7ba6c2f76d0be3c54c9784c305125b525df
      b1cf29bd
    • Yedidya Feldblum's avatar
      a benchmark program for atomic-fetch-bit-op · f4fa2a3f
      Yedidya Feldblum authored
      Summary: To measure `atomic_fetch_set` across sizes and behaviors.
      
      Reviewed By: luciang
      
      Differential Revision: D32262813
      
      fbshipit-source-id: 84510e85368cb5e012ddc8bbf2ca159444659f20
      f4fa2a3f
    • Max Katsev's avatar
      Add atomic_ref::exchange · 914047bd
      Max Katsev authored
      Reviewed By: ot
      
      Differential Revision: D33857528
      
      fbshipit-source-id: 265457c5771684d6830a16a3b7390e9bd99b277d
      914047bd
  5. 28 Jan, 2022 6 commits
    • Kenny Yu's avatar
      add symbolizer::getStackTrace to replace detail::getSingletonStackTrace · 2b99b21b
      Kenny Yu authored
      Summary:
      Currently, `getSingletonStackTrace` is in the logically private `detail`
      namespace. This adds `symbolizer::getStackTrace` to replace `detail::getSingletonStackTrace`,
      and this new location mirrors the existing `symbolizer::getAsyncStackTrace`.
      
      The changes will be done in multiple parts:
      - Add the new version
      - Modify all internal callers to use the new version
      - Delete the old version
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33783972
      
      fbshipit-source-id: 137a1d654aea5a451bb90ca12e1916f91589b0df
      2b99b21b
    • Yedidya Feldblum's avatar
      FOLLY_SAFE_FATAL · c24b947e
      Yedidya Feldblum authored
      Summary: Like `FOLLY_SAFE_CHECK(true, ...)`.
      
      Reviewed By: luciang
      
      Differential Revision: D33801512
      
      fbshipit-source-id: c9023f4b14e0b045c654c15a8f2b9ea0cc384617
      c24b947e
    • Zeyi (Rice) Fan's avatar
      fix Windows build · e03edde8
      Zeyi (Rice) Fan authored
      Reviewed By: yns88
      
      Differential Revision: D33850004
      
      fbshipit-source-id: f01c3508c91049c3fc4f72bec14683b50332df77
      e03edde8
    • Eugene Poliukhovych's avatar
      Set ASAN fiber stack overhead to 4x from 16x · cafcd901
      Eugene Poliukhovych authored
      Summary:
      Originally set in D1315038, 16x overhead for stacksize for ASAN was too
      pessimistic. The assumption that pre-allocating fiber stacks does not increase
      process RSS was incorrect. As a result, fiber-heavy services consume way too
      much memory when ASAN is enabled.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33754702
      
      fbshipit-source-id: 7d0f3eb8aff8f3b7d17ac4a4960f5072822df05f
      cafcd901
    • Akrama Baig Mirza's avatar
      Add thread ID collection to IOThreadPoolExecutor for dogpiles · 90781bd9
      Akrama Baig Mirza authored
      Summary:
      - Use `ThreadIdWorkerProvider` in `IOThreadPoolExecutor` for Thrift dogpiles
      - Only enable thread ID collection in `IOThreadPoolExecutor` if `THRIFT_FLAG(enable_io_queue_lag_detection)` is enabled
      
      Reviewed By: yfeldblum
      
      Differential Revision: D32815984
      
      fbshipit-source-id: 9c923e44ca0e3ac93697f7332ac34a95b4c784cb
      90781bd9
    • Xavier Deguillard's avatar
      fmt: update fmt to 8.0.1 · 93c44c56
      Xavier Deguillard authored
      Summary:
      In buck builds, fmt is at 8.0.1 which isn't entirely compatible with fmt 7 that
      getdeps uses. Let's sync up the version.
      
      Reviewed By: chadaustin
      
      Differential Revision: D33832051
      
      fbshipit-source-id: 7de71c4b675f220c0aa5b418c3466d65d78e9292
      93c44c56
  6. 27 Jan, 2022 9 commits
    • Marcus Holland-Moritz's avatar
      Mark potentially unused argument with [[maybe_unused]] (#1697) · 14f796e0
      Marcus Holland-Moritz authored
      Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1697
      
      Reviewed By: Gownta
      
      Differential Revision: D33483753
      
      Pulled By: Orvid
      
      fbshipit-source-id: d08291b5d02c61e461322edd332bb5a6e744ff96
      14f796e0
    • Muir Manders's avatar
      backingstore: conditionalize use of "fb" feature · 08fd3613
      Muir Manders authored
      Summary: Don't set the "fb" cargo feature via cmake unless we are in fb build.
      
      Reviewed By: quark-zju
      
      Differential Revision: D33781554
      
      fbshipit-source-id: 39c61dc1631ebfd8a2c858b5e214c6a09ce0b005
      08fd3613
    • Mingtao Yang's avatar
      AsyncSSLSocketTest: Fix an LSAN error · e877c2ae
      Mingtao Yang authored
      Summary:
      SSLAcceptRunnerFiberCloseSessionCb was leaking the SSL_SESSION because it set a
      custom server SSL session callback handler that did not properly manage the
      SSL_SESSION that it was given.
      
      Reviewed By: modiking
      
      Differential Revision: D33807657
      
      fbshipit-source-id: 5eeaecfef5df1f1d281abe2918f9926a969ab84d
      e877c2ae
    • Alex Hornby's avatar
      populate THRIFT_INCLUDE_PATH · 6cc80fd5
      Alex Hornby authored
      Summary:
      Populate the new environment variable if relevant path for it found.
      
      For the OSS getdeps builds of things depending on fb303 this will allow them to be able to be able to find the fb303 thrift files from the declared fb303 dependency, rather than needing duplicates/stubs inside each package.
      
      Also adds python as dependency to fbthrift manifest,  found it needed it when testing
      
      Reviewed By: HarveyHunt
      
      Differential Revision: D33771979
      
      fbshipit-source-id: 9635221c0e6a2ac225d7d0babe76f1c919b583de
      6cc80fd5
    • Andrii Grynenko's avatar
      Fix coroutine integration with Expected on GCC · e77f06df
      Andrii Grynenko authored
      Summary: The same logic that was gated for MSVC is applicable to GCC as well (note that it had to be fixed).
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33799604
      
      fbshipit-source-id: 34bd7159c0cc37b5d49d631f715339512bfc4ddd
      e77f06df
    • Akrama Baig Mirza's avatar
      Use Options struct in IOThreadPoolExecutor constructor · 0d2f150b
      Akrama Baig Mirza authored
      Summary: Avoid using `bool` directly in `IOThreadPoolExecutor` constructor
      
      Reviewed By: yfeldblum, praihan
      
      Differential Revision: D33769477
      
      fbshipit-source-id: ba16d676d2130c7680c960cd27f43174f06d0475
      0d2f150b
    • Yedidya Feldblum's avatar
      avoid tail calls in the stack-trace test example · 9ad0307f
      Yedidya Feldblum authored
      Summary: The test looks for every function in its list of functions to be present in the example stack-trace. But, depending on optimizations, the compiler may transform some of the calls to tail calls, in which case the calling functions would be elided from the stack-trace. Prevent those tail calls.
      
      Reviewed By: kennyyu
      
      Differential Revision: D33797857
      
      fbshipit-source-id: 1c20c19bc612cebbc6a30466ef8deb54713b1497
      9ad0307f
    • Victor Zverovich's avatar
      Fix compilation with fmt 8.x · 7774051a
      Victor Zverovich authored
      Summary:
      Fix a bunch of issues that a blocking migration to fmt 8.x:
      
      * Missing includes
      * Use of deprecated APIs
      * Ambiguous calls to unqualified `format` (can be fmt or folly)
      * Unused result of `fmt::format`
      * Missing path formatter
      * Passing runtime format string
      
      Reviewed By: xavierd
      
      Differential Revision: D33767880
      
      fbshipit-source-id: 3976c4cc0551f3fb42c05a04c29e1c9723245749
      7774051a
    • Nolan O'Brien's avatar
      Fix -Wstring-conversion warnings · 77a2e332
      Nolan O'Brien authored
      Summary:
      clang is particular about not treating strings as booleans, but it offers an "out" by using `expr && "string"` specifically for the use cases of `assert` like ours
      
      **Before**
      ```
      assert(!"Should never happen!"); <-- clang warning: -Wstring-conversion
      ```
      
      **After**
      ```
      assert(false && "Should never happen!");  <-- no clang warning
      ```
      
      Reviewed By: yfeldblum
      
      Differential Revision: D33796849
      
      fbshipit-source-id: bd48139d0db04d50572e9ada29da777551774f84
      77a2e332
  7. 26 Jan, 2022 3 commits
    • Alex Hornby's avatar
      use same python3 as other getdeps builds · af1b432c
      Alex Hornby authored
      Summary: Bring fboss in line with other oss builds
      
      Reviewed By: shri-khare
      
      Differential Revision: D33620345
      
      fbshipit-source-id: 26e51230e4ae3c950eca2cb366a9fa55d5c1dfee
      af1b432c
    • Alex Hornby's avatar
      update fboss gtest usage for cmake 3.20+ and centos stream 8 · 4c792bf0
      Alex Hornby authored
      Summary:
      Need to specify both gtest and gmock includes like folly does
      
      Centos stream 8 doesn't have libmnl-static, and needed different alias for nl-route-3
      
      Reviewed By: shri-khare
      
      Differential Revision: D33537568
      
      fbshipit-source-id: 506ef13224e71b874f8a43b52474f39da14a8d67
      4c792bf0
    • Yedidya Feldblum's avatar
      add missing {} in LifoSem · 92ee56a3
      Yedidya Feldblum authored
      Reviewed By: magedm
      
      Differential Revision: D33763949
      
      fbshipit-source-id: 779c2a3d0337a357395a2554e810e7b0903a86d6
      92ee56a3