- 16 Sep, 2021 3 commits
-
-
Erich Graham authored
Summary: These warnings appear when compiling with Clang modules. In this case, the `default` case should never be hit regardless of user input, so we may translate this to an unreachability hint. Reviewed By: yfeldblum Differential Revision: D30962081 fbshipit-source-id: 48914f79a8d40f597cb60b8d8d6d9af37ac4b655
-
Ilya Maykov authored
Summary: See title. Reviewed By: yfeldblum Differential Revision: D30923907 fbshipit-source-id: 8cbe749fa4662a171a247c8c16f6b9bc7b587e30
-
Ilya Maykov authored
fix self-assignment for OpenSSLHash::Digest, throw if context allocation fails, implement move support Summary: The copy assignment operator was not checking for self-assignment, which means the code was wrong when an object was being copied into itself. Also, allocation failure in the constructor would be silently ignored and result in a segfault crash later. Throw std::runtime_error if OpenSSL context allocation fails. Also, move constructor and move assignment operator were not implemented - they are now. Reviewed By: yfeldblum Differential Revision: D30879545 fbshipit-source-id: 8b06f6fe97912a03ec5480a3b7c69aebf3a7f2ca
-
- 15 Sep, 2021 1 commit
-
-
Rahul Arunapuram Gokul authored
Summary: It's somewhat common to want to ignore `stdout` / `stderr` when spawning a child, and the current mechanism we provide to do this is `folly::Subprocess::CLOSE`. However, this is somewhat dangerous when used without care, since any new files or sockets the child process opens will take on these low fds. From `man 2 open`, > The file descriptor returned by a successful call will be the lowest-numbered file descriptor not currently open for the process. Note that stdin/stdout/stderr are *not* special-cased here. To provide a safer way to not inherit or pipe the standard fds, provide a `folly::Subprocess::DEV_NULL` option instead, which hooks up the OS-relevant null device to the fd. `folly::Subprocess::CLOSE` will subsequently be removed. Reviewed By: yfeldblum, luciang Differential Revision: D30901400 fbshipit-source-id: 0b59de5da6c6a0f714233c09788fa2d0020f3823
-
- 14 Sep, 2021 6 commits
-
-
Filipe Brandenburger authored
Summary: This change updates the CMake config to detect whether GCC's `-fcoroutines` flag is supported and enable it for the build. This is required to enable support for Folly coroutines. Followed the instructions in GCC page about C++ coroutines to get them enabled. https://gcc.gnu.org/wiki/cxx-coroutines NOTE: This Wiki page used to indicate that exceptions had to be disabled to enable subroutines, but this only applied to experimental support for coroutines and it's no longer the case. This was uncovered by the fbthrift build, which needs Folly coroutines to implement streaming. A new fbthrift test using a stream type uncovered this missing feature in our build on Fedora. Reviewed By: yfeldblum Differential Revision: D30026779 fbshipit-source-id: 3324c2fc52fe5db793bdaba9c81f41bfe6ef2242
-
Jolene Tan authored
Reviewed By: vitaut Differential Revision: D30676171 fbshipit-source-id: f820b1c08750c4d844925a82d5fd710bc8a1ca5c
-
Maged Michael authored
Summary: Rearrange invoking asynchronous reclamation in executor. Eliminate the LOG message about skipping asynchronous reclamation. Reviewed By: yfeldblum Differential Revision: D30908286 fbshipit-source-id: ee79714bf8e6253a01d04c6d2ffa81895c4133c8
-
Pranjal Raihan authored
Summary: `FOLLY_HAS_STD` and `FOLLY_HAVE_STD` are now `FOLLY_HAVE_SDT`. This typo reveals that the tests aren't run on platforms that don't have this feature enabled :/ Reviewed By: yfeldblum Differential Revision: D30780817 fbshipit-source-id: 338fdd5e5b08f3b5347609dd783f0a75506f9e30
-
Misha Shneerson authored
Reviewed By: yfeldblum Differential Revision: D30914679 fbshipit-source-id: 79a609ed1eda97a97e6eeeb47038a1e746b75e2d
-
Huapeng Zhou authored
Summary: This is useful if we want to bind to a nonlocal address or an address that doesn't exist yet. IP_FREEBIND (since Linux 2.4) If enabled, this boolean option allows binding to an IP address that is nonlocal or does not (yet) exist. This permits listening on a socket, without requiring the underlying network interface or the specified dynamic IP address to be up at the time that the application is trying to bind to it. This option is the per-socket equivalent of the ip_nonlocal_bind /proc interface described below. Reviewed By: yfeldblum, mjoras Differential Revision: D30903919 fbshipit-source-id: 09058cac1c14a4003525b0a7c5381ea301ca28da
-
- 11 Sep, 2021 1 commit
-
-
Srivatsan Ramesh authored
Summary: Adds a new method `co_schedule()` that takes a task, schedules it on the current executor and adds it to the AsyncScope. Reviewed By: andriigrynenko Differential Revision: D30005811 fbshipit-source-id: 48c7aa240dc73c0b4dd54e539e620cf69c68c4fd
-
- 10 Sep, 2021 2 commits
-
-
Ruslan Sayfutdinov authored
Summary: From documentation in https://linux.die.net/man/2/ftruncate > The file offset is not changed. Reviewed By: Orvid, Skory Differential Revision: D30843563 fbshipit-source-id: 9314576d927d9ddc07df6d0ceae394d148d7af94
-
Ravindra Sunkad authored
Summary: getdeps.py pulls repos from master branch by default. For FBOSS force it to pull from 'main' Reviewed By: shri-khare Differential Revision: D30857755 fbshipit-source-id: 9891f1ddc08c8f13bdcb00385e1ad4516a84776c
-
- 09 Sep, 2021 5 commits
-
-
Aaryaman Sagar authored
Summary: std::vector<bool>::iterator::operator* returns a temporary proxy bool accessor in many implementations. So range-based for loops over it don't work if we assume non-const lvalue-ref binding, eg. ``` for (auto& ref : vectorBools) { ... } ``` Won't compile. Silly std::vector<bool>. Reviewed By: SmithAndr Differential Revision: D30833990 fbshipit-source-id: cb8d53a48eb2a40587911ad2f0c50b99a472a59c
-
Maged Michael authored
Summary: Shard the domain's list of untagged retired objects. Reviewed By: davidtgoldblatt Differential Revision: D30806913 fbshipit-source-id: 93061ebcd3f62c49eb0f96193e5961c4eeb6f061
-
Maged Michael authored
Summary: Consolidate retired_, the list of non-cohort retired objects, with untagged_, the list of cohort untagged objects, in the domain. Eliminate redundant functions. Reviewed By: davidtgoldblatt Differential Revision: D30806882 fbshipit-source-id: bdcbc4990a3d114f7f6bea294df498c5743bed43
-
Maged Michael authored
Summary: Remove hazptr_priv, the thread-local list of retired objects. Non-cohort retired objects are pushed directly into the domain. Reviewed By: davidtgoldblatt Differential Revision: D30806863 fbshipit-source-id: 526c90f5a198b4e42a55062cb7344e5286bf28fd
-
Adam Simpkins authored
Summary: The primary branch in the GitHub wangle repository has been renamed from `master` to `main`. Update the getdeps manifest to reflect this, so that getdeps builds correctly clone the repository. Reviewed By: xavierd Differential Revision: D30822418 fbshipit-source-id: 9670fff1e85e77adf84485ff8f2236f8826630ef
-
- 08 Sep, 2021 5 commits
-
-
Lucian Grijincu authored
fbcode: symbolizer: clang-12 DWARF5 emits Split DWARF inlining as DW_TAG_skeleton_unit instead of DW_TAG_compile_unit Summary: ```name=clang-9 $ llvm-dwarfdump --show-form buck-out/gen/aab7ed39/folly/experimental/symbolizer/test/symbolizer_test_utils_dwarf5_split_dwarf_inlining#compile-SymbolizerTestUtils.cpp.o1ef1b890\,platform009-clang/SymbolizerTestUtils.cpp.o .debug_info contents: 0x00000000: Compile Unit: length = 0x00000127, format = DWARF32, version = 0x0005, unit_type = DW_UT_skeleton, abbr_offset = 0x0000, addr_size = 0x08, DWO_id = 0x7d3c88943756aebb (next unit at 0x0000012b) 0x00000014: DW_TAG_compile_unit DW_AT_stmt_list (0x00000000) DW_AT_str_offsets_base (0x00000008) DW_AT_comp_dir (".") DW_AT_GNU_pubnames (true) DW_AT_GNU_dwo_name ("buck-out/dbg/gen/aab7ed39/folly/experimental/symbolizer/test/symbolizer_test_utils_dwarf5_split_dwarf_inlining#compile-SymbolizerTestUtils.cpp.o1ef1b890,platform009-clang/SymbolizerTestUtils.cpp.o") DW_AT_low_pc (0x0000000000000000) DW_AT_ranges (indexed (0x0) rangelist = 0x00000010 [0x0000000000000000, 0x000000000000005b) [0x0000000000000000, 0x0000000000000065) [0x0000000000000000, 0x000000000000005a) [0x0000000000000000, 0x0000000000000065) [0x0000000000000000, 0x000000000000000b) [0x0000000000000000, 0x0000000000000076) [0x0000000000000000, 0x0000000000000014) [0x0000000000000000, 0x0000000000000065) [0x0000000000000000, 0x0000000000000076) [0x0000000000000000, 0x0000000000000014) [0x0000000000000000, 0x0000000000000065) [0x0000000000000000, 0x0000000000000085) [0x0000000000000000, 0x000000000000000b)) DW_AT_addr_base (0x00000008) DW_AT_rnglists_base (0x0000000c) ``` ```name=clang-12 $ llvm-dwarfdump --show-form buck-out/gen/aab7ed39/folly/experimental/symbolizer/test/symbolizer_test_utils_dwarf5_split_dwarf_inlining#compile-SymbolizerTestUtils.cpp.o1ef1b890\,platform009-clang-12/SymbolizerTestUtils.cpp.o .debug_info contents: 0x00000000: Compile Unit: length = 0x00000127, format = DWARF32, version = 0x0005, unit_type = DW_UT_skeleton, abbr_offset = 0x0000, addr_size = 0x08, DWO_id = 0xb881aa098abf71b5 (next unit at 0x0000012b) 0x00000014: DW_TAG_skeleton_unit DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008) DW_AT_comp_dir [DW_FORM_strx1] (".") DW_AT_GNU_pubnames [DW_FORM_flag_present] (true) DW_AT_dwo_name [DW_FORM_strx1] ("buck-out/dbg/gen/aab7ed39/folly/experimental/symbolizer/test/symbolizer_test_utils_dwarf5_split_dwarf_inlining#compile-SymbolizerTestUtils.cpp.o1ef1b890,platform009-clang-12/SymbolizerTestUtils.cpp.o") DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000010 [0x0000000000000000, 0x000000000000004c) [0x0000000000000000, 0x000000000000005f) [0x0000000000000000, 0x0000000000000054) [0x0000000000000000, 0x000000000000005f) [0x0000000000000000, 0x000000000000000b) [0x0000000000000000, 0x0000000000000070) [0x0000000000000000, 0x0000000000000014) [0x0000000000000000, 0x000000000000005f) [0x0000000000000000, 0x0000000000000070) [0x0000000000000000, 0x0000000000000014) [0x0000000000000000, 0x000000000000005f) [0x0000000000000000, 0x0000000000000086) [0x0000000000000000, 0x000000000000000b)) DW_AT_addr_base [DW_FORM_sec_offset] (0x00000008) DW_AT_rnglists_base [DW_FORM_sec_offset] (0x0000000c) ``` Differential Revision: D30755400 fbshipit-source-id: 6e7fd8bc9d3bef90a5195dc30dff60c489c4df35
-
Maged Michael authored
Summary: Add build-time flags for setting default spin and yield counts. Reviewed By: fadimounir Differential Revision: D30761279 fbshipit-source-id: 3b74bae438b1f87b1ca8b955bb244eb907b22891
-
Nick Meyer authored
Summary: Deprecate folly::svformat in favor of fmt::format Reviewed By: vitaut Differential Revision: D30521196 fbshipit-source-id: 944054191bbfd296d1f666eb6ace6c4308f6d1ea
-
Maged Michael authored
Summary: Extend cleanup to cover retired cohort objects. The change includes incrementing num_bulk_reclaims_ before invoking do_reclamation either directly or in an executor. The corresponding decrement is done at the completion of do_reclamation, which may happen on a different thread if reclamation is done in an executor. Reviewed By: davidtgoldblatt Differential Revision: D30513628 fbshipit-source-id: 80227e85301274c66cc200ee5228654f1ca07d08
-
Adam Simpkins authored
Summary: The primary branch in the fb303 github repository was renamed from `master` to `main`. Update the `fb303-source` manifest to reflect this. The main `fb303` manifest was already updated in D30700180 (https://github.com/facebook/folly/commit/60d9f5d791d7c6afb5f044538ae45fbe91a043e5). The `fb303-source` manifest is a separate manifest that only fetches the fb303 source code without building it. This is only used by the `eden_scm` manifest. Reviewed By: fanzeyi Differential Revision: D30794650 fbshipit-source-id: 0e7790f8ceb737ce2f26ab213e1f0f94c5b3f045
-
- 07 Sep, 2021 1 commit
-
-
Logan Evans authored
Summary: The naive coinflip algorithm generates a random variable each time the function is called. We can avoid many of these calls to a random number generator by doing some tricky business with math stuff. See https://fb.workplace.com/groups/135724786501553/permalink/5767297086677600/ for some discussion on the topic. The intention behind this code is that we will use it in HHVM. That's why it provides the static methods that allow the caller to supply their own storage space for the counter and their own random number generator. Reviewed By: bmaurer Differential Revision: D30440295 fbshipit-source-id: ee0c3e49da3ec82a9fd6c8854b15ef107755ff39
-
- 05 Sep, 2021 1 commit
-
-
Anthony Shoumikhin authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1641 There's a bug in C++ SDK shipped on Apple platforms that marks `std::optional`'s `value()` as unavailable. To resolve that we should use `operator*` instead. Reviewed By: tcw165 Differential Revision: D30755147 fbshipit-source-id: 4edcf60a7d29abe7eaddceb66501535031553678
-
- 04 Sep, 2021 2 commits
-
-
Lucian Grijincu authored
folly: symbolizer: tests: switch from qsort to lfind -- ASAN in LLVM12 adds an __interceptor_qsort.part.0 which makes stacks differ between ASAN and non-ASAN Summary: LLVM 12's ASAN intercepts qsort and adds a new stack frame for the intercetor `__interceptor_qsort.part.0`. That can be solved by switching offsets between mode/dev & mode/opt, but it only makes tests harder to read. So switch to `lfind` which also lives in a separate `.so` (feature used in tests), but is simple enough that ASAN doesn't need to intercept it. Differential Revision: D30665575 fbshipit-source-id: ba540aede33c37bea8e1f4777bd7325699f9a8d2
-
Lucian Grijincu authored
Summary: folly::symbolizer now supports both DWARF4 and DWARF5 debug info - http://www.dwarfstd.org/doc/DWARF4.pdf - http://www.dwarfstd.org/doc/DWARF5.pdf Split DWARF (Debug Fission) - with `-fsplit-dwarf-inlining`: folly::symbolizer will use the debug info from the skeleton CU. - without `-fsplit-dwarf-inlining`: folly::symbolizer won't read .dwo sections and can't symbolize it (yet). Major things that changed between the standards that affect folly::symbolizer: - new forms DW_FORM_addrx*, DW_FORM_loclistx, DW_FORM_rnglistx, DW_FORM_strx*, whose values are interpreted against new CU attributes DW_AT_addr_base, DW_AT_loclists_base, DW_AT_rnglists_base, DW_AT_str_offsets_base - The .debug_line line header format is completely re-written and the constraint that the file register must be >= 1 was lifted. - DWARF5 `.debug_loclists` replaces DWARF4 `.debug_ranges` Differential Revision: D25521092 fbshipit-source-id: 5b48e8abed495f379d8b119177913f55ae11bd2b
-
- 02 Sep, 2021 2 commits
-
-
Zeyi (Rice) Fan authored
Summary: This diff adds support to customize main branch name when generating GitHub Actions. Differential Revision: D30679305 fbshipit-source-id: 0fc7eb1c97c27e2b42e60cc1ab69a48ab93b93fa
-
Anuradha Weeraman authored
Summary: Some changes that had to be done in Debian for the build to work: * Installation of system deps failed as it was not detecting the OS correctly * Updated the CMake manifest to uncomment the deb dependency as the CMake versions are newer * fb303 was not getting cloned as it was looking for a non-existent master branch Pull Request resolved: https://github.com/facebook/watchman/pull/943 Differential Revision: D30700180 Pulled By: fanzeyi fbshipit-source-id: 62eb9f8ba57510eb98d6bd56e40384bf38a74d8c
-
- 01 Sep, 2021 1 commit
-
-
Shai Szulanski authored
Reviewed By: capickett Differential Revision: D30712092 fbshipit-source-id: 642e642bab883259f177f4419a0c3d562c929beb
-
- 31 Aug, 2021 2 commits
-
-
Jolene Tan authored
Summary: Part of folly vformat and svformat deprecation Reviewed By: vitaut Differential Revision: D30656958 fbshipit-source-id: 0cccb7b2294fada3c61e36cd527af2ef05bb5a0a
-
Maged Michael authored
Summary: Fix an algorithm bug that occurs when the Key or Value types are not nothrow copy constructible. - Nodes (the entities protectable by iterators) may be cloned as a result of rehashing. - Key-value item objects are unique (because they are not copyable). - Multiple nodes may point to the same key-value item. - In the incorrect algorithm, each node has a bool member that indicates if it owns the key-value item or not (i.e., if it is responsible for deleting it). - When a node is cloned, its bool member is cleared. - The problem is that if the key is erased and the clone (or descendant clone) may be reclaimed (because it is unprotected by iterators) then the key value item will be reclaimed, even if a cloned-from node is still protected by iterators. - The failure happens when an iterator holder to a cloned-from node tries to access the already-reclaimed key-value, expecting it (correctly) to be still protected. The fix: - Eliminate the bool owned member in the node structure. - Add a link counter to the key-value item structure. - Increment (atomically) the link counter when the (latest) node to the key-value item is cloned. - Decrement (atomically) the link counter when a node pointing to the item is reclaimed. - Reclaim the item only when its last link is released. - Note that atomic increments and decrements are used only if the node pointing to an item is cloned. Added a test to detect the incorrect behavior. This change fixes only the regular (non-SIMD) version. Currently, the SIMD version fails the added test, therefore (for now) the test is enabled only for the regular version. Reviewed By: davidtgoldblatt Differential Revision: D30371519 fbshipit-source-id: 29e143712afb3ef794f9f6f4d99919d5b4688416
-
- 26 Aug, 2021 2 commits
-
-
Seth Elliott authored
Summary: Add cFollyPromise method declarations that are needed to create an empty `folly::Promise` Reviewed By: Gownta Differential Revision: D30519790 fbshipit-source-id: 46092d5a400b0fccc11a9e77271a18b4f6fa3f6d
-
Shai Szulanski authored
Summary: This ensures the token passed to child tasks continues to be signalled when the token applied to collect* is even after collect returns Reviewed By: ispeters Differential Revision: D30542448 fbshipit-source-id: b286175f4a8c5e5b3e2e628c6611f368ac79c1b6
-
- 25 Aug, 2021 1 commit
-
-
Erich Graham authored
Summary: When compiled with `-Wcovered-switch-default`, Folly fails to build because it adds `default` to switches which are already exhaustive. For C++ safety, these switches are intentionally including a default, so wrap them in a pragma block to indicate that and locally disable the warning. Causes -fmodules import issues for upstream library in D30379442. Still remaining issues with C++ definition: P445339268 Reviewed By: ispeters Differential Revision: D30397871 fbshipit-source-id: adead9e01d0ba3b21c2e1446150cc6fed0f58602
-
- 24 Aug, 2021 1 commit
-
-
Filip Francetic authored
Summary: The len and bytes functions only operate on the current IOBuf, so add some comments explaining it. Reviewed By: nanshu Differential Revision: D30501776 fbshipit-source-id: 997dd77db52a3c11722efff8ae83b05e073e1285
-
- 20 Aug, 2021 1 commit
-
-
Maged Michael authored
Summary: Fix SIMD version to return iterator to new item in insertion operations. Added a test to detect the incorrect behavior. Changed existing tests that di not test the SIMD version to do so. Three of these tests fail without the fix. Reviewed By: davidtgoldblatt Differential Revision: D30435627 fbshipit-source-id: 20ba400be9213fa138fda06e0e7bd84cf9d8cf12
-
- 19 Aug, 2021 3 commits
-
-
Brett Chik authored
Summary: I noticed two mispellings while reading through the code. This fixes them. Reviewed By: Orvid Differential Revision: D30429734 fbshipit-source-id: b976cc4ae4534a9f065b8a7e6fee5a39d7241a28
-
Jason Fried authored
Summary: This definition is the same cython uses for make_shared and make_unique Reviewed By: yfeldblum Differential Revision: D30232407 fbshipit-source-id: 6a0cf4637721bc9d5e5f7f87f3c0f2b031810a5f
-
Felix Handte authored
Summary: Original commit changeset: 7b10cb9dd2c4 `configerator_proxy2` reports a big memory regression. Reverting until we understand what's going on and have a plan to address it. (Note: this ignores all push blocking failures!) Differential Revision: D30401909 fbshipit-source-id: 28443ba08b75c634021965319fead2f8a36b7235
-