1. 15 Jan, 2020 8 commits
    • Shrikrishna Khare's avatar
      fbcode_builder: getdeps: fboss remove OpenNSL manifest · dafd4506
      Shrikrishna Khare authored
      Summary:
      Broadcom has formally replaced OpenNSL with newer OpenNSA:
      https://github.com/Broadcom-Network-Switching-Software/OpenNSA/blob/master/README.md
      
      With D16401189, FBOSS no longer depends on OpenNSL, but uses the new OpenNSA
      instead. Remove this manifest.
      
      Reviewed By: wez
      
      Differential Revision: D19413708
      
      fbshipit-source-id: f3662f1101d59a5e0e59cb7238797d652564ff90
      dafd4506
    • Yedidya Feldblum's avatar
      Use getrandom instead of /dev/urandom when available · 6fc7dd10
      Yedidya Feldblum authored
      Summary:
      [Folly] Use `getrandom` instead of `/dev/urandom` when available.
      
      The C library function `getrandom` is available on linux >= 3.17 and glibc >= 2.25.
      
      Reviewed By: ot, simpkins, luciang
      
      Differential Revision: D19211519
      
      fbshipit-source-id: 07e7e856fc81d1f04efca4a6cfa0b76ada08f443
      6fc7dd10
    • Eric Niebler's avatar
      make msan happy with exception_wrapper · 44e0aff1
      Eric Niebler authored
      Summary:
      When reading a `std::exception_ptr` out of a moved-from `folly::exception_wrapper`, we end up reading a `std::exception_ptr` field of a deleted `ExceptionPtr` object. This was causing MSAN much consternation.
      
      The fix is to test for emptiness in `to_exception_ptr` and return a default-constructed `std::exception_ptr`.
      
      This commit also adds extra test cases, since `to_exception_ptr` does something slightly different depending on whether the `exception_wrapper` object is `const` or not.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19403528
      
      fbshipit-source-id: fde74a5c4b2ddb2025703432c1ac5a19d26b9426
      44e0aff1
    • Kirk Shoop's avatar
      prevent asan failures in SingletonThreadLocal · 9450078d
      Kirk Shoop authored
      Summary:
      I have been encountering
      
      ```
      AddressSanitizer:DEADLYSIGNAL
      =================================================================
      ==937752==ERROR: AddressSanitizer: SEGV on unknown address 0x24a12000e4f18 (pc 0x7f3902a6e696 bp 0x7f37bc5e4380 sp 0x7f37bc5e42a0 T107)
      ==937752==The signal is caused by a READ memory access.
      SCARINESS: 20 (wild-addr-read)
      
          #0 0x7f3902a6e695 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::Wrapper, void, void>::get() const folly/ThreadLocal.h:160
          #1 0x7f3902a6d600 in get folly/ThreadLocal.h:69
          #2 0x7f3902a6d600 in folly::ThreadLocal<folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::Wrapper, void, void>::operator*() const folly/ThreadLocal.h:78
          #3 0x7f3902a6ca1b in folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::getWrapper() folly/SingletonThreadLocal.h:149
          #4 0x7f3902a6cbe5 in folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::LocalLifetime::~LocalLifetime() folly/SingletonThreadLocal.h:121
          #5 0x7f38f04d9fd5 in (anonymous namespace)::run(void*) /data/users/kirkshoop/gcc/trunk/libstdc++-v3/libsupc++/atexit_thread.cc:75:16
          #6 0x7f38ef9ee551 in __nptl_deallocate_tsd.part.8 /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/nptl/pthread_create.c:301:8
          #7 0x7f38ef9ef7c8 in __nptl_deallocate_tsd /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/sysdeps/nptl/futex-internal.h:200:3
          #8 0x7f38ef9ef7c8 in start_thread /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/nptl/pthread_create.c:475:3
      ```
      
      I tried using a unique Tag for the SingletonThreadLocal for debugging purposes and this seemed to fix the issue.
      
      Reviewed By: magedm
      
      Differential Revision: D19356179
      
      fbshipit-source-id: a18c6b02f0a40e0509753075614eeff71d859bf7
      9450078d
    • Shrikrishna Khare's avatar
      OpenNSA: Don't use opennsl, switch to bcm-only API · 8dc11efb
      Shrikrishna Khare authored
      Summary:
      With the release of OpenNSA (https://github.com/Broadcom-Network-Switching-Software/OpenNSA), we can stop using opennsal altogether!
      
      This diff was created using following steps:
      
      cd fboss/agent
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/opennsl_spl_//g' {} \;
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/opennsl/bcm/g' {} \;
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/OPENNSL/BCM/g' {} \;
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/OpenNSL/Bcm/g' {} \; # for symbols like snmpBcmTransmittedPkts2048to4095Octets
      
      Furthermore:
      
      - In all TARGETS under fboss/agent replace wrapped_opennsl_symbols with wrapped_bcm_symbols.
      - hg mv agent/facebook/test/OpenNSLInterface.h agent/facebook/test/BcmInterface.h
      - BcmEgress.cpp remove operator== overload for opennsl API altogether, and remove operator== BCM API version from inside unnamed namespace, and put it in fboss namespace.
      - BcmCinter.h and BcmCinter.cpp now have some duplicate definitions as opennsl_ got renamed to bcm_. Delete one of the definitions "as appropriate".
      - Similarly, remove duplicate definitions in FakeSdk.h and FakeSdk.cpp
      - Similarly, remove duplicate definitions in SdkTracer.cpp (remove definitions calling CALL_WRAPPERS_RV_NO_CINTER). And lastly, remove CALL_WRAPPERS_RV_NO_CINTER itself.
      - arc lint
      - Remove OpennslCompatTests.cpp
      - Fix ./agent/hw/bcm/tests/facebook/BcmEgressTest.cpp to have #include
        "fboss/agent/facebook/test/MockOpenNSL.h" instead of MockBcm.h
      
      TODO:
      - This patch retains the directory structure (facebook/ subdirectory), which will be fixed in subsequent patches.
      - Remove opennsl references from TARGETS file, additional cleanup etc.
      - Remove all oss directories...
      
      Differential Revision: D16401189
      
      fbshipit-source-id: 607b6c0f97ffcacf3707f6b7a4c9454cc0b24476
      8dc11efb
    • Shrikrishna Khare's avatar
      fbcode_builder: getdeps: fboss: rename OpenBCM to OpenNSA · 0449e7e4
      Shrikrishna Khare authored
      Summary:
      Broadcom provides this library and they decided to rename it from OpenBCM to
      OpenNSA. Thus, rename corresponding fbcode_builder code.
      
      Reviewed By: wez
      
      Differential Revision: D19396687
      
      fbshipit-source-id: 8233dbf4de9342b5a0e54ae275d6c73d43abe6d0
      0449e7e4
    • Yedidya Feldblum's avatar
      Cut unused AsyncSocketException::SASL_HANDSHAKE_TIMEOUT · 777263f8
      Yedidya Feldblum authored
      Summary: [Folly] Cut unused `AsyncSocketException::SASL_HANDSHAKE_TIMEOUT`.
      
      Reviewed By: vitaut
      
      Differential Revision: D19343864
      
      fbshipit-source-id: ed4374bc2b376ff71e592323ed8c37290700e870
      777263f8
    • Konstantin Tsoy's avatar
      Add recvmmsg · be83edaf
      Konstantin Tsoy authored
      Summary: Add recvmmsg
      
      Differential Revision: D18927890
      
      fbshipit-source-id: de500dd1c266f21fbfc39c2972df787da50c7a80
      be83edaf
  2. 14 Jan, 2020 3 commits
  3. 13 Jan, 2020 7 commits
    • Phil Willoughby's avatar
      add FOLLY_ATTR_NO_UNIQUE_ADDRESS · 4ed21909
      Phil Willoughby authored
      Summary:
      Add `FOLLY_NO_UNIQUE_ADDRESS ` to expose C++20's `[[no_unique_address]]` where available.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: pixelb
      
      Differential Revision: D19375089
      
      fbshipit-source-id: 9a83ae791002e02df5b93b61f20209e5f467a959
      4ed21909
    • Igor Sugak's avatar
      disable VDSO getcpu optimization in MSAN build mode · e1af1b05
      Igor Sugak authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19359860
      
      fbshipit-source-id: b084d8cd603238e76d61de1eed3f233cf5b7fb27
      e1af1b05
    • Igor Sugak's avatar
      disable VDSO clock_gettime optimization in MSAN build mode · 800e1f62
      Igor Sugak authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19359673
      
      fbshipit-source-id: 610ae77e205038267e0e331a04486eef0329c165
      800e1f62
    • Felix Handte's avatar
      IOBuf: Add goodSize() Allocation-Sizing Method · a113000d
      Felix Handte authored
      Summary:
      For long-lived IOBufs, it can be useful to know whether their memory footprint
      can be usefully shrunk. This diff exposes a method that lets users see the
      smallest capacity an IOBuf could have while wrapping a particularly sized
      object.
      
      Without this, they have to do hacky math.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D18440359
      
      fbshipit-source-id: 1324700b58f0b2762cb3347b907ca5e04ebecb99
      a113000d
    • Gabriel Russo's avatar
      Remove unused initializer from abstract DefaultKeepAliveExecutor · 3c712d67
      Gabriel Russo authored
      Summary: This constructor would never be called since the class is abstract (the method `add` from `Executor` is not implemented). This causes a warning which fails builds because of `-Werror`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19345492
      
      fbshipit-source-id: 20f185e0903a03acbde2e55e5a575e20deb5ad2a
      3c712d67
    • Gabriel Russo's avatar
      Rename variable to remove shadow warning on FiberManagerInternal.h · 0ded2678
      Gabriel Russo authored
      Summary: This variable shadows the field `options_`, so rename it to get rid of the warning `constructor parameter 'options_' shadows the field 'options_' of 'FiberManager'` (which is turned into an error because of `-Werror`). This happens on clang 8.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19331755
      
      fbshipit-source-id: 3615cf9b6c7516775f1dc198a08bc784a52c0fb4
      0ded2678
    • Dan Melnic's avatar
      Add non persistent events overflow tests · 50135cdf
      Dan Melnic authored
      Summary: Add non persistent events overflow tests
      
      Reviewed By: danobi, kevin-vigor
      
      Differential Revision: D19349804
      
      fbshipit-source-id: 360d1f41d074b3d1af5f163213dadfc35f28c353
      50135cdf
  4. 11 Jan, 2020 2 commits
    • Igor Sugak's avatar
      default initialize Synchronized test data · dec61fcb
      Igor Sugak authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19357723
      
      fbshipit-source-id: d099419271f74b013a276079723250ce842e2b24
      dec61fcb
    • Yedidya Feldblum's avatar
      Fix evaluation-order assumption in futures varidic collect · 087f5273
      Yedidya Feldblum authored
      Summary: [Folly] Fix evaluation-order assumption in futures varidic collect - argument evaluation order is unspecified so it must not be relied on when side-effects must occur in a specific order.
      
      Reviewed By: lewissbaker
      
      Differential Revision: D19347873
      
      fbshipit-source-id: db4326d995a241619f96ff2bacdf5a5fa2332091
      087f5273
  5. 10 Jan, 2020 4 commits
  6. 09 Jan, 2020 6 commits
    • generatedunixname89002005287564's avatar
      Remove dead includes in folly/stats · 4e7473be
      generatedunixname89002005287564 authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19328769
      
      fbshipit-source-id: 5d929eaa3bf4e2d0a63b8f1d95a613fee68525b4
      4e7473be
    • Dan Melnic's avatar
      Fix mem leak when running in overflow mode · 0923f2bd
      Dan Melnic authored
      Summary: Fix mem leak when running in overflow mode
      
      Reviewed By: danobi
      
      Differential Revision: D19333236
      
      fbshipit-source-id: f8a93113d095cb227808c9c8e5704112c7f5c4fb
      0923f2bd
    • Eric Niebler's avatar
      Remove folly's ColdClass, which was of dubious utility · 26f1c45b
      Eric Niebler authored
      Summary: `folly::cold_detail::ColdClass` was marking things (like `folly::Unexpected`) cold, but at the cost of inhibiting the inliner from doing its job. This is leading to bad codegen, which offsets any small wins we mind get for the `cold` attribute.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19324159
      
      fbshipit-source-id: 7ed431b6c9d6e963c3bf438c707fa6cf6a38bf9d
      26f1c45b
    • Wez Furlong's avatar
      getdeps: dyndeps: gracefully handle empty files · c125c65e
      Wez Furlong authored
      Summary:
      Don't error out if we can't read the ELF/MACH-O header; just treat
      it is not an object.
      
      Reviewed By: chadaustin, simpkins
      
      Differential Revision: D19253434
      
      fbshipit-source-id: c5ecc7f0bc7a20e2611b7e2ff754355155f095da
      c125c65e
    • Gabriel Russo's avatar
      Remove static from for_each_impl · 821088c5
      Gabriel Russo authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19312260
      
      fbshipit-source-id: 9751f70ac83d801cbc8708741e608f73cad8a464
      821088c5
    • Nick Terrell's avatar
      Remove compression counters · 870cfabf
      Nick Terrell authored
      Summary:
      We haven't found them super useful, so lets delete them and replace them with USDTs.
      
      The problems with the counters are:
      * We only have the aggregated results. We can't look at a particular process, stack trace, etc.
      * The speed reported isn't accurate.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D18319361
      
      fbshipit-source-id: 778213fb63eae90cc7900b075e054c021ecf561e
      870cfabf
  7. 08 Jan, 2020 3 commits
    • Dan Melnic's avatar
      Add IP_BIND_ADDRESS_NO_PORT AsyncSocket support. Add the ability to set the... · f9eaa745
      Dan Melnic authored
      Add IP_BIND_ADDRESS_NO_PORT AsyncSocket support. Add the ability to set the socket options pre and post bind()
      
      Summary:
      Add IP_BIND_ADDRESS_NO_PORT AsyncSocket support. Add the ability to set the socket options pre and post bind()
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: danobi
      
      Differential Revision: D19315183
      
      fbshipit-source-id: a8dc330c1f585766a00ba7724dcd9f7a6e64bbfb
      f9eaa745
    • Eric Hammerle's avatar
      Fix leak when calling AsyncSSLSocket::cancelConnect() · 3289d2ed
      Eric Hammerle authored
      Summary: AsyncSSLSocket::connect() creates a new instance of AsyncSSLSocketConnector referred with a raw pointer and passes it to AsyncSocket::connect(). AsyncSSLSocket assumed a callback irrespective of connection success or failure so that this raw pointer will be properly disposed off.  However currently, if a connect attempt is cancelled the parent class may end up clearing the connect callback without invoking a connection error, thereby causing a leak. Since the cancelConnect() function also cancels the callback, the raw pointer should be cleaned up during cancellation.
      
      Reviewed By: knekritz
      
      Differential Revision: D18365027
      
      fbshipit-source-id: 2cc171fc1a026b771dcb0bdd7c45b7ee450b97f7
      3289d2ed
    • Yedidya Feldblum's avatar
      atomic_ref · 80d0f4b4
      Yedidya Feldblum authored
      Summary: [Folly] `folly::atomic_ref`, a partial backport of `std::atomic_ref` from C++20.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D18413170
      
      fbshipit-source-id: dddaabd69d2119ee695c75b214ca1c0204edfe6b
      80d0f4b4
  8. 07 Jan, 2020 3 commits
  9. 06 Jan, 2020 4 commits
    • Yedidya Feldblum's avatar
      Rename FB_STRINGIZE · 9f739b38
      Yedidya Feldblum authored
      Summary: [Folly] Rename `FB_STRINGIZE` to `FOLLY_PP_STRINGIZE`.
      
      Reviewed By: Orvid
      
      Differential Revision: D19229502
      
      fbshipit-source-id: 8dfdb3d9d576ce6b08d35747136c93a37a31d882
      9f739b38
    • Rosen Penev's avatar
      Fix inconsistent declarations (#1295) · 01288455
      Rosen Penev authored
      Summary:
      Found with readability-inconsistent-declaration-parameter-name
      Signed-off-by: default avatarRosen Penev <rosenp@gmail.com>
      Pull Request resolved: https://github.com/facebook/folly/pull/1295
      
      Reviewed By: Orvid
      
      Differential Revision: D19249469
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: f0e98bd3f6095c20e5c25220cf814a8347e24792
      01288455
    • Yedidya Feldblum's avatar
      Write max_align_v and max_align_t using C++14 · ca78b4ce
      Yedidya Feldblum authored
      Summary:
      [Folly] Write `max_align_v` and `max_align_t` using C++14 `constexpr` syntax v.s. using the recursive approach required by C++11.
      
      Instantiates fewer function templates in each translation unit.
      
      Reviewed By: Orvid
      
      Differential Revision: D19229027
      
      fbshipit-source-id: e01ac2d428a42a6e4f86f55f5528c42f9b70cd9f
      ca78b4ce
    • Yedidya Feldblum's avatar
      Cut redundant anonymous namespace · 9be68a61
      Yedidya Feldblum authored
      Summary: [Folly] Cut redundant anonymous namespace in compression code.
      
      Reviewed By: Orvid
      
      Differential Revision: D19281237
      
      fbshipit-source-id: 634c199f307682feced2e45e1f22a34766db0ce1
      9be68a61