ruby/internal
KJ Tsanaktsidis 5b6009870d Ensure fiber scheduler is woken up when close interrupts read
If one thread is reading and another closes that socket, the close
blocks waiting for the read to abort cleanly. This ensures that Ruby is
totally done with the file descriptor _BEFORE_ we tell the OS to close
and potentially re-use it.

When the read is correctly terminated, the close should be unblocked.
That currently works if closing is happening on a thread, but if it's
happening on a fiber with a fiber scheduler, it does NOT work.

This patch ensures that if the close happened in a fiber scheduled
thread, that the scheduler is notified that the fiber is unblocked.

[Bug #20723]
2024-09-23 09:25:10 -07:00
..
array.h Suppress array-bounds warnings from gcc 13 2023-11-07 23:19:51 +09:00
basic_operators.h Emit special instruction for array literal + .(hash|min|max) 2023-04-18 17:16:22 -07:00
bignum.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
bits.h Make popcount bit-masks stricter 2023-10-05 20:03:54 +09:00
class.h merge revision(s) e626da82eae3d437b84d4f9ead0164d436b08e1a,f3af5ae7e6c1c096bbfe46d69de825a02b1696cf: [Backport #20311] (#10312) 2024-03-21 05:31:36 +00:00
cmdlineopt.h [Feature #19790] Rename BUGREPORT_PATH as CRASH_REPORT 2023-09-25 22:57:28 +09:00
compar.h Introduce BOP_CMP for optimized comparison 2022-12-06 12:37:23 -08:00
compile.h Move the PC regardless of the leaf flag (#8232) 2023-08-16 20:28:33 -07:00
compilers.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
complex.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
cont.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
dir.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
enc.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
encoding.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
enum.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
enumerator.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
error.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
eval.h merge revision(s) 58918788ab: [Backport #20342] 2024-05-29 15:40:49 -07:00
file.h Revert "reuse open(2) from rb_file_load_ok on POSIX-like system" 2023-02-27 09:24:45 -08:00
fixnum.h Fix rb_fix_mul_fix on OpenBSD/mips64 2022-07-03 09:42:44 -07:00
gc.h Fix compaction for generic ivars 2023-11-24 13:29:04 -05:00
hash.h Add rb_hash_free for the GC to use 2023-09-24 09:07:52 -04:00
imemo.h Manage rb_strterm_t without imemo 2023-10-14 11:08:43 +09:00
inits.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
io.h do not redefine a typedef 2023-08-25 17:27:53 +09:00
load.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
loadpath.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
math.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
missing.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
numeric.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
object.h merge revision(s) d19d683a354530a27b4cbb049223f8dc70c75849,de1a586ecc2ee7f465f0c0a69291054136a3a819: [Backport #20250] (#10308) 2024-03-21 01:45:01 +00:00
parse.h Shorten rb_strterm_literal_t members 2023-10-14 11:08:43 +09:00
proc.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
process.h Put rb_fork back into process.c 2023-05-21 23:00:27 +09:00
ractor.h internal/ractor.h: Added 2022-03-30 16:50:46 +09:00
random.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
range.h Implement Struct on VWA 2023-06-05 15:47:16 -04:00
rational.h Don't redefine RB_OBJ_WRITE 2023-01-18 08:49:32 -05:00
re.h Stop allocating unused backref strings at defined? 2023-06-27 23:14:10 +09:00
ruby_parser.h Export functions used for builtins 2023-11-08 13:02:55 +09:00
sanitizers.h Remove obsoleted MJIT_HEADER macro 2023-03-06 22:29:35 -08:00
serial.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
signal.h Move posix_signal declaration internal with prefix ruby_ 2023-07-17 21:31:59 +09:00
static_assert.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
string.h merge revision(s) 5e0c171451: [Backport #20169] 2024-05-28 14:22:45 -07:00
struct.h Remove unused references to the transient heap 2023-07-13 14:48:14 -04:00
symbol.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
thread.h Ensure fiber scheduler is woken up when close interrupts read 2024-09-23 09:25:10 -07:00
time.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
transcode.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
util.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
variable.h Fix compaction for generic ivars 2023-11-24 13:29:04 -05:00
vm.h Correct free_on_exit env var to free_at_exit 2023-12-20 14:36:32 +09:00
warnings.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00