mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Revert "process.c: try to workaroun SEGV by r65994"
This reverts commit 0e6aba22c6
.
because it didn't help, at all.
http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480207
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65998 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0e6aba22c6
commit
5b12501163
4 changed files with 16 additions and 35 deletions
|
@ -1634,12 +1634,12 @@ VALUE rb_math_sqrt(VALUE);
|
|||
extern int mjit_enabled;
|
||||
VALUE mjit_pause(int wait_p);
|
||||
VALUE mjit_resume(void);
|
||||
void mjit_clean_files(void);
|
||||
void mjit_finish(void);
|
||||
#else
|
||||
#define mjit_enabled 0
|
||||
static inline VALUE mjit_pause(int wait_p){ return Qnil; } /* unreachable */
|
||||
static inline VALUE mjit_resume(void){ return Qnil; } /* unreachable */
|
||||
static void mjit_clean_files(void){}
|
||||
static inline void mjit_finish(void){}
|
||||
#endif
|
||||
|
||||
/* newline.c */
|
||||
|
|
37
mjit.c
37
mjit.c
|
@ -785,29 +785,6 @@ mjit_child_after_fork(void)
|
|||
start_worker();
|
||||
}
|
||||
|
||||
/* Half-baked version of mjit_finish(). It just deletes MJIT-related files.
|
||||
Caller should disable MJIT because it won't work without the deleted files.
|
||||
|
||||
We want to use mjit_finish() for this function's usage but it's somehow broken like:
|
||||
http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480173 */
|
||||
void
|
||||
mjit_clean_files(void)
|
||||
{
|
||||
#ifndef _MSC_VER /* mswin has prebuilt precompiled header */
|
||||
if (!mjit_opts.save_temps && getpid() == pch_owner_pid)
|
||||
remove_file(pch_file);
|
||||
|
||||
xfree(header_file); header_file = NULL;
|
||||
#endif
|
||||
xfree(tmp_dir); tmp_dir = NULL;
|
||||
xfree(pch_file); pch_file = NULL;
|
||||
|
||||
mjit_call_p = FALSE;
|
||||
free_list(&unit_queue);
|
||||
free_list(&active_units);
|
||||
free_list(&compact_units);
|
||||
}
|
||||
|
||||
/* Finish the threads processing units and creating PCH, finalize
|
||||
and free MJIT data. It should be called last during MJIT
|
||||
life. */
|
||||
|
@ -840,7 +817,19 @@ mjit_finish(void)
|
|||
rb_native_cond_destroy(&mjit_worker_wakeup);
|
||||
rb_native_cond_destroy(&mjit_gc_wakeup);
|
||||
|
||||
mjit_clean_files();
|
||||
#ifndef _MSC_VER /* mswin has prebuilt precompiled header */
|
||||
if (!mjit_opts.save_temps && getpid() == pch_owner_pid)
|
||||
remove_file(pch_file);
|
||||
|
||||
xfree(header_file); header_file = NULL;
|
||||
#endif
|
||||
xfree(tmp_dir); tmp_dir = NULL;
|
||||
xfree(pch_file); pch_file = NULL;
|
||||
|
||||
mjit_call_p = FALSE;
|
||||
free_list(&unit_queue);
|
||||
free_list(&active_units);
|
||||
free_list(&compact_units);
|
||||
finish_conts();
|
||||
|
||||
mjit_enabled = FALSE;
|
||||
|
|
2
mjit.h
2
mjit.h
|
@ -66,7 +66,6 @@ RUBY_SYMBOL_EXPORT_END
|
|||
|
||||
extern int mjit_compile(FILE *f, const struct rb_iseq_constant_body *body, const char *funcname, struct rb_call_cache *cc_entries, union iseq_inline_storage_entry *is_entries);
|
||||
extern void mjit_init(struct mjit_options *opts);
|
||||
extern void mjit_finish(void);
|
||||
extern void mjit_gc_start_hook(void);
|
||||
extern void mjit_gc_finish_hook(void);
|
||||
extern void mjit_free_iseq(const rb_iseq_t *iseq);
|
||||
|
@ -132,7 +131,6 @@ void mjit_child_after_fork(void);
|
|||
#else /* USE_MJIT */
|
||||
static inline struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec){return NULL;}
|
||||
static inline void mjit_cont_free(struct mjit_cont *cont){}
|
||||
static inline void mjit_finish(void){}
|
||||
static inline void mjit_gc_start_hook(void){}
|
||||
static inline void mjit_gc_finish_hook(void){}
|
||||
static inline void mjit_free_iseq(const rb_iseq_t *iseq){}
|
||||
|
|
|
@ -2944,13 +2944,7 @@ rb_f_exec(int argc, const VALUE *argv)
|
|||
|
||||
execarg_obj = rb_execarg_new(argc, argv, TRUE, FALSE);
|
||||
eargp = rb_execarg_get(execarg_obj);
|
||||
if (mjit_enabled) {
|
||||
/* TODO: Use mjit_finish() here. We're not doing so because it leads SEGV
|
||||
http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480173 and we don't know why. */
|
||||
mjit_pause(FALSE); /* do not leak children */
|
||||
mjit_clean_files(); /* do not leave files. */
|
||||
mjit_enabled = FALSE; /* MJIT won't work without files deleted above. never JIT-able after exec failure + rescue, for now. */
|
||||
}
|
||||
if (mjit_enabled) mjit_finish(); /* do not leave files or leak children */
|
||||
before_exec(); /* stop timer thread before redirects */
|
||||
rb_execarg_parent_start(execarg_obj);
|
||||
fail_str = eargp->use_shell ? eargp->invoke.sh.shell_script : eargp->invoke.cmd.command_name;
|
||||
|
|
Loading…
Add table
Reference in a new issue