Put rb_fork
back into process.c
Now, calling `rb_fork` directly breaks the PID cache and the timer thread, so must use `rb_fork_ruby` or similar instead.
This commit is contained in:
parent
0867588980
commit
7f7a8fa555
Notes:
git
2023-05-21 16:41:22 +00:00
@ -13661,7 +13661,6 @@ ruby.$(OBJEXT): $(top_srcdir)/internal/loadpath.h
|
|||||||
ruby.$(OBJEXT): $(top_srcdir)/internal/missing.h
|
ruby.$(OBJEXT): $(top_srcdir)/internal/missing.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/internal/object.h
|
ruby.$(OBJEXT): $(top_srcdir)/internal/object.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/internal/parse.h
|
ruby.$(OBJEXT): $(top_srcdir)/internal/parse.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/internal/process.h
|
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/internal/serial.h
|
ruby.$(OBJEXT): $(top_srcdir)/internal/serial.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
|
ruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/internal/string.h
|
ruby.$(OBJEXT): $(top_srcdir)/internal/string.h
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
#include "ruby/ruby.h" /* for VALUE */
|
#include "ruby/ruby.h" /* for VALUE */
|
||||||
#include "internal/compilers.h" /* for __has_warning */
|
#include "internal/compilers.h" /* for __has_warning */
|
||||||
#include "internal/imemo.h" /* for RB_IMEMO_TMPBUF_PTR */
|
#include "internal/imemo.h" /* for RB_IMEMO_TMPBUF_PTR */
|
||||||
#include "internal/warnings.h" /* for COMPILER_WARNING_PUSH */
|
|
||||||
|
|
||||||
#define RB_MAX_GROUPS (65536)
|
#define RB_MAX_GROUPS (65536)
|
||||||
|
|
||||||
@ -122,17 +121,4 @@ ARGVSTR2ARGC(VALUE argv_str)
|
|||||||
return i - 1;
|
return i - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_WORKING_FORK
|
|
||||||
COMPILER_WARNING_PUSH
|
|
||||||
#if __has_warning("-Wdeprecated-declarations") || RBIMPL_COMPILER_IS(GCC)
|
|
||||||
COMPILER_WARNING_IGNORED(-Wdeprecated-declarations)
|
|
||||||
#endif
|
|
||||||
static inline rb_pid_t
|
|
||||||
rb_fork(void)
|
|
||||||
{
|
|
||||||
return fork();
|
|
||||||
}
|
|
||||||
COMPILER_WARNING_POP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* INTERNAL_PROCESS_H */
|
#endif /* INTERNAL_PROCESS_H */
|
||||||
|
11
process.c
11
process.c
@ -1573,6 +1573,17 @@ after_fork_ruby(rb_pid_t pid)
|
|||||||
|
|
||||||
#if defined(HAVE_WORKING_FORK)
|
#if defined(HAVE_WORKING_FORK)
|
||||||
|
|
||||||
|
COMPILER_WARNING_PUSH
|
||||||
|
#if __has_warning("-Wdeprecated-declarations") || RBIMPL_COMPILER_IS(GCC)
|
||||||
|
COMPILER_WARNING_IGNORED(-Wdeprecated-declarations)
|
||||||
|
#endif
|
||||||
|
static inline rb_pid_t
|
||||||
|
rb_fork(void)
|
||||||
|
{
|
||||||
|
return fork();
|
||||||
|
}
|
||||||
|
COMPILER_WARNING_POP
|
||||||
|
|
||||||
/* try_with_sh and exec_with_sh should be async-signal-safe. Actually it is.*/
|
/* try_with_sh and exec_with_sh should be async-signal-safe. Actually it is.*/
|
||||||
#define try_with_sh(err, prog, argv, envp) ((err == ENOEXEC) ? exec_with_sh((prog), (argv), (envp)) : (void)0)
|
#define try_with_sh(err, prog, argv, envp) ((err == ENOEXEC) ? exec_with_sh((prog), (argv), (envp)) : (void)0)
|
||||||
static void
|
static void
|
||||||
|
1
ruby.c
1
ruby.c
@ -54,7 +54,6 @@
|
|||||||
#include "internal/missing.h"
|
#include "internal/missing.h"
|
||||||
#include "internal/object.h"
|
#include "internal/object.h"
|
||||||
#include "internal/parse.h"
|
#include "internal/parse.h"
|
||||||
#include "internal/process.h"
|
|
||||||
#include "internal/variable.h"
|
#include "internal/variable.h"
|
||||||
#include "ruby/encoding.h"
|
#include "ruby/encoding.h"
|
||||||
#include "ruby/thread.h"
|
#include "ruby/thread.h"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user