- 19 May, 2021 2 commits
-
-
Yedidya Feldblum authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1524 In particular, every file in `folly/experimental/symbolizer/` and `folly/experimental/exception_tracer/`. Permits including `folly/experimental/exception_tracer/` in the cmake build. Closes: https://github.com/facebook/folly/pull/1524. Reviewed By: luciang Differential Revision: D24797973 fbshipit-source-id: 664febf885432795e54827e580cfe9eac1e75fba
-
Yedidya Feldblum authored
Summary: Reimplement `folly::exception_wrapper` thrown variant not to need to cache any pointers and rather to access the exception object and runtime type, and to perform runtime upcasting, via the platform runtime. This both simplifies and extends the capability of the thrown variant. Reviewed By: phoad, luciang Differential Revision: D28415741 fbshipit-source-id: ce083cec4c31a8cc98e956c247229ac765c7f983
-
- 18 May, 2021 1 commit
-
-
Lee Howes authored
Summary: Add a separate tag to the blocking guards, derived by default from the names available in the executors. This allows more fine-grained information when reporting blocking operations on the executors. Reviewed By: yfeldblum Differential Revision: D28265296 fbshipit-source-id: 98d877ab13dc73c0b0b06edbdf15ec0e06f4d74a
-
- 17 May, 2021 2 commits
-
-
Lee Howes authored
Summary: Use the global immutable executor by default for SerialExecutor. Reviewed By: yfeldblum Differential Revision: D26916419 fbshipit-source-id: c9b68c6b9facd11c8768199f8bae3d6c9276f4bd
-
Shai Szulanski authored
Summary: The current signature results in an attempt to construct a `Try<semi_await_result_t<SemiAwaitable>>` from a `semi_await_try_result_t<SemiAwaitable>::element_type`. While the inner types match for Task, they don't for AsyncGenerator - the former is `AsyncGenerator<T>::NextResult`, which is not constructible from a T. (We could alternatively add that constructor, but that would result in timeout returning a `Task<AsyncGenerator<T>::NextResult>`, which is undesirably indirect). Reviewed By: yfeldblum Differential Revision: D28475605 fbshipit-source-id: c30a60e3ec942f801653a08b020796d47d4ef763
-
- 16 May, 2021 1 commit
-
-
Yedidya Feldblum authored
Summary: The function `folly::exception_ptr_get_type` under 32-bit arm-ehabi libc++ >= v5.0.1 and < v10.0.0-rc2, is broken because the `__cxa_exception` layout is changed in an incompatible way, with an extra 4 bytes padding incorrectly preceding the unwind field. Shift the `__cxa_exception` pointer before accessing fields through it. Major thanks to Crystal Jin <crystalj@fb.com> for help debugging the problem and testing the fix. Differential Revision: D28423734 fbshipit-source-id: fdf67fa5c1056df921fad23f86ae965761603738
-
- 14 May, 2021 1 commit
-
-
Andrii Grynenko authored
Summary: Observer initialization is blocking and is using thread-local state to detect cycles/track dependencies. When running on a fiber we have to make sure the fiber doesn't get suspended during observer initialization. Reviewed By: yfeldblum Differential Revision: D28306797 fbshipit-source-id: 807a4553e89f9fa807e6c745a623041dbb0e47ce
-
- 13 May, 2021 3 commits
-
-
Brandon Schlinker authored
Summary: Adding `addLifecycleObserver` and `removeLifecycleObserver` to support tests. Reviewed By: yfeldblum Differential Revision: D27163395 fbshipit-source-id: de749b2570c71a3f98cbbc8569c2990ce2c5be0c
-
Brandon Schlinker authored
Summary: When multiple observers attached and one is removed, removal code can end up calling `observerDetach` on the wrong observer. Simplified and fixed removal logic and added new tests. Reviewed By: yfeldblum Differential Revision: D27033014 fbshipit-source-id: df84bf65207a00f3b76d8950ac2c29f477508da1
-
Rob Sherwood authored
Summary: The initial implementation of ConstructorCallback used a global (pre-main) initialization which was deemed safe. While likely still safe, it turns out that when trying to land diffs that used ConstructorCallback, many code bases compile with -Wglobal-constructor which explicitly denies this type of initialization (even if it is safe). Re-worked the code to prevent any non-zero initialization and still maintain the property that we don't lock unless someone is registering a callback. Reviewed By: bschlinker Differential Revision: D28395301 fbshipit-source-id: 2cdd82189410b3ccea1c892560d0d0cb5b6abc34
-
- 12 May, 2021 3 commits
-
-
Philip Pronin authored
Summary: So it can be used in cases where data is already hashed, and order-independent way to reduce the set of hashes is required. Reviewed By: ot Differential Revision: D28382187 fbshipit-source-id: 4327ddd67b49a61d0172c4676090b2f96e84c065
-
Aleksandr Sasha Sergeev authored
Summary: To facilitate debugging. Privacy note: now `what()` message may contain part of JSON. parser_error `what()` message: - before the change: `folly::toJson: JSON object value was a NaN` - after the change: `folly::toJson: JSON object value was a NaN when serializing value at "outerKey"->"innerKey"` Reviewed By: yfeldblum Differential Revision: D27623818 fbshipit-source-id: 86e61a0fed500eddafbd3e3bb1b9ed363ba8fcae
-
Andre Nash authored
Summary: This introduces `__folly_memcpy`, which is an implementation of `memcpy` that uses prefetch to speed up cold copies (data absent from L1) and uses overlapping copies to avoid as much branching as possible to speed up hot copies (data present in L1). A description of the core ideas for this memcpy is in the file comment at the top of folly_memcpy.S. `__folly_memcpy` *does* act as a `memmove`, although it isn't optimized for that purpose for copies of 257 or more bytes. This masks some undefined behavior bugs when code calls `memcpy` on an overlapping region of data. `perf` samples will show when `memmove` is called by `__folly_memcpy`, which will help identify these undefined behavior bugs for copies of 257 bytes or more. Reviewed By: yfeldblum Differential Revision: D23629205 fbshipit-source-id: 61ed66122cc8edf33154ea6e8b87f4223c0ffcc0
-
- 11 May, 2021 4 commits
-
-
Maged Michael authored
Summary: Add missing hazard pointer protection of the new node inserted by a successful try_emplace. Add test that breaks without this fix. Reviewed By: yfeldblum Differential Revision: D28361211 fbshipit-source-id: 963527a9c6b24b0cb569d5b49da9ef9a0e8b58cd
-
Rob Sherwood authored
Summary: There are lint rules that should discourage code from doing non-trivial things as part of static initialization, e.g., calling a complex constructor. That said, probably someone somewhere in fbcode does that so I got wrapped around the axel trying to change this code to prevent such a race with ConstructorCallback. The concern was that if someone created a Foo() pre-main() there might be an initialization race for ConstructorCallback<Foo>::nConstructorCallbacks_ and if we lost that race, we would issue callbacks on garbage data. BUT - apparently the C++ standard initialization requires that all static zero values are initialized before more complex initilization, so this can't happen (assuming the compiler correctly implements the spec). So this code change is just to add a commment with the information so no one else goes chasing down this (false) rat hole... Differential Revision: D27969959 fbshipit-source-id: c135d1bb235d652d11e0541cc09a10a1bad1ce87
-
Nathan Lanza authored
Summary: title Reviewed By: yfeldblum Differential Revision: D28345979 fbshipit-source-id: ea55db34e19d3881c65559172d4fc9df4808fdad
-
Chris Keeline authored
Summary: TSAN catches this as a data race, though it's fairly benign. In the assert we read non-atomic `state` without holding the lock. As a fix, acquire the lock in the assert. The assert is skipped anyway in opt builds. Reviewed By: yfeldblum Differential Revision: D28302491 fbshipit-source-id: b92ca9f3d321d34301d96e59fab363d999bddb30
-
- 10 May, 2021 1 commit
-
-
Yedidya Feldblum authored
Summary: It cannot yet be assumed in all places. Reviewed By: MartinSherburn Differential Revision: D28325332 fbshipit-source-id: b48a1f9d83c2171ef3912b33c55e9cf8fe294c32
-
- 08 May, 2021 3 commits
-
-
Crystal Jin authored
Summary: D26331579 (https://github.com/facebook/folly/commit/aa7f74aaf68ab0a7eb834f49a864c277dbe5fe09) was the offending diff that caused an insta crash on Messenger Android and Instagram Android. Backing out for now. Reviewed By: JunqiWang Differential Revision: D28308563 fbshipit-source-id: 87a547d9ba7cb3b33a4ddee9e273943f8379d990
-
Crystal Jin authored
Summary: Also backed out D28276400 (https://github.com/facebook/folly/commit/b24643035fb8778b87feefdb3a365c06583ce53f) because it has a dependency to D26331579 (https://github.com/facebook/folly/commit/aa7f74aaf68ab0a7eb834f49a864c277dbe5fe09) Reviewed By: lhuang04, JunqiWang Differential Revision: D28309181 fbshipit-source-id: 0e04e00c59d497290aa0067177a51fe1cfc5e144
-
Yedidya Feldblum authored
Summary: No such function exists. Reviewed By: luciang Differential Revision: D28276400 fbshipit-source-id: 57d9ede6df0570f2cc8b0a0b5bd77f2cb6be9fd7
-
- 07 May, 2021 2 commits
-
-
Yedidya Feldblum authored
Summary: Adds a policy around whether token-bucket is used only non-concurrently, in which case compare-exchanges can be optimized to stores. Differential Revision: D28230482 fbshipit-source-id: 2c00797dc943e9ea8985737a8c7dda059a195cfe
-
Yedidya Feldblum authored
Summary: Reimplement `folly::exception_wrapper` thrown variant not to need to cache any pointers and rather to access the exception object and runtime type, and to perform runtime upcasting, via the platform runtime. This both simplifies and extends the capability of the thrown variant. Reviewed By: luciang Differential Revision: D26331579 fbshipit-source-id: a6fe0f10434956efa5ba4b4bcd1bd3a1b48466a4
-
- 06 May, 2021 8 commits
-
-
Igor Sugak authored
Summary: Starting with C++11, implicit generation of the copy constructor is declared as deprecated. > § D.2 Implicit declaration of copy functions [depr.impldec] > The implicit definition of a copy constructor as defaulted is deprecated if the class has a user-declared copy assignment operator or a user-declared destructor. The implicit definition of a copy assignment operator as defaulted is deprecated if the class has a user-declared copy constructor or a user-declared destructor (15.4, 15.8). In a future revision of this International Standard, these implicit definitions could become deleted (11.4). Clang-12 produces diagnostics for these cases, which is turned into errors for folly: ``` folly/test/AtomicHashMapTest.cpp:330:12: error: definition of implicit copy constructor for 'Integer' is deprecated because it has a user-declared copy assignment operator [-Werror,-Wdeprecated-copy] Integer& operator=(const Integer& a) { ^ ``` Reviewed By: yfeldblum Differential Revision: D28239770 fbshipit-source-id: a28d19ec774264944b750aa267e93d4fa6d1744e
-
Yedidya Feldblum authored
Summary: The atomic location is not used to order memory. Reviewed By: jbeshay Differential Revision: D28229348 fbshipit-source-id: c6206d4b72025e1f7f68adc822e9ae4ed13bd8b4
-
Yedidya Feldblum authored
Summary: Items which are subject to policy: align, atom, and clock. Differential Revision: D28229049 fbshipit-source-id: e65512265abaa8b777f95cf3233d96a70df73c5f
-
Jaroslaw Kasperkiewicz authored
Summary: Adding new `parseTo` overload for `std::string_view`, and related tests. Facilitates migration from `folly::StringPiece` to `std::string_view` by supporting: ```lang=c++ splitTo<string_view>(...) ``` Reviewed By: yfeldblum Differential Revision: D27971000 fbshipit-source-id: 732f968eb6797447ae12bdc70dbb82d5fc6a8a33
-
Yedidya Feldblum authored
Summary: If inlining and constant folding can determine that the buffer is larger than the `to_ascii_size_max` constant, then there is no need to call the `to_ascii_size` function an extra time. Differential Revision: D27986105 fbshipit-source-id: d088001a7b3632dabb794c86dafdaa93dd0c1348
-
Yedidya Feldblum authored
Summary: In case some `<cxxabi.h>` actually defines it rather than keeping it defined in some unincluded helper. Reviewed By: luciang Differential Revision: D28239978 fbshipit-source-id: 4d824892966de4b9f8de775d947f5d7d749a02bb
-
Yedidya Feldblum authored
Summary: It was needed only to call into legacy APIs which are themselves unneeded. Differential Revision: D28227187 fbshipit-source-id: 4248a7f39c7bea3224f4c2eb73e4815db71c9584
-
Joe Loser authored
Summary: Problem: - Some call sites use `folly::make_unique` whose functionality exists in the standard library now. In the future, `folly::make_unique` may be removed. Solution: - Replace call sites to use `std::make_unique`. Pull Request resolved: https://github.com/facebook/folly/pull/1572 Differential Revision: D28235226 Pulled By: yfeldblum fbshipit-source-id: 2dd85f4d234881d682adaf4b5bbe947f56edaa4e
-
- 05 May, 2021 7 commits
-
-
Yedidya Feldblum authored
Summary: The macro `_LIBCXXABI_HIDDEN` is seeminly unavailable on FreeBSD so avoid its use in the exception-ptr abi accessors. Fixes: https://github.com/facebook/folly/issues/1570. Reviewed By: luciang Differential Revision: D28217011 fbshipit-source-id: c745ae468c840c33df921c68fb06759c078b6df0
-
Pedro Eugenio Rocha Pedreira authored
Summary: Add re2 as a dependency on getpdeps Reviewed By: funrollloops Differential Revision: D28208007 fbshipit-source-id: 7e6ab7a0a01f4b2fe264780e09befc34a030a896
-
Samuel Miller authored
Summary: To remove OpenSSL dependencies from some of our public interfaces, we need to make `AsyncTransportCertificate` more implementation-agnostic. To start, we can create an `OpenSSLTransportCertificate` that will have the `getX509()` method instead of the `AsyncTransportCertificate`. I start here by making `OpenSSLTransportCertificate` a dummy class, then I'll update all our callsites to ensure that `getX509()` is only called on instances of this class. After that, I can move `getX509()` exclusively to `OpenSSLTransportCertificate`. This means that in the future interfaces can use `AsyncTransportCertificate` without depending on OpenSSL. Reviewed By: yfeldblum, mingtaoy Differential Revision: D26583479 fbshipit-source-id: 664e697a32fce61d22ee9842f998c4de1182924c
-
Yedidya Feldblum authored
Summary: The actual shim type may sometimes not be linkable. So fake it - as long as the vtable is the same, it should not make a difference. Reviewed By: luciang Differential Revision: D28216291 fbshipit-source-id: 8c493a207cfb5414684147ddb850835bc0965bc5
-
John Reese authored
Summary: This applies the formatting changes from black v21.4b2 to all covered projects in fbsource. Most changes are to single line docstrings, as black will now remove leading and trailing whitespace to match PEP8. Any other formatting changes are likely due to files that landed without formatting, or files that previously triggered errors in black. Any changes to code should be AST identical. Any test failures are likely due to bad tests, or testing against the output of pyfmt. Reviewed By: thatch Differential Revision: D28204910 fbshipit-source-id: 804725bcd14f763e90c5ddff1d0418117c15809a
-
Yedidya Feldblum authored
Summary: Rather than specializing standard library numeric traits for `signed __int128` and `unsigned __int128`, bring these traits into folly and choose them where needed. Note that it is undefined behavior to specialize the standard traits types. Reviewed By: ericniebler Differential Revision: D26506904 fbshipit-source-id: 0f7b0fa445c2713961b345b453fef8ff58032ee5
-
Andrii Grynenko authored
Summary: GCC seems to be generating incorrect code for some mix of co_invoke and start/startInline. This workaround makes coro tests pass. Reviewed By: yfeldblum Differential Revision: D28174118 fbshipit-source-id: b8178d7711ed5619a37c169f8f18dd125bf08f0b
-
- 04 May, 2021 2 commits
-
-
Maged Michael authored
Summary: Replace DCHECK(tagged_empty()) with a warning. The rationale is that the DCHECK was intended to help higher level users detect memory leaks, but since the DCHECK fails at domain destruction, the stack trace is not really helpful to users. By changing it to a warning, at least the user gets a hint that there may be a leak of object(s) that use hazptr_obj_cohort (e.g., ConcurrentHashMap, RequestContext). Reviewed By: yfeldblum Differential Revision: D28145864 fbshipit-source-id: 8a79e25efd21f0b1d713202f2fe8954c17a7d4de
-
Srivatsan Ramesh authored
Summary: Fix for the proxygen fuzz [build error]( https://oss-fuzz-build-logs.storage.googleapis.com/log-e58a42bb-98c0-4643-b842-b06f708eba12.txt) introduced by D27384053 (https://github.com/facebook/folly/commit/cdf0badc831c3aed7a740185d23728f779be8ba7) Reviewed By: yfeldblum, lnicco Differential Revision: D28154352 fbshipit-source-id: 6d98d9a3c9064de8f70506425dd790aa0cc3d9a6
-