- 14 Oct, 2016 1 commit
-
-
Matthieu Martin authored
Summary: To be explicit about our assumption from D4013691 Reviewed By: andriigrynenko Differential Revision: D4015816 fbshipit-source-id: 24f984ac9959d0c4c0aeac34b3dce8dfcf2c1354
-
- 13 Oct, 2016 5 commits
-
-
Csaba Kertesz authored
Summary: String.h references std::vector, but it is not included. Closes https://github.com/facebook/folly/pull/496 Reviewed By: yfeldblum, meyering Differential Revision: D4009410 Pulled By: Orvid fbshipit-source-id: f21ce0d5833f0959a83e75e2fbcbe2beedbb5b6f
-
Zonr Chang authored
Summary: Closes https://github.com/facebook/folly/pull/497 Reviewed By: anirudhvr Differential Revision: D4016114 Pulled By: Orvid fbshipit-source-id: ce9da1e20390a2c834e376a7a06f6002103ff1e4
-
Philip Pronin authored
Summary: Each sequence of tuples within an entires set is terminated with (0, 0) according to the DWARF standard (see 7.20 in http://www.dwarfstd.org/doc/DWARF4.pdf). Reviewed By: ot, luciang Differential Revision: D4014952 fbshipit-source-id: c4b034c94adc4a0d9b052456c02919a54a79eaf1
-
Matthieu Martin authored
Summary: This feature already exists in detail, move it to public instead. Reviewed By: andriigrynenko Differential Revision: D4013691 fbshipit-source-id: 1779cc53d114ddc97993b41e0ad63c104008f6b0
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D4013256 fbshipit-source-id: 771f9becfa9e7676439209dfbf4a746c110d629d
-
- 12 Oct, 2016 7 commits
-
-
Zonr Chang authored
Summary: BoringSSL returns `const SSL_CIPHER*` from sk_SSL_CIPHER_value(). Closes https://github.com/facebook/folly/pull/492 Reviewed By: yfeldblum Differential Revision: D4009712 Pulled By: Orvid fbshipit-source-id: cca2e8cb6aab0a459dca55b8f23ef57fa5c8251f
-
Zonr Chang authored
Summary: `SSL_SESSION_up_ref()` in both BoringSSL and OpenSSL 1.1.0 takes a `SSL_SESSION*`. Closes https://github.com/facebook/folly/pull/493 Reviewed By: yfeldblum Differential Revision: D4009706 Pulled By: Orvid fbshipit-source-id: 68ea201821e7a6d5835a79b34187344ba251e239
-
Philip Pronin authored
Summary: Currently only shortcut levels are properly handled, others result in using level 1. Reviewed By: yfeldblum Differential Revision: D4008123 fbshipit-source-id: 37845eeec139007738f99e72ecfb969c6a2e5652
-
Phil Willoughby authored
Summary: When terminating because we were told to rethrow a nonexistent exception, we now print that to `std::cerr` for the benefit of users on platforms which do not dump a stack trace on `std::terminate` Reviewed By: yfeldblum Differential Revision: D4001087 fbshipit-source-id: 5b834cfc75bf42bec06a49ac9db55789a83df180
-
Giuseppe Ottaviano authored
Summary: I thought we wouldn't need this but it turns out Thrift Frozen2 iterators return proxies (it's proxies all the way down). Thanks to ericniebler for trick. Reviewed By: yfeldblum Differential Revision: D4005700 fbshipit-source-id: 1911996afa075c1d819a3aaea2ee924bc2ae2f20
-
Christopher Dykes authored
Summary: There are two changes here. The first is to eliminate `detail::DEFAULT_CLOCK_ID` from `Benchmark.[cpp|h]` as Sierra defines `clockid_t` as an enum type, which means that calling `clock_gettime(detail::DEFAULT_CLOCK_ID` would fail, because the enums are incompatible. As this was being used as a default, but is not actually changable anywhere, I just got rid of `detail::DEFAULT_CLOCK_ID` entirely. The second is to move `portability/BitsFunctexcept.cpp` into `libfollybase_la_SOURCES`, because it's needed for generating the fingerprint tables. Reviewed By: yfeldblum Differential Revision: D4004843 fbshipit-source-id: b2a9c33f8e516d8eb3cdc5ab093f4946ac9ed37e
-
Lucian Grijincu authored
Summary: I added kFatalSignalHandlerCacheSize in {D3984649}, and chose a big number to satisfy most use-cases. But the size increase is non-trivial. Memory usage: - before: 5.1 MB in folly::symbolizer::SignalSafeElfCache::SignalSafeElfCache - after: 80.0 MB in folly::symbolizer::SignalSafeElfCache::SignalSafeElfCache Switch to a dynamic approach and everyone pays for what they use. https://github.com/bminor/glibc/blob/ee19f1de0d0da24114be554fdf94243c0ec6b86c/elf/rtld-debugger-interface.txt#L10-L20 ``` The r_debug structure contains (amongst others) the following fields: struct link_map *r_map: A linked list of loaded objects. enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state: The current state of the r_map list. RT_CONSISTENT means that r_map is not currently being modified and may safely be inspected. RT_ADD means that an object is being added to r_map, and that the list is not guaranteed to be consistent. Likewise RT_DELETE means that an object is being removed from the list. ``` https://github.com/bminor/glibc/blob/ee19f1de0d0da24114be554fdf94243c0ec6b86c/elf/rtld.c#L303-L307 ``` /* Call the OS-dependent function to set up life so we can do things like file access. It will call `dl_main' (below) to do all the real work of the dynamic linker, and then unwind our frame and run the user entry point on the same stack we entered on. */ start_addr = _dl_sysdep_start (arg, &dl_main); ``` dl_main: https://github.com/bminor/glibc/blob/ee19f1de0d0da24114be554fdf94243c0ec6b86c/elf/rtld.c#L1192-L1199 ``` /* Initialize the data structures for the search paths for shared objects. */ _dl_init_paths (library_path); /* Initialize _r_debug. */ struct r_debug *r = _dl_debug_initialize (GL(dl_rtld_map).l_addr, LM_ID_BASE); r->r_state = RT_CONSISTENT; ... /* We start adding objects. */ r->r_state = RT_ADD; _dl_debug_state (); LIBC_PROBE (init_start, 2, LM_ID_BASE, r); ... /* Notify the debugger all new objects are now ready to go. We must re-get the address since by now the variable might be in another object. */ r = _dl_debug_initialize (0, LM_ID_BASE); r->r_state = RT_CONSISTENT; _dl_debug_state (); LIBC_PROBE (init_complete, 2, LM_ID_BASE, r); ``` Reviewed By: bixue2010 Differential Revision: D3996974 fbshipit-source-id: e24d72e3cc0339e4cf1acdd2f4c9a7ebfcfdf739
-
- 11 Oct, 2016 3 commits
-
-
Jim Meyering authored
Summary: Compiling with gcc's proposed -Wshadow-compatible-local option exposed some fix-worthy warnings. Rename to avoid the shadowing. Reviewed By: evilmucedin Differential Revision: D3999026 fbshipit-source-id: 26cb3033ba8c5538cc9217993f2fda6aef954a8f
-
Shubhanshu Agrawal authored
Summary: converting add(value&&) to add(value) to make it easier for callsites to use. Reviewed By: A5he Differential Revision: D4000416 fbshipit-source-id: c66f4d93d1223286bbc786d17f65ed02a63cc794
-
Louis Boval authored
Summary: this particular test fails reliably for fbandroid. Modifying the code in fbcode, assuming it will be synced promptly. Reviewed By: edelron Differential Revision: D4000722 fbshipit-source-id: fca5e691ea5c972ddd245acee1c17720730539d4
-
- 10 Oct, 2016 3 commits
-
-
Nicholas Ormrod authored
Summary: The bug report in t13764686 shows that `folly::StringPiece().str()` causes undefined behavior by passing nullptr into memcpy: the default-initialized StringPiece has two null pointers, which will call `string(char*, size)` with nullptr and 0. This gets forwarded to `podCopy` in fbstring, which calls memcpy and has undefined behavior. The call pattern `string(nullptr, 0)` is not illegal (note: that syntax is ambiguous, as the literal `0` can be converted to a pointer). Prevent this legal call pattern from causing undefined behavior in fbstring. This diff puts asserts in podCopy to catch errors, and ensures that current podCopy callsites ensure that the pointer is non-null. Most podCopy callsites do not need to guarded, since the size is guaranteed to be greater than 0 (which will hard crash instead). The interesting callsite is in `initMedium`, because there is a mode (disableSSO) which will allocate empty strings on the heap, so we need to add a guard there. Reviewed By: luciang Differential Revision: D3996440 fbshipit-source-id: b311a311973d1d969542245c72035c5b38da58e3
-
Maged Michael authored
Summary: Interface: - Got rid of std::function reclamation functions and added a Deleter template parameter. - Got rid of the flush() member functions of hazptr_domain - Added a lock-free non-bool member function to get a protected pointer. Implementation: - Implemented the interface changes. - Changed the order of accesses in reading the shared list of objects vs reading the hazard pointers. I think the previous order would have allowed recently protected objects to be reclaimed incorrectly. Updated the examples and tests accordingly. Reviewed By: davidtgoldblatt Differential Revision: D3981284 fbshipit-source-id: 35ff60da3aea1f67c58d82437dda58f6d8b07bf5
-
Phil Willoughby authored
Summary: The definition of `throwException()` is changed to add the `[[noreturn]]` attribute for consistency with `std::rethrow_exception`. If the `exception_wrapper` contains an exception, that is rethrown; if not, then `std::terminate` is called. An alternative design which threw an exception if the `exception_wrapper` did not contain an exception was rejected because of the ambiguity it introduced as to whether the exception thrown was wrapped or not. Benchmarks before: ``` ============================================================================ folly/test/ExceptionWrapperBenchmark.cpp relative time/iter iters/s ============================================================================ exception_ptr_create_and_test 1.45us 689.01K exception_wrapper_create_and_test 4337.80% 33.46ns 29.89M ---------------------------------------------------------------------------- exception_ptr_create_and_test_concurrent 342.99us 2.92K exception_wrapper_create_and_test_concurrent 101.41% 338.21us 2.96K ---------------------------------------------------------------------------- exception_ptr_create_and_throw 3.05us 327.89K exception_wrapper_create_and_throw 140.22% 2.17us 459.77K exception_wrapper_create_and_cast 8956.80% 34.05ns 29.37M ---------------------------------------------------------------------------- exception_ptr_create_and_throw_concurrent 372.68us 2.68K exception_wrapper_create_and_throw_concurrent 102.54% 363.44us 2.75K exception_wrapper_create_and_cast_concurrent 110.93% 335.97us 2.98K ============================================================================ ``` and after: ``` ============================================================================ folly/test/ExceptionWrapperBenchmark.cpp relative time/iter iters/s ============================================================================ exception_ptr_create_and_test 1.46us 684.09K exception_wrapper_create_and_test 4368.84% 33.46ns 29.89M ---------------------------------------------------------------------------- exception_ptr_create_and_test_concurrent 341.20us 2.93K exception_wrapper_create_and_test_concurrent 99.88% 341.60us 2.93K ---------------------------------------------------------------------------- exception_ptr_create_and_throw 3.08us 324.93K exception_wrapper_create_and_throw 106.93% 2.88us 347.46K exception_wrapper_create_and_cast 9532.05% 32.29ns 30.97M ---------------------------------------------------------------------------- exception_ptr_create_and_throw_concurrent 363.73us 2.75K exception_wrapper_create_and_throw_concurrent 101.04% 360.00us 2.78K exception_wrapper_create_and_cast_concurrent 104.50% 348.07us 2.87K ============================================================================ ``` Reviewed By: yfeldblum Differential Revision: D3923939 fbshipit-source-id: 6fc58ac571e59e4122f1fbd194c678e3a3841057
-
- 09 Oct, 2016 1 commit
-
-
Jim Meyering authored
Summary: Prior to this change, any nested use of FOR_EACH would induce a shadowed declaration for each of the two local state variables it declares. This makes the names of those variables __LINE__-dependent, so that there is no shadowing, as long as each nested use is on a different line. This also adds a new test that (prior to this change) would fail to compile with an option like -Werror=shadow-compatible-local. Since this change relies on cpp token concatenation, I have included The fix defines a new helper macro, _FE_ANON, to derive each new variable name. I wondered whether to do this for every other FOR_* macro here, but since so far, I have encountered more than 10 cases of nested FOR_EACH uses in a large corpus, but no nesting of any other FOR_* macro, I am content to do it only for this one. Reviewed By: yfeldblum Differential Revision: D3992956 fbshipit-source-id: f26fba89bc661bb9d22747dec0acdcf8c648fb83
-
- 08 Oct, 2016 3 commits
-
-
Jim Meyering authored
Summary: In HHWheelTimer::scheduleTimeout, remove the declaration of the unused variable, "prev". Reviewed By: yfeldblum Differential Revision: D3987409 fbshipit-source-id: 3a9291bf104e6865d608adfb6118609faa0aea96
-
Yinghai Lu authored
Summary: We are using `bm_max_iters` in folly and other part of the code in fbcode but it didn't really exist in Benchmark.cpp. For example: https://github.com/facebook/folly/blob/master/folly/test/function_benchmark/main.cpp#L29 This patch adds back this functionality. This diff depends on D3990600. Reviewed By: yfeldblum Differential Revision: D3989499 fbshipit-source-id: d2303b2bebb196e84a592d54a72af68171971491
-
Yinghai Lu authored
Summary: This patch prepares the later diff which will add a new flag. Just make things nice. Reviewed By: igorsugak Differential Revision: D3990600 fbshipit-source-id: d4f53a5b44708ca025e4f6615d161b24de685931
-
- 07 Oct, 2016 3 commits
-
-
Nicholas Ormrod authored
Summary: Remove all code that create large strings. This diff does not remove code that deals with large strings, so that the transition to libgcc will be smoother. Note that the FBSTRING_ASSERT inside of setCapacity will be disabled in the libgcc build. Reviewed By: luciang, ot Differential Revision: D3977459 fbshipit-source-id: 09c1712854b31509138c5cc8baf19caf3c715bb6
-
Lucian Grijincu authored
folly: symbolizer: increase default signal-handler symbolizer elf file cache size (make it work with large number of .so) Summary: Bump the default size so we can symbolize symbols in dynamically linked binaries with lots and lots of shared libraries :) folly/experimental/symbolizer/ElfCache.h ``` * Will not grow; once the capacity is reached, lookups for files that * aren't already in the cache will fail (return nullptr). class SignalSafeElfCache ``` Reviewed By: ot, philippv Differential Revision: D3984649 fbshipit-source-id: acdca9b9adf6c16f3a1556bc3f57b28844cdd9cc
-
Mirek Klimos authored
Summary: We want to fail fast if we attempt to stop a scheduler that was not running Reviewed By: yfeldblum Differential Revision: D3976919 fbshipit-source-id: d8aa8b35aa9e22758e6a7ef64f48a7dd6d990b1c
-
- 06 Oct, 2016 3 commits
-
-
Alex Yarmula authored
Summary: When `delayed` is called on the Future, the underlying `futures::sleep` call runs on a timer thread, and the resulting callback is called on the same thread. Therefore, in the following sequence: f.via(&someExecutor).within(one_ms).then([&]() { /* [1] */ }) The code in [1] is not running in someExecutor. This can cause confusion by users of the library who expect the initial `via` to be sticky. This change returns to the prior `Executor` after `delayed` is finished. Reviewed By: yfeldblum Differential Revision: D3979179 fbshipit-source-id: e1448f5603f0c9440490ae3bf0e670687f4179f3
-
Jim Meyering authored
Summary: Fix shadowing warnings. Reviewed By: russoue Differential Revision: D3979165 fbshipit-source-id: 19a3940e210e4d5a698dbc0e6d74b317a74a94fa
-
Alex Yarmula authored
Summary: When `delayed` is called on the Future, the underlying `futures::sleep` call runs on a timer thread, and the resulting callback is called on the same thread. Therefore, in the following sequence: f.via(&someExecutor).within(one_ms).then([&]() { /* [1] */ }) The code in [1] is not running in someExecutor. This can cause confusion by users of the library who expect the initial `via` to be sticky. This change returns to the prior `Executor` after `delayed` is finished. Reviewed By: yfeldblum Differential Revision: D3979179 fbshipit-source-id: 936ff5626e8ac377ffb15babf573349466984e3a
-
- 05 Oct, 2016 7 commits
-
-
Michael Lee authored
Summary: The attribute `__returns_nonnull__` is only applicable for gcc 4.9 or later (https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Function-Attributes.html#Function-Attributes) Reviewed By: ot Differential Revision: D3976598 fbshipit-source-id: 3c678a11c5046e5a8b7686327dbb3ebc9b598616
-
Lucian Grijincu authored
Summary: It's bad mkey. Says so on the tin can. Alert/annoy its users. Reviewed By: yfeldblum, ot Differential Revision: D3973625 fbshipit-source-id: 23f4e16182749d016084fcb378a1170ff402c259
-
Lucian Grijincu authored
Summary: no uses remain in folly Reviewed By: yfeldblum Differential Revision: D3972507 fbshipit-source-id: 356ddbcf24c217b0f589989ab6cc3910d0f7baf3
-
Maged Michael authored
Updated example and methodology for using DeterministicSchedule support for auxiliary data and global invariants Summary: Depends on D3792669 Updating the test and methodology based on the experience with fine-grained testing dynamic MPMCQueue using DeterministicSchedule's support for auxiliary data and global invariants. Updates D3675447 Reviewed By: djwatson Differential Revision: D3794217 fbshipit-source-id: d2862895cb8dea120e758beeb24d6ae15191b013
-
Matthieu Martin authored
Summary: Initialize Optional internal memory, so that "un-initialized memory" tools don't flag its callsites. Reviewed By: yfeldblum Differential Revision: D3960462 fbshipit-source-id: 3bd0109959fb93e040fa2e874f586b3508e46dd2
-
Lucian Grijincu authored
Summary: folly::StringPieceHash has a large comment explaining why not to use it, but it's not marked as deprecated. It's also conveniently named StringPieceHash and not StringPieceHashDEPRECATED so new uses appear from time to time. Let's nuke the default before it does more damage. Reviewed By: yfeldblum Differential Revision: D3967239 fbshipit-source-id: 04b0564fdf2a70f1195ef2afdff092bc63cde975
-
Lucian Grijincu authored
Summary: #accept2ship Reviewed By: bixue2010 Differential Revision: D3971138 fbshipit-source-id: 25e0aeddebf001dd8e27a4939842915ccf1000ad
-
- 04 Oct, 2016 4 commits
-
-
Qinfan Wu authored
Summary: The following thrift file doesn't work: typedef set<i32> (cpp.template = "folly::sorted_vector_set") IntSet struct Test { 1: map<i32, IntSet> m = {7: [1, 2]}, } The generated file looks like this: Test() : m(std::initializer_list< std::pair<const int32_t, folly::sorted_vector_set<int32_t>>>{ {7, std::initializer_list<int32_t>{1, 2}}}) {} Given that `std::set` allows implicit construction from `std::initializer_list`, it's probably okay to make `folly::sorted_vector_set` the same. Reviewed By: ot Differential Revision: D3968054 fbshipit-source-id: 978d59a7e545e44d603eeb9671815ac7f2c57342
-
Jim Meyering authored
Summary: Enabling the proposed-for-upstream gcc -Wshadow-local option exposes this shadowing: ``` folly/io/async/AsyncSocket.cpp: In member function 'virtual void folly::AsyncSocket::connect(folly::AsyncSocket::ConnectCallback*, const folly::SocketAddress&, int, const OptionMap&, const folly::SocketAddress&)': folly/io/async/AsyncSocket.cpp:421:11: error: declaration of 'rv' shadows a previous local [-Werror=shadow-compatible-local] folly/io/async/AsyncSocket.cpp:364:9: error: shadowed declaration is here [-Werror=shadow-compatible-local] ``` Reviewed By: ngoyal, knekritz Differential Revision: D3963873 fbshipit-source-id: 85b3ab1fc3b200b81615a00d66a183cc9c792a90
-
Arthur O'Dwyer authored
Summary: This matches what the STL does with e.g. std::vector::swap() and std::shared_ptr::swap(). http://en.cppreference.com/w/cpp/container/vector/swap http://en.cppreference.com/w/cpp/memory/shared_ptr/swap Should be relatively uncontroversial, I would think. Closes https://github.com/facebook/folly/pull/489 Reviewed By: magedm Differential Revision: D3963285 Pulled By: yfeldblum fbshipit-source-id: 3fa6bf77e66fa9a673cb648b0bf87b1db3caa6c8
-
Jim Meyering authored
Summary: gcc's -Wshadow (and the under-review -Wshadow-local) would evoke this: ``` folly/io/Compression.cpp:650:9: error: declaration of 'rc' shadows a previous local [-Werror=shadow-compatible-local] folly/io/Compression.cpp:637:7: error: shadowed declaration is here [-Werror=shadow-compatible-local] folly/io/Compression.cpp:566:9: error: declaration of 'rc' shadows a previous local [-Werror=shadow-compatible-local] folly/io/Compression.cpp:548:7: error: shadowed declaration is here [-Werror=shadow-compatible-local] ``` In each case, I removed the "int" from the latter declaration. Reviewed By: philippv Differential Revision: D3966308 fbshipit-source-id: 584cb9ffe8ba0e56914223c440efabe9e0de6b17
-