- 28 Sep, 2016 2 commits
-
-
Maged Michael authored
Summary: Fix includes in memory_resource.h Reviewed By: yfeldblum Differential Revision: D3935848 fbshipit-source-id: 713ce85ad17072779dfa1c667459e367c5e1d4b7
-
Michael Lee authored
Summary: `SharedMutexImpl::lockSharedImpl` has a potentially uninitialized access: Assume state = 0 canAlreadyDefer = (state & kMayDefer) != 0 ==> false aboveDeferThreshold = (state & kHasS) >= (kNumSharedToStartDeferring - 1) * kIncrHasS ==> false if (canAlreadyDefer || (aboveDeferThreshold && !drainInProgress)) ==> false line:1452: gotSlot(slot)->compare_exchange_strong(...) uses slot uninitialized Reviewed By: Orvid Differential Revision: D3933638 fbshipit-source-id: 0fbce5c00b8b1f34e50c302cb88def97853c5afe
-
- 27 Sep, 2016 1 commit
-
-
Sven Over authored
Summary: This commit introduces a simple function reference type, similar to std::reference_wrapper, but the template parameter is the function signature type rather than the type of the referenced object. A folly::FunctionRef is cheap to construct as it contains only a pointer to the referenced callable and a pointer to a function which invokes the callable. The user of FunctionRef must be aware of the reference semantics: storing a copy of a FunctionRef is potentially dangerous and should be avoided unless the referenced object definitely outlives the FunctionRef object. Thus any function that accepts a FunctionRef parameter should only use it to invoke the referenced function and not store a copy of it. Knowing that FunctionRef itself has reference semantics, it is generally okay to use it to reference lambdas that capture by reference. Reviewed By: ericniebler Differential Revision: D3277364 fbshipit-source-id: 0a7676919cd240da5b6e1f94cadba4289e0aca28
-
- 26 Sep, 2016 3 commits
-
-
Anirudh Ramachandran authored
Summary: This is a start to wrapping various SSL objects going forward so different binaries can choose different version of OpenSSL (i.e., BoringSSL, OpenSSL 1.1.0, OpenSSL 1.0.2, etc.). There's no change to the caller - everyone just uses 'SSLSession', but the implementation details vary Reviewed By: siyengar Differential Revision: D3707791 fbshipit-source-id: f895334a768cb7d43b41af40c9bc06be5307cc7f
-
Anirudh Ramachandran authored
Summary: OpenSSL SSL_METHOD->get_cipher_by_char is not present in either OpenSSL 1.1.0 or BoringSSL. In addition, knekritz reports that time's being spent in binary searching for cipher names. Since the ciphercodes and names are (fairly) static, we store these in a static hash map. Reviewed By: siyengar Differential Revision: D3275185 fbshipit-source-id: 08b36f3e73239b415b74c6ecc30ed65832d9ebd0
-
Phil Willoughby authored
Summary: Makes it easy to split a Future into multiple Futures Reviewed By: rongrong Differential Revision: D3885897 fbshipit-source-id: 6ac9fb22444dd828fbdebb44b06bf3d93d0f7583
-
- 23 Sep, 2016 2 commits
-
-
Eli Pozniansky authored
Summary: See title. Reviewed By: nbronson Differential Revision: D3914188 fbshipit-source-id: dd9ccd0c48911632d229ae675cc40d835ea14724
-
Alisson Gusatti Azzolini authored
Summary: In debug mode, CpuId() ends up triggering external linkage from inside this __ifunc__. However, in PIC, the relocation of external symbols are not ready yet, causing a segfault. This only reproes in dynamic linking (PIC / so) and dbg mode. Reviewed By: luciang Differential Revision: D3895239 fbshipit-source-id: 2b7856c10abb5cfe24736d5bfac28e7e9d0e8272
-
- 22 Sep, 2016 5 commits
-
-
Michael Lee authored
Summary: Switch from mkstemp to the slightly more portable `folly::test::TemporaryFile` Reviewed By: jsedgwick Differential Revision: D3890411 fbshipit-source-id: e98d1e3a5adae92af1bb36f6213b194f633fab0f
-
Giuseppe Ottaviano authored
Reviewed By: nbronson Differential Revision: D3905865 fbshipit-source-id: 2743af4ae1b34adb0f8e611e672f9b6068430ec9
-
Tianjiao Yin authored
Summary: Sometime we have such unit-test failure ``` folly/futures/test/TimekeeperTest.cpp:134: Failure Value of: flag Actual: false Expected: true ``` This diff should make it less flaky, though I am not sure what's the best way to fix this flaky unit-test. Reviewed By: yfeldblum Differential Revision: D3889630 fbshipit-source-id: e7486d75fbcb3081d06724d213d4a2cf8942955d
-
Subodh Iyengar authored
Summary: Add logs for TFO to AsyncSocket and wangle Reviewed By: knekritz Differential Revision: D3906104 fbshipit-source-id: 9a79b6f91273f8017a5e0d72fe5bdc8eff645ebc
-
Michael Lee authored
Summary: Fix the build due to a missing gflags header Reviewed By: yfeldblum Differential Revision: D3905525 fbshipit-source-id: cc09189196a04741162c2d1561545d3fec417e5e
-
- 21 Sep, 2016 1 commit
-
-
Shoaib Meenai authored
Summary: libc++ 3.9 and above define the __throw* functions inside stdexcept, so defining them ourselves leads to compilation errors when compiling against libc++ 3.9. Add appropriate preprocessor guards to avoid this. Reviewed By: meyering Differential Revision: D3898284 fbshipit-source-id: 435a28c2b3a83ee4d8f5af0df0343c524469011e
-
- 20 Sep, 2016 6 commits
-
-
Subodh Iyengar authored
Summary: When we attach and detach from the event base threads during connections in the case of SSL it could result in a crash while using TFO. When TFO was enabled connectTimeout_ was set, which was not detached. In the case when we would fall back from TFO in case TFO did not succeed, we would try and schedule a connect timeout again. However because we are now scheduled in a new evb thread, this would cause the scheduleTimeout to assert that it was not in the correct evb thread. This fixes the issue by attaching and detaching connect timeouts as well. Reviewed By: ngoyal Differential Revision: D3892490 fbshipit-source-id: 278c0b8029022144cd59366ceb0ce83f0a60a307
-
Sven Over authored
Summary: This diff changes the definition of `folly::Func` from `std::function<void()>` over to `folly::Function<void()>`. This mostly affects the interface of `folly::Executor` and derived and related classes. By using `folly::Function<void()>`, we allow to have lambdas capturing move-only types passed to executors. This continues an effort to get rid of the potentially dangerous `folly::MoveWrapper` by allowing to capture move-only types in lambdas when using `folly::Future`, `folly::EventBase` and now `folly::Executor`. Reviewed By: yfeldblum Differential Revision: D3706449 fbshipit-source-id: 11c2cee32cb9f0298c39b7b1695a477777eeb3aa
-
Maged Michael authored
Summary: Make draft of hazard pointers prototype public Reviewed By: djwatson Differential Revision: D3870280 fbshipit-source-id: e029efa336585055f67687059e10ae11766f8d7f
-
Andrey Ignatov authored
Summary: `EventBase` has its own methods to wait till it's ready so we can avoid using barriers and remove boost dependency. Reviewed By: mzlee Differential Revision: D3894408 fbshipit-source-id: f050a982c98c4f672cf295845115686c95fc7919
-
Igor Sugak authored
Summary: Updating fibers code to use https://github.com/llvm-mirror/compiler-rt/commit/b0477747dfa8a9706f2c902e877e616aca51e06f Patch by andriigrynenko! Reviewed By: andrewcox Differential Revision: D3500482 fbshipit-source-id: f51f4bb4ebf0d95a898eb1d4098459aa691acd61
-
Philip Pronin authored
Summary: Existing logic is broken (unable to correctly handle chained `IOBuf` in case of both `compress` and `uncompress`) and has unnecessarly strict `needsUncompressedLength() == true` requirement. This diff switches `ZSTDCodec` to use streaming to handle chained `IOBuf`, drops `needsUncompressedLength() == true`. Reviewed By: luciang Differential Revision: D3827579 fbshipit-source-id: 0ef6a9ea664ef585d0e181bff6ca17166b28efc2
-
- 19 Sep, 2016 1 commit
-
-
Qi Wang authored
Summary: When trying to find an empty deferred reader slot, getting the current CPU can take quite a few cycles, e.g. >1% CPU on SMC (https://fburl.com/434646643). Let's track the last slot used by this thread and try that slot first before reading CPU id and doing the search. u-benchmark results seem to be improving generally (though a bit noisy and not sure how much to trust). Results w/ this diff on left side: P56648675 Reviewed By: nbronson Differential Revision: D3857793 fbshipit-source-id: 8b1c005362c82e748a663100f889b0b99dc257fe
-
- 16 Sep, 2016 6 commits
-
-
Dominik Gabi authored
Summary: Fixing ODR violations... Reviewed By: simpkins, yfeldblum Differential Revision: D3875667 fbshipit-source-id: 0d8ec0b48e14fffb7e3e60c0e68e2576b2f58d1e
-
Dominik Gabi authored
Summary: Since `shellify` interprets the command as a format string we need to escape `{` and `}`. Reviewed By: ldemailly, simpkins Differential Revision: D3874605 fbshipit-source-id: f47db387c3a44a3ba1c0c1d4726b7212fcb5ef3e
-
Adam Simpkins authored
Summary: Update the stats APIs to correcly distinguish between TimePoint and Duration types. This does leave addValue() and update() APIs in place that accept Duration values, for backwards compatibility. These should eventually be removed once all code has been converted to call the new APIs. Reviewed By: yfeldblum Differential Revision: D3808805 fbshipit-source-id: 36d6574ba4a09db7eb9f1a35e47addd3e07f8461
-
Tom Jackson authored
Summary: Let the caller do a move, don't force one. Reviewed By: yfeldblum Differential Revision: D3873129 fbshipit-source-id: 40c6bf564bcbf794830c99ea1248a9c1bb30e9b0
-
Vladimir Slaykovskiy authored
Summary: I've found all code paths that contributed to the number of threads in new ScribeClient. Here's a list of flags that reduce the number of thread: --default_tls_thread_count=1 # was 32 --sr2_event_base_pool_size=1 --has_thrift_dispatcher_reporter=0 # creates a thrift server with a few extra threads --observer_manager_pool_size=1 # default is 4 Optimizations in this diff: - Don't initialize OBCClient object if it is not used - Added FLAG_observer_manager_pool_size to control size of the pool in ObserverManager Currently OBC counters are switched off globally in ScribeCliean, it means that new code path that creates SR instances is disabled, but eventually we plan to switch it on. Clients that don't use SR and want to keep their RSS/threads profile low, should pass flags listed above. I'll announce this in ScribeUsers group as well. Differential Revision: D3870704 fbshipit-source-id: 0efad6b3dc43c072ab11cac7e9461c09532ea11c
-
Eric Niebler authored
Summary: The behavior of inheriting constructors changed in clang 3.9 (see https://llvm.org/bugs/show_bug.cgi?id=30305), and folly::Expected needs to change accordingly. As a drive-by improvement, change all invocations of default constructors to use unified initialization syntax. Reviewed By: igorsugak Differential Revision: D3872994 fbshipit-source-id: fdaea8b35980df21b8522e2c3d5a8c3be1d84efa
-
- 15 Sep, 2016 7 commits
-
-
Jim Meyering authored
Summary: Before this change, an application would fail consistently with a shutdown-time heap use-after-free (i.e., destructor-order-fiasco when one of the following symbols was used after its static-destruction-triggered free): DECLARE_CALLBACK(CxaThrow); DECLARE_CALLBACK(CxaBeginCatch); DECLARE_CALLBACK(CxaRethrow); DECLARE_CALLBACK(CxaEndCatch); DECLARE_CALLBACK(RethrowException); Each of those would define a classic meyers singleton. Since each destructor is trivial, we can fix this by making each a pseudo-leaky (indestructible) meyers singleton instead. Since each static value is never destroyed, it can never cause a DOF error again. Differential Revision: D3870740 fbshipit-source-id: 625f5d5268768ca0e4125bed72bc66c53618be29
-
Christopher Dykes authored
Summary: This dependency was added but isn't actually needed, so get rid of it. Reviewed By: mzlee Differential Revision: D3863923 fbshipit-source-id: 407d2b3db759e30c37d876dde133fc962daeaeae
-
Neel Goyal authored
Summary: Track when session resumption was attempted during connect Reviewed By: shamdor-fb Differential Revision: D3861028 fbshipit-source-id: 26ca41084faeeb64666b6833896b9510ef2b4c25
-
Adam Simpkins authored
Summary: Update the timeseries and histogram classes to accept a clock parameter as a template parameter, instead of a time duration type. This is a first step towards transitioning the code to correctly distinguishing between time_point and duration types. This defines TimePoint and Duration type aliases, but does not start using them yet. In upcoming diffs I will start converting more APIs to correctly use TimePoint instead of just Duration. For now the default clock type is folly::LegacyStatsClock, which still uses std::chrono::seconds as the default duration. At the moment the stats code is optimized for second granularity--the addValue() code has a fast path when called in the same second as the last update. When using finer granularity durations this fast path can't be used as often. I will also send out subsequent diffs to make the code optimized for updates within the same bucket, rather than just updates with the exact same time value. Reviewed By: yfeldblum Differential Revision: D3807715 fbshipit-source-id: 77696c4f44a8d85e4d6ff84d7656fe7a9709797c
-
Dominik Gabi authored
Summary: Why `$SHELL` is a bad idea: - getenv() is not thread safe. (In practice it should work if other threads aren't calling setenv(), but still seems undesirable if we can avoid it.) - It seems confusing for the program to have different behavior for different developers. - Other shells besides /bin/sh may have different quoting behaviors. For instance, I don't think csh allows unescaped newlines inside single quotes. - SHELL might be set to other non-shell-like programs in some cases. (Say, if this gets run from inside a git or mercurial hook it might end up being set to the restricted git or hg shell that only lets you run specific commands.) Anyway, this isn't related to your diff, so nothing needs to be done for now, but I would vote for changing this to always use /bin/sh in a future diff. Both the C system() call and python's subprocess module appear to always use /bin/sh and ignore $SHELL. Reviewed By: simpkins Differential Revision: D3867047 fbshipit-source-id: dab0e6afbe1c20ff13d9a52f212df95af425dd77
-
Dominik Gabi authored
Summary: Adding formatting support with automatic escaping of parameters. Will subsequentyl try and make it harder for people to use non-statically determined format strings for this. Reviewed By: simpkins Differential Revision: D3866174 fbshipit-source-id: 80bb5886386692643876116fbf338ca0d6986e6a
-
Dominik Gabi authored
Summary: introducing `Subprocess::shellify` to get around this. Still thinking about how to make sure people escape arguments passing into that function. I'd like to have something along the lines of Phabricator's `csprintf` here. Reviewed By: yfeldblum Differential Revision: D3857827 fbshipit-source-id: 8afbc9f1c62c62e0fc91782e11b808145b370933
-
- 14 Sep, 2016 3 commits
-
-
Mark Williams authored
Summary: If you split out debug info into a separate file, folly::Symbolizer didn't find it, and failed to include file and line number info in backtraces. This adds a new open mode which follows the .gnu_debuginfo link, and uses it from ElfCache and SignalSafeElfCache. Reviewed By: meyering, luciang Differential Revision: D3852311 fbshipit-source-id: fec9e57378ae59fa1b82d41a163bb9cfcf9ca23c
-
Christopher Dykes authored
Summary: Because it's needed with the way the portability layer works. Reviewed By: yfeldblum Differential Revision: D3863954 fbshipit-source-id: 3b682dcc2d2799f17c61fe16a4391fc9f0c2b127
-
Phil Willoughby authored
Summary: Validates that we create a distinct singleton for each thread and that each such singleton is destroyed at its owning-thread's exit. Reviewed By: yfeldblum Differential Revision: D3849146 fbshipit-source-id: af878b32ecfc6c82b866d7a805e1385d74a8a5f5
-
- 13 Sep, 2016 3 commits
-
-
Michael Lee authored
Summary: It would seem the folly/Benchmark.h dependency was to pull in glog/logging.h. Include what you use. Reviewed By: yfeldblum Differential Revision: D3857112 fbshipit-source-id: 8d5bd105e10eee8f5b6e5d377d58ae84d908ed57
-
Milo Yip authored
Summary: Removing string::reserve() which causes O(n^2) penalty. Fixes #477 Closes https://github.com/facebook/folly/pull/478 Reviewed By: yfeldblum Differential Revision: D3850509 Pulled By: Orvid fbshipit-source-id: ecf44c35b2aedadc5385d23c325cacab1abfd02d
-
Stepan Palamarchuk authored
Summary: It appears that a feature of recording exact stack usage on fibers is broken for a long time. This diff brings it back. Reviewed By: andriigrynenko Differential Revision: D3847035 fbshipit-source-id: d9cf532774204b6ac2f40e1b39fd98ea06c08f55
-