[ruby-cvs:78384] 36da0b3da1 (master): check interrupts at each frame pop timing.

"Koichi Sasada" <[email protected]>
Newsgroups gmane.comp.lang.ruby.cvs
Message-ID <[email protected]>
Koichi Sasada	2019-11-29 17:39:06 +0900 (Fri, 29 Nov 2019)

  New Revision: 36da0b3da1

  https://github.com/ruby/ruby/commit/36da0b3da1

  Log:
    check interrupts at each frame pop timing.
    
    Asynchronous events such as signal trap, finalization timing,
    thread switching and so on are managed by "interrupt_flag".
    Ruby's threads check this flag periodically and if a thread
    does not check this flag, above events doesn't happen.
    
    This checking is CHECK_INTS() (related) macro and it is placed
    at some places (laeve instruction and so on). However, at the end
    of C methods, C blocks (IMEMO_IFUNC) etc there are no checking
    and it can introduce uninterruptible thread.
    
    To modify this situation, we decide to place CHECK_INTS() at
    vm_pop_frame(). It increases interrupt checking points.
    [Bug #16366]
    
    This patch can introduce unexpected events...

  Modified files:
    enum.c
    ext/-test-/postponed_job/postponed_job.c
    insns.def
    spec/ruby/core/thread/raise_spec.rb
    test/-ext-/postponed_job/test_postponed_job.rb
    test/ruby/test_thread.rb
    vm_insnhelper.c
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.