Bug #15072
closedthread.c:4356:5: error: implicit declaration of function ‘ubf_list_atfork’
Description
When compiling on cygwin, I get the following error:
compiling thread.c
thread.c: In function ‘rb_thread_atfork_internal’:
thread.c:4356:5: error: implicit declaration of function ‘ubf_list_atfork’ [-Werror=implicit-function-declaration]
ubf_list_atfork();
^~~~~~~~~~~~~~~
The ubf_list_atfork
function was introduced by issue #15013 in r64485.
The problem is that the function is defined as static in thread_pthread.c, but is used in thread.c. Not being an expert on threads, I thought that maybe ubf_list_atfork
is a function that's available on some OSes, but that can't be the case. I only got empty results when searching for it.
There's also a macro for ubf_list_atfork
in thread_win32.c, but that doesn't seem to be related here.
[below it says my Ruby version is trunk 64156, but I'm compiling on HEAD.]
Updated by normalperson (Eric Wong) about 6 years ago
duerst@it.aoyama.ac.jp wrote:
I think copying the macro for win32 for the !USE_UBF_LIST
case should work(*). Can you test and commit if it works?
(too tired and might not be back online soon)
diff --git a/thread_pthread.c b/thread_pthread.c
index 0159b65291..2fc8f1d681 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -1379,7 +1379,8 @@ ubf_wakeup_all_threads(void)
#define ubf_select 0
static void ubf_wakeup_all_threads(void) { return; }
static int ubf_threads_empty(void) { return 1; }
+#define ubf_list_atfork() do {} while (0)
#endif /* USE_UBF_LIST */
#define TT_DEBUG 0
#define WRITE_CONST(fd, str) (void)(write((fd),(str),sizeof(str)-1)<0)
Something similar for ubf_timer_disarm() might be needed, too.
(*) Because ubf_list stuff is disabled on Cygwin (Not sure why,
it's always been that way):
#if defined(SIGVTALRM) && !defined(CYGWIN)
define USE_UBF_LIST 1¶
#endif
Updated by duerst (Martin Dürst) about 6 years ago
- Status changed from Open to Closed
That fix worked, thanks! Committed with r64635, okay on travis, not sure about other CIs.
Updated by duerst (Martin Dürst) about 6 years ago
- Related to Bug #15130: Nested Timeouts hang on cygwin added
Updated by duerst (Martin Dürst) about 6 years ago
- Status changed from Closed to Open
duerst (Martin Dürst) wrote:
That fix worked, thanks! Committed with r64635, okay on travis, not sure about other CIs.
Sorry for reopening. It seemed to work, but it left #15130. So I'm reopening this.
The issue here started with the commit at r64485.
Any help appreciated!
Updated by normalperson (Eric Wong) almost 2 years ago
- Status changed from Open to Closed
Fixed in #15130