fish-shell/src
ridiculousfish 98b0ef532f io_buffer_t to store a promise, not a future, to satisfy TSan
io_buffer_t is a buffer that fills itself by reading from a file
descriptor (typically a pipe). When the file descriptor is widowed, the
operation completes, and it reports completion by marking a
`std::promise<void>`. The "main thread" waits for this by waiting on the
promise's future. However TSan was reporting that the future's destructor
races with its promise's wait method. It's not obvious if this is valid,
but we can fix it by keeping the promise alive until the io_buffer_t is
deallocated.

This fixes the TSan issues reported under
`complete_background_fillthread_and_take_buffer` for #7681 (but there
are other unresolved issues).
2021-02-06 13:28:01 -08:00
..
widecharwidth Incorporate widecharwidth changes for narrow emoji 2020-08-04 12:40:46 -07:00
ast_node_types.inc Introduce a new fish ast 2020-07-04 14:58:02 -07:00
ast.cpp ast: Remove unused variable 2020-11-15 11:19:23 +01:00
ast.h Reformat 2020-11-22 14:39:48 +01:00
autoload.cpp Don't eagerly fetch the current time in autoloading 2020-08-08 15:30:04 -07:00
autoload.h
builtin_argparse.cpp argparse: Make short flag names optional (#7585) 2021-01-01 11:37:25 +01:00
builtin_argparse.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_bg.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_bg.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_bind.cpp Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02:00
builtin_bind.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_block.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_block.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_builtin.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_builtin.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_cd.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_cd.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_command.cpp Reformat 2020-11-22 14:39:48 +01:00
builtin_command.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_commandline.cpp Add concept of edit groups 2021-01-05 15:43:34 -06:00
builtin_commandline.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_complete.cpp complete: Don't require a parameter with --force-files 2021-01-29 18:23:29 +01:00
builtin_complete.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_contains.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_contains.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_disown.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_disown.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_echo.cpp echo: Don't interpret and print options 2021-01-09 08:50:30 +01:00
builtin_echo.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_emit.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_emit.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_eval.cpp Remove fd_set_t 2021-02-05 18:14:50 -08:00
builtin_eval.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_exit.cpp Rework exit command 2020-08-15 16:06:54 -07:00
builtin_exit.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_fg.cpp Reformat 2020-11-22 14:39:48 +01:00
builtin_fg.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_function.cpp Reformat 2020-11-22 14:39:48 +01:00
builtin_function.h Reformat 2020-11-22 14:39:48 +01:00
builtin_functions.cpp Print nicer "defined in" for functions defined on stdin/via source 2020-12-11 23:09:16 +01:00
builtin_functions.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_history.cpp Track histories with shared_ptr 2021-01-09 17:02:11 -08:00
builtin_history.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_jobs.cpp Reformat 2020-11-22 14:39:48 +01:00
builtin_jobs.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_math.cpp math: Wcharify the error message 2020-12-14 23:02:54 +01:00
builtin_math.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_printf.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_printf.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_pwd.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_pwd.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_random.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_random.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_read.cpp read: Remove unused short options 2021-01-26 07:06:25 +01:00
builtin_read.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_realpath.cpp builtin realpath: use absolute path also with -s/--no-symlinks 2020-12-24 08:53:08 +01:00
builtin_realpath.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_return.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_return.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_set_color.cpp Reformat 2020-11-22 14:39:48 +01:00
builtin_set_color.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_set.cpp builtin set: make slice index range optional, like in slice expansion 2021-01-28 07:19:38 +01:00
builtin_set.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_source.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_source.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_status.cpp Always become pgroup leader in interactive mode 2020-12-06 13:42:35 -08:00
builtin_status.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_string.cpp Teach string repeat to handle multiple arguments 2021-01-11 17:00:06 -08:00
builtin_string.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_test.cpp builtin_test: Exit early on float parsing error 2020-11-15 15:15:20 +01:00
builtin_test.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_type.cpp type: Only print function path with "--path" 2021-01-24 15:31:39 +01:00
builtin_type.h Make type a builtin 2020-09-21 20:58:34 +02:00
builtin_ulimit.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_ulimit.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_wait.cpp Relax some main thread requirements around waiting for jobs 2020-09-13 17:54:52 -07:00
builtin_wait.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin.cpp Reformat 2020-11-22 14:39:48 +01:00
builtin.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
color.cpp Another formatting run 2020-06-24 20:43:56 +02:00
color.h
common.cpp Migrate autoclose_fd_t to new file fds.h 2021-02-05 17:58:08 -08:00
common.h Migrate autoclose_fd_t to new file fds.h 2021-02-05 17:58:08 -08:00
complete.cpp Track histories with shared_ptr 2021-01-09 17:02:11 -08:00
complete.h Allow specifying a limit on number of expansion in operation_context 2020-12-22 12:38:51 -08:00
enum_set.h [cppcheck] add some std::move 2020-03-14 15:07:54 -07:00
env_dispatch.cpp Stop repainting in C++ 2020-12-11 18:43:04 +01:00
env_dispatch.h Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02:00
env_universal_common.cpp Fix a warning building on Linux 2021-01-09 13:14:54 -08:00
env_universal_common.h Migrate autoclose_fd_t to new file fds.h 2021-02-05 17:58:08 -08:00
env.cpp Don't inherit windows paths for $PWD 2021-01-17 23:08:04 +01:00
env.h Convert var_table_t to an unordered_map 2020-06-25 00:56:49 -05:00
event.cpp Add event flog 2020-10-06 17:25:45 +02:00
event.h [cppcheck] add some std::move 2020-03-14 15:07:54 -07:00
exec.cpp Remove fd_set_t 2021-02-05 18:14:50 -08:00
exec.h Move autoclose_pipes_t from io.h to fds.h 2021-02-05 17:58:08 -08:00
expand.cpp builtin set: make slice index range optional, like in slice expansion 2021-01-28 07:19:38 +01:00
expand.h Stop expanding globs in command position when performing error checking 2020-12-22 12:38:51 -08:00
fallback.cpp Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02:00
fallback.h Remove lrand48 checks and support 2020-07-08 11:00:12 -07:00
fd_monitor.cpp Pipe fds to move to the "high range" 2021-02-05 17:58:08 -08:00
fd_monitor.h Migrate autoclose_fd_t to new file fds.h 2021-02-05 17:58:08 -08:00
fds.cpp Use pipe2 when creating pipes if avaialble 2021-02-05 17:58:08 -08:00
fds.h fds.h: Add missing types.h include 2021-02-06 19:59:53 +01:00
fish_indent.cpp Migrate more fd-concerned functions from wutil into fds 2021-02-05 17:58:08 -08:00
fish_key_reader.cpp Always become pgroup leader in interactive mode 2020-12-06 13:42:35 -08:00
fish_test_helper.cpp Restyle codebase 2020-12-06 15:39:54 +01:00
fish_tests.cpp Remove fd_set_t 2021-02-05 18:14:50 -08:00
fish_version.cpp
fish_version.h
fish.cpp Add a separate --profile-startup option to profile startup 2021-01-29 20:46:34 +01:00
flog.cpp Stop #include-ing wcstringutil.h in flog.h 2020-07-29 17:04:18 -07:00
flog.h Reformat 2020-11-22 14:39:48 +01:00
function.cpp Stop using env_var_t::to_list in a few places 2020-12-15 15:47:44 +01:00
function.h Move functions_def to function.cpp 2020-09-21 17:44:58 +02:00
future_feature_flags.cpp Make the global feature set an instance variable 2020-09-12 17:35:21 -07:00
future_feature_flags.h Fix a tsan warning in features_t 2021-01-08 19:36:56 -08:00
global_safety.h Reformat 2020-11-22 14:39:48 +01:00
highlight.cpp Expand more when performing history path detection 2021-01-08 12:58:34 -08:00
highlight.h Reorganize and improve commenting of autosuggest_validate_from_history 2020-11-29 12:35:18 -08:00
history_file.cpp Migrate more fd-concerned functions from wutil into fds 2021-02-05 17:58:08 -08:00
history_file.h [clang-tidy] change several member functions to const 2020-04-05 10:13:13 +02:00
history.cpp Track histories with shared_ptr 2021-01-09 17:02:11 -08:00
history.h Track histories with shared_ptr 2021-01-09 17:02:11 -08:00
input_common.cpp Poll the uvar notifier when the reader is interrupted by a signal 2021-01-31 15:42:35 -08:00
input_common.h Add concept of edit groups 2021-01-05 15:43:34 -06:00
input.cpp Add concept of edit groups 2021-01-05 15:43:34 -06:00
input.h Refactor how inputter handles script commands 2020-11-23 19:36:39 -08:00
intern.cpp Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02:00
intern.h
io.cpp io_buffer_t to store a promise, not a future, to satisfy TSan 2021-02-06 13:28:01 -08:00
io.h io_buffer_t to store a promise, not a future, to satisfy TSan 2021-02-06 13:28:01 -08:00
iothread.cpp Pipe fds to move to the "high range" 2021-02-05 17:58:08 -08:00
iothread.h Allow timing-out I/O-able syntax highlighting after expanding abbreviation 2020-11-05 20:07:05 -08:00
job_group.cpp Implement cancel groups 2020-09-03 11:01:27 -07:00
job_group.h Implement cancel groups 2020-09-03 11:01:27 -07:00
kill.cpp Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02:00
kill.h
lru.h Use unordered_map instead of map in lru 2020-08-08 15:32:06 -07:00
maybe.h Clean up some unnecessary variable names in maybe.h 2020-12-19 16:10:40 -08:00
null_terminated_array.cpp Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
null_terminated_array.h Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
operation_context.cpp Allow specifying a limit on number of expansion in operation_context 2020-12-22 12:38:51 -08:00
operation_context.h Expand more when performing history path detection 2021-01-08 12:58:34 -08:00
output.cpp output: Rename some variables 2021-01-11 20:56:15 +01:00
output.h output: Simplify some duplicated code 2021-01-11 20:53:11 +01:00
pager.cpp Revert "Attempt to simplify how completions get presented in the pager" 2020-12-04 16:44:48 +01:00
pager.h Revert "Attempt to simplify how completions get presented in the pager" 2020-12-04 16:44:48 +01:00
parse_constants.h Introduce expansion limits 2020-12-05 13:19:07 -08:00
parse_execution.cpp Add a string_output_stream_t to collect builtin output 2021-02-04 14:12:14 -08:00
parse_execution.h run codebase through clang-tidy 2020-10-25 22:48:49 -07:00
parse_tree.cpp Clean up parse_error_offset_source_start 2020-12-22 12:38:51 -08:00
parse_tree.h Reduce copying in parse_util_detect_errors 2020-07-12 16:57:30 -07:00
parse_util.cpp Handle backslashes properly in locate_brackets_of_type 2021-02-05 22:03:13 +01:00
parse_util.h Remove a stale comment 2020-12-22 12:38:51 -08:00
parser_keywords.cpp Add string to reserved keywords 2020-12-06 15:39:49 +01:00
parser_keywords.h
parser.cpp Add a separate --profile-startup option to profile startup 2021-01-29 20:46:34 +01:00
parser.h Add a separate --profile-startup option to profile startup 2021-01-29 20:46:34 +01:00
path.cpp Simplify some duplicated path checks 2020-12-15 18:15:59 +01:00
path.h Migrate a bunch of code out of common.h 2020-01-15 13:16:43 -08:00
postfork.cpp Reformat 2020-11-22 14:39:48 +01:00
postfork.h Correct reporting of setpgid (parent vs child) 2020-11-20 14:22:42 -06:00
print_help.cpp
print_help.h
proc.cpp Tighten up pipeline-aborting errors 2020-12-13 17:30:26 -08:00
proc.h Tighten up pipeline-aborting errors 2020-12-13 17:30:26 -08:00
reader.cpp Factor out count_preceding_backslashes 2021-01-30 16:20:20 -08:00
reader.h Track histories with shared_ptr 2021-01-09 17:02:11 -08:00
redirection.cpp Collapse io_data switch statements 2019-12-29 15:51:22 -08:00
redirection.h dup2_list_t::resolve_chain to stop returning maybe 2019-12-29 14:49:05 -08:00
sanity.cpp Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
sanity.h
screen.cpp Revert "Stop caching line breaks in the prompt calculation" 2020-11-12 10:55:11 -08:00
screen.h Revert "Stop caching line breaks in the prompt calculation" 2020-11-12 10:55:11 -08:00
signal.cpp signal: Remove redundant set 2020-11-15 15:20:55 +01:00
signal.h Remove use of POLL_IN in SIGIO uvar notifier 2020-10-25 14:52:37 -07:00
termsize.cpp Stop #include-ing wcstringutil.h in flog.h 2020-07-29 17:04:18 -07:00
termsize.h Eliminate the termsize handling from common.h 2020-06-07 20:00:42 -07:00
timer.cpp Refactor: omit parens in lambdas with no parameters 2020-10-10 13:00:24 +02:00
timer.h Make "time" a job prefix 2020-01-03 01:07:49 -06:00
tinyexpr.cpp Also include fallback.h 2020-12-14 23:23:00 +01:00
tinyexpr.h math: Use wchar 2020-12-14 22:54:53 +01:00
tokenizer.cpp Do not treat newlines special in bigword movements 2020-09-27 18:04:09 +02:00
tokenizer.h Separate out variable assignments when completing 2020-09-26 17:30:25 -07:00
topic_monitor.cpp Pipe fds to move to the "high range" 2021-02-05 17:58:08 -08:00
topic_monitor.h Correct a stale comment 2020-08-24 12:12:10 -07:00
trace.cpp Change fish_trace prefix to "->" instead of plusses 2020-12-11 21:24:33 +01:00
trace.h
utf8.cpp Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
utf8.h
util.cpp [clang-tidy] numeric literals to uppercase 2020-04-05 10:13:13 +02:00
util.h Return glob ordering to pre-3.1 state 2020-02-14 19:06:19 +01:00
wcstringutil.cpp Factor out count_preceding_backslashes 2021-01-30 16:20:20 -08:00
wcstringutil.h Factor out count_preceding_backslashes 2021-01-30 16:20:20 -08:00
wgetopt.cpp Remove some dead code and enable a test 2020-08-09 15:05:16 -07:00
wgetopt.h [clang-tidy] change several member functions to const 2020-04-05 10:13:13 +02:00
wildcard.cpp Allow ** glob segments to match zero directories 2020-12-28 23:51:18 -08:00
wildcard.h Clean up some comments around wildcard expansion 2020-12-28 23:51:18 -08:00
wutil.cpp Migrate more fd-concerned functions from wutil into fds 2021-02-05 17:58:08 -08:00
wutil.h Migrate more fd-concerned functions from wutil into fds 2021-02-05 17:58:08 -08:00