Status update for FTBFS on GNU/kFreeBSD

 - fail of t226.rb is handled in #543805
 - fail of t916.rb will be gone after next upload of eglibc
 - the t913.rb currently hangs the whole build, similarly also all tests 
TestProcess#test_*
   after next upload (and install) of eglibc and kfreebsd-7 it will only
   fail and majority of TestProcess#test_* will pass.

On the other hand, I see some problems with handling of fork()/exec().
There really should be reinitialization of locks in child,
the timer should be started using pthread_once(), the current
approach is fragile and might lead to start of more timer threads.
IMHO, the code needs audit in this area.

I.e., I really doubt the following code in process.c
for rb_f_fork(VALUE obj) is correct:

    switch (pid = rb_fork(0, 0, 0, Qnil)) {
      case 0:
#ifdef linux
        after_exec();
#endif
        rb_thread_atfork();
        if (rb_block_given_p()) {
            int status;

            rb_protect(rb_yield, Qundef, &status);
            ruby_stop(status);
        }

The conditional after_exec() shouldn't be here.
There is already "after_fork()" at line 2331,
which is executed for both parent and child.
The exception is when chfunc is not NULL,
then it is not executed at all.

Petr




--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to