Skip to content
  • nagachika's avatar
    194a5525
    merge revision(s) 1ef39d8d: [Backport #15798] · 194a5525
    nagachika authored
    	Fix process not waking up on signals on OpenBSD
    
    	When using UBF_TIMER_PTHREAD (the UBF handler on OpenBSD), the
    	timer_pthread_fn function will not signal the main thread with
    	SIGVTALRM in cases where timer_pthread is armed before
    	consume_communication_pipe is called.  This is because
    	consume_communication_pipe will unarm the timer.
    
    	Fix this by checking the return value of consume_communication_pipe.
    	If it returns TRUE and the timer_pthread is disarmed, then signal
    	the main thread with SIGVTALRM.
    
    	On OpenBSD, this fixes TestThread#test_thread_timer_and_interrupt, and
    	fixes hangs in TestProcess#test_execopts_redirect_open_fifo_interrupt_raise
    	and TestProcess#test_execopts_redirect_open_fifo_interrupt_print.
    	It also fixes the use of Ctrl+C/SIGINT in irb on OpenBSD. It does not
    	cause any test failures on Linux when UBF_TIMER_PTHREAD is forced as
    	the UBF handler.
    
    	Fixes [Bug #15798]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    194a5525
    merge revision(s) 1ef39d8d: [Backport #15798]
    nagachika authored
    	Fix process not waking up on signals on OpenBSD
    
    	When using UBF_TIMER_PTHREAD (the UBF handler on OpenBSD), the
    	timer_pthread_fn function will not signal the main thread with
    	SIGVTALRM in cases where timer_pthread is armed before
    	consume_communication_pipe is called.  This is because
    	consume_communication_pipe will unarm the timer.
    
    	Fix this by checking the return value of consume_communication_pipe.
    	If it returns TRUE and the timer_pthread is disarmed, then signal
    	the main thread with SIGVTALRM.
    
    	On OpenBSD, this fixes TestThread#test_thread_timer_and_interrupt, and
    	fixes hangs in TestProcess#test_execopts_redirect_open_fifo_interrupt_raise
    	and TestProcess#test_execopts_redirect_open_fifo_interrupt_print.
    	It also fixes the use of Ctrl+C/SIGINT in irb on OpenBSD. It does not
    	cause any test failures on Linux when UBF_TIMER_PTHREAD is forced as
    	the UBF handler.
    
    	Fixes [Bug #15798]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading