- 02 Oct, 2017 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Move `Merge.h` into `folly/algorithm/`. Reviewed By: Orvid Differential Revision: D5951346 fbshipit-source-id: 487203e55e2a44888e599ca22849798154e5b386
-
- 01 Oct, 2017 1 commit
-
-
Maged Michael authored
Summary: Changes: - Added hazptr_local<M> for optimized management of local hazptr_holder-s. - Added hazptr_array<M> for optimized management of hazptr_holder-s - Added benchmarks for hazptr_local and hazptr_array - Added tests for hazptr_local and hazptr_array - Changed SWMRList example to use hazptr_local<2> instead of two hazptr_holder-s. - Updated benchmark performance results. Reviewed By: davidtgoldblatt Differential Revision: D5833721 fbshipit-source-id: 154811f67c38abac7342cecb71f829778ccf76b2
-
- 29 Sep, 2017 2 commits
-
-
Felix Handte authored
Summary: As title. No sense adding a timeout to the timeout manager when the future is already complete. Reviewed By: yfeldblum Differential Revision: D5933144 fbshipit-source-id: 4d1bbd866c47ccee6bd0518cbe063afc1d34cbca
-
Igor Sugak authored
Summary: This is deprecated and not used. Reviewed By: yfeldblum Differential Revision: D5936286 fbshipit-source-id: 68f757be06ebe375e14db008d0e5828fad0c3aa5
-
- 27 Sep, 2017 2 commits
-
-
Kyle Nekritz authored
Summary: To be used to signal that data that was sent as TLS 1.3 early data was lost. This needs its own exception type as it requires special handling (ie it should usually be retried immediately). Reviewed By: siyengar Differential Revision: D5869914 fbshipit-source-id: ca0d8ef19cb991e9d6ffe0f8c99abfb03b748ce6
-
Mohamed Amin JABRI authored
Summary: On MacOS compiling unittests with "make chek" shows the following compile error: ``` ../futures/test/RetryingTest.cpp:168:26: error: no matching function for call to 'min' newMemLimit.rlim_cur = std::min(1UL << 30, oldMemLimit.rlim_max); ``` Closes https://github.com/facebook/folly/pull/680 Reviewed By: elsteveogrande Differential Revision: D5921433 Pulled By: yfeldblum fbshipit-source-id: 236d8336f852750a983c2e268db8811d1a4ed9ee
-
- 26 Sep, 2017 1 commit
-
-
Michael Lee authored
Summary: Objective-C blocks are stack allocated, and unless there is a proper assignment it isn't retained and the memory is freed. Because folly::Function used to move, it would hold a reference, but after switch to a constructor by-value, it no longer does this and we see a use-after-free. Reviewed By: yfeldblum, ericniebler Differential Revision: D5888606 fbshipit-source-id: fe4cabb2f2ae289cce0e7429e0af3935ba314720
-
- 24 Sep, 2017 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Let `ProcessReturnCode` be publicly constructible. Via provided constructor functions, which limit how it may be constructed so that it is only constructible into a valid state. Differential Revision: D5898739 fbshipit-source-id: 7490018adfc39408b4290248ef1220e8fd0238cb
-
- 23 Sep, 2017 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Avoid tautological compare in `folly/experimental/symbolizer/`. `x < 0` when `x` is unsigned is tautological and there are warnings against such comparisons. The underlying type of an unscoped enumerations without a fixed underlying type is not specified, and whether it is signed is also not specified; it could be unsigned, and is unsigned in practice in common cases. Reviewed By: Orvid, eduardo-elizondo Differential Revision: D5897792 fbshipit-source-id: 24d84f9bf2c61c907585e1b675c2bbf11ef1720b
-
Matthew Tolton authored
Summary: If a lock is stolen from fiber f1, and then fiber f2 is notified before f1 one wakes up and discovers the crime, then f1 will clear notifiedFiber_ so that f2 thinks the lock was stolen from it as well and hence recurses back into lock(). Reviewed By: andriigrynenko Differential Revision: D5896323 fbshipit-source-id: 528ec1ed983175d3e08f3dc07b69bbc783a86cfb
-
- 22 Sep, 2017 1 commit
-
-
Nathan Bronson authored
Summary: folly/test/stl_tests/StlVectorTest.cpp was too slow under mode/dev-asan, resulting in timeouts, and the relinquish test allocated with malloc and freed with operator delete. This diff reduces the vector size for testing under ASAN, and fixes the allocation mismatch. Reviewed By: Orvid Differential Revision: D5890969 fbshipit-source-id: 49a9498f6c0c4b3c7165906efd1262e518fea810
-
- 21 Sep, 2017 1 commit
-
-
Kyle Nekritz authored
Summary: This is more convenient to use (for example with an IOBufEqual matcher). Reviewed By: yfeldblum Differential Revision: D5882029 fbshipit-source-id: 6aa12f80479f40bcc2af64dc270fb0a9382983b5
-
- 20 Sep, 2017 1 commit
-
-
Kenny Yu authored
Summary: This adds a gdb deadlock detector script into a new directory in folly. I chose to put it under the `experimental` directory and not the top-level directory as we have only tested these scripts on x86_64 Linux and not other types of platforms. This diff includes: - a README on the contents of this directory and how to use the scripts - a script to detect deadlocks gdb directory --------------- This new directory will contain a collection of gdb scripts that we have found helpful. These scripts use the [gdb extension Python API](https://sourceware.org/gdb/current/onlinedocs/gdb/Python.html#Python). To run the scripts, fire up gdb and load a script with `source -v`. Example: ``` $ gdb -p 123456 (gdb) source -v ./folly/experimental/gdb/deadlock.py Type "deadlock" to detect deadlocks. (gdb) deadlock Found deadlock! ... ``` deadlock detector script ---------------------------- Consider the following program that always deadlocks: ``` void deadlock3() { std::mutex m1, m2, m3; folly::Baton<> b1, b2, b3; auto t1 = std::thread([&m1, &m2, &b1, &b2] { std::lock_guard<std::mutex> g1(m1); b1.post(); b2.wait(); std::lock_guard<std::mutex> g2(m2); }); auto t2 = std::thread([&m3, &m2, &b3, &b2] { std::lock_guard<std::mutex> g2(m2); b2.post(); b3.wait(); std::lock_guard<std::mutex> g3(m3); }); auto t3 = std::thread([&m3, &m1, &b3, &b1] { std::lock_guard<std::mutex> g3(m3); b3.post(); b1.wait(); std::lock_guard<std::mutex> g1(m1); }); t1.join(); t2.join(); t3.join(); } ``` Once the process has deadlocked, we can use gdb to find the threads and mutexes involved in the deadlock: ``` $ gdb -p 2174496 (gdb) source -v ./folly/experimental/gdb/deadlock.py Type "deadlock" to detect deadlocks. (gdb) deadlock Found deadlock! Thread 2 (LWP 2174497) is waiting on mutex (0x00007ffcff42a4c0) held by Thread 3 (LWP 2174498) Thread 3 (LWP 2174498) is waiting on mutex (0x00007ffcff42a4f0) held by Thread 4 (LWP 2174499) Thread 4 (LWP 2174499) is waiting on mutex (0x00007ffcff42a490) held by Thread 2 (LWP 2174497) ``` Reviewed By: yfeldblum Differential Revision: D5860868 fbshipit-source-id: 020a32327a79bb066269fe08113695803ce06c7d
-
- 19 Sep, 2017 4 commits
-
-
Phil Willoughby authored
Summary: We didn't previously benchmark the performance of `get()`, which was a strange omission. Reviewed By: akrieger Differential Revision: D5863567 fbshipit-source-id: 468b249da9120fcb84f3303ac5e2157761b6369d
-
Christopher Dykes authored
Summary: Only for clang for the moment, as more work is needed for GCC. MSVC builds have always had unused variable warnings enabled, I just hadn't gotten around to cleaning up all of the tests for it to be able to enable it. Reviewed By: yfeldblum Differential Revision: D5827840 fbshipit-source-id: ab503b5791fcc58d685b8327179b810880c5dea7
-
Christopher Dykes authored
Summary: It was horribly broken in multiple ways. It didn't support input > 4gb on Windows, was truncating the entire table to chars, and simply couldn't be compiled because it was exceeding MSVC's max macro instantion depth of 255. Reviewed By: yfeldblum Differential Revision: D5827332 fbshipit-source-id: b08268c88db10c607b27231689b3ee3ec7553c1f
-
Christopher Dykes authored
Summary: This makes it now both work, and compile, on Windows. Reviewed By: yfeldblum Differential Revision: D5811100 fbshipit-source-id: 5d6bfc04ed8e60417615da15bd197769e0c79c11
-
- 18 Sep, 2017 1 commit
-
-
Eric Niebler authored
fix strange recursive std::is_constructible instantiation involving the Function converting constructor Summary: In rare and obscure cases, the fact that `folly::Function`'s perfectly-forwarding, implicit converting constructor was SFINAE-ing on the argument's constructibility was causing a recursive template instantiation of std::is_constructible. Switch to passing the argument by value to avoid the need to test for constructibility. Reviewed By: yfeldblum Differential Revision: D5847034 fbshipit-source-id: ce2ad1d2490206c6cae84c17544bd9fcd6ff47bb
-
- 15 Sep, 2017 4 commits
-
-
Eric Niebler authored
Summary: Coroutines are only available on MSVC when the /await compiler switch was passed, in which case the `_RESUMABLE_FUNCTIONS_SUPPORTED` macro is defined. Reviewed By: Orvid Differential Revision: D5837303 fbshipit-source-id: af3349646e8875e3eac1bc3bbf47203f41f0bbde
-
Dylan Yudaken authored
Summary: await_resume is only called once, so this allows it to move the value out. At the same time remove a redundant clear (but keep the existing requirement that the promise type is an OptionalPromise), and clean up the tests. Also add a test to make sure the coroutine is cleaned up Reviewed By: ericniebler Differential Revision: D5834861 fbshipit-source-id: 7ad487e818969cdf6fe27c9e82931aa247daf4e4
-
Stella Lau authored
Summary: getAutoUncompressionCodec() currently only allows unambiguous headers. Allow a single "terminal codec" to be called if all other codecs can't uncompress or throw. Reviewed By: terrelln Differential Revision: D5804833 fbshipit-source-id: 057cb6e13a48fea20508d5c028234afddf7435f6
-
Pádraig Brady authored
Summary: LTO has better optimization which results in the malloc() being optimized away in this function. Note we don't use folly::dontOptimizeAway() because that introduces a circular dependency between the malloc and benchmark targets. Reviewed By: marksantaniello, meyering, interwq Differential Revision: D5840883 fbshipit-source-id: 5dd9b152f70b7a49f125b6d79b4dfa40f4cdac59
-
- 14 Sep, 2017 3 commits
-
-
Martin Martin authored
Summary: NoHeap small_vector's no longer require a move constructor. Also changes const -> constexpr in a bunch of places. Reviewed By: nbronson Differential Revision: D5804361 fbshipit-source-id: 0f00fee6d318fa9296612409805d4ffcfbadb974
-
Tom Jackson authored
Summary: Just a circular buffer in the middle of a pipeline. Reviewed By: yfeldblum Differential Revision: D5791551 fbshipit-source-id: 2808a53df9b8cd2a402da0678a6b4ed0e6ca6e00
-
Christopher Dykes authored
Summary: As described in the comment in `folly/stats/Histogram.h`, MSVC 2017.3 has issues with `/permissive-`. The bug has been fixed upstream, it's just waiting for release. These explicit template instantiations are never forward-declared anywhere, so, as long as `Histogram-defs.h` has been included, it's perfectly safe to just not do them. https://developercommunity.visualstudio.com/content/problem/81223/incorrect-error-c5037-with-permissive.html Reviewed By: yfeldblum Differential Revision: D5828891 fbshipit-source-id: 4db8407c9d35aa5bb3f7b81aa24f611b5787fb6e
-
- 13 Sep, 2017 4 commits
-
-
Christopher Dykes authored
Summary: The namespace alias was trying to alias a namespace that doesn't exist unless Folly is being compiled with zlib support. Reviewed By: terrelln Differential Revision: D5810929 fbshipit-source-id: c659d8f775fc9b99e57cc95f5914418507e546fb
-
Stephen Chen authored
Summary: Because the way the #if was written, the dummy crc32c_hw function accidentally ended in folly namespace instead of folly::details as expected. Fix this. Reviewed By: yfeldblum Differential Revision: D5826187 fbshipit-source-id: ba0f2207a00bc21eda7a727f3f1025e1106d55f9
-
Marcus Holland-Moritz authored
Summary: The signed counters used in a couple of places can in theory (and practice) overflow, yielding UB. Use unsigned counters instead. Reviewed By: luciang, philippv Differential Revision: D5818606 fbshipit-source-id: c5928b779e76b309b00b7f6308a220e2bf6cbf79
-
Jon Maltiel Swenson authored
Summary: Revert D5787837. Breaks `onSet()`/`onUnset()` behavior. Reviewed By: palmtenor Differential Revision: D5817063 fbshipit-source-id: c7dea636fa60eb616d4ebe0a9d418bc96b3018ae
-
- 12 Sep, 2017 8 commits
-
-
Michael Lee authored
Summary: The test uses DCHECK, but does not include glog/logging.h. Reviewed By: yfeldblum Differential Revision: D5818647 fbshipit-source-id: fcb2630ac2b12acd1a7b84e228349b2887e976cd
-
Alberto Schiabel authored
Summary: Fixed typo in doc comment related to `void toLowerAscii(char* str, size_t length)`. This fixes the annoying xCode's warning `Parameter 'len' not found in the function declaration`. Closes https://github.com/facebook/folly/pull/670 Reviewed By: yfeldblum Differential Revision: D5815034 Pulled By: Orvid fbshipit-source-id: 9580cd0bbd4924d4ed461a5435f525316e5c285a
-
Christopher Dykes authored
Summary: I was wrong, MSVC's implementation has the same bug as everything else. Reviewed By: yfeldblum Differential Revision: D5810646 fbshipit-source-id: 9caabbbc2115f57b7e836bb85c9b108588c94ad9
-
Martin Martin authored
Summary: const -> constexpr in folly::small_vector Reviewed By: yfeldblum Differential Revision: D5814264 fbshipit-source-id: 4631bb7f3f04906636e5a188d4aa0d33ad796a3c
-
Philip Jameson authored
Summary: Remove an unneeded autoconf flag, as it causes the build to fail on missing boost-context Reviewed By: yfeldblum Differential Revision: D5815646 fbshipit-source-id: cb6544593de9fbf8248506b09c56412b4635b30c
-
Martin Martin authored
Summary: clang-format folly::small_vector. No functional change. Reviewed By: Orvid Differential Revision: D5808357 fbshipit-source-id: d2ee831e25c60778c699214b875635c22854832d
-
Jon Maltiel Swenson authored
Make RequestContext provider overridable in order to save cost of setContext() on each fiber context switch Summary: Each fiber context switch currently involves the cost of saving/restoring `RequestContext`. Certain fibers-based applications such as mcrouter don't use `RequestContext` at all, so updating the current thread-global `RequestContext` on each fiber context switch is unnecessary overhead. Avoid this cost by allowing `FiberManager` to override the `RequestContext` provider at the start and end of each fiber drain loop. Reviewed By: andriigrynenko Differential Revision: D5787837 fbshipit-source-id: ea9041ce228063c8701165366fd1e34132868d22
-
Christopher Dykes authored
Summary: Spookyhash got moved a long time ago, and a duplicate test name was added with the migration of executors from wangle to folly. Reviewed By: yfeldblum Differential Revision: D5811321 fbshipit-source-id: 789b4d3187a2e1e21c6cf8297f733bb4dffdbd60
-
- 11 Sep, 2017 2 commits
-
-
Phil Willoughby authored
Summary: Original problem detected by compiling with `-Werror,-Wunused-value`. On further inspection the only place which uses this detail class ensures that the `max_size` parameter is a power of two already, so we can discard the logic to manipulate `max_size` and put a `CHECK` clause in its place to guard against future changes to the caller that break this assumption. Reviewed By: yfeldblum Differential Revision: D5799110 fbshipit-source-id: d21ed9ff196d54ef91e38254df8b1b88bbf29275
-
Anirudh Ramachandran authored
Summary: This field was only previously set if setupSessionCache was called on the wangle::ServerSSLContext Reviewed By: yfeldblum Differential Revision: D5776057 fbshipit-source-id: ecdbe83816fee2ecbe7ea1b26a67b682a571309a
-
- 10 Sep, 2017 1 commit
-
-
Giuseppe Ottaviano authored
Summary: `toLowerAscii` is surprisingly hard to use with `std::string` because (until C++17) `data()` returns a `const char*`. In addition, it is not widely known that `s[0]` is legal even if the string is empty. This can lead to a variety of suboptimal code, from explicitly checking emptiness, to casting away the `const` (which causes UB). Let's just have a simple overload for it. Reviewed By: pixelb, philippv, yfeldblum Differential Revision: D5801970 fbshipit-source-id: 407e2e9e66147a0662a5e09c75921255adff0702
-