Issue #13514 has been updated by ko1 (Koichi Sasada).
Do you expect such situation?
(1) run ruby code # acquiring GVL
(2) run func on without_gvl() # releasing GVL
(3) run func on with_gvl() # re-acquire GVL
(4) run func on without_gvl() # releasing GVL <- here
I agree. It has a problem. But we should save UBF at `with_gvl()` function, I assume.
And checking `thread.c`, it is saved.
What situation do you assume?
----------------------------------------
Misc #13514: [PATCH] thread_pthread.c (native_sleep): preserve old unblock function
https://bugs.ruby-lang.org/issues/13514#change-64498
* Author: normalperson (Eric Wong)
* Status: Open
* Priority: Normal
* Assignee:
----------------------------------------
Do not blindly clobber UBF if one exists, emulating the
behavior of the set_unblock_function and reset_unblock_function
pair.
I think the native_sleep implementation in thread_win32.c,
can use a similar change; but I do not run non-Free software
so I cannot test.
I'm pretty sure this is correct, and will commit in a few days.
On the other hand, I'm not sure if anybody is affected by this.
If it's OK, somebody should also update thread_win32.c since I'm
not comfortable doing so without being able to test.
---Files--------------------------------
0001-thread_pthread.c-native_sleep-preserve-old-unblock-f.patch (1.21 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>