* thread.c (rb_thread_schedule_limits): set th#yielding while
release GVL to yield CPU time.
* thread.c (timer_thread_function): skip timer interrupt when
th#yielding is true. This patch fixes r35480.
* thread.c (rb_threadptr_execute_interrupts_common): revert
a patch of r35480.
* ChangeLog: add an extended memo of r35480.
http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/R35480_ExtendedMemo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
unsigned long long on Win64.
[ruby-core:44636][Bug #6364] reported by raylinn@gmail.com (ray linn)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
handle timer_interrupt only on the first loop for the case to avoid
the infinite loop like following case:
* there is 2 Ruby threads (3 pthreads)
(1) main thread is waiting at gvl_yield:112 (native_cond_wait)
(2) sub thread works
(3) sub thread waits at gvl_yield:133 (native_mutex_unlock)
(4) main thread works
(5) main thread goes to gvl_acquire_common
(6) main thread call rb_wakeup_timer_thread
(7) timer thread set timer interrupt to the main thread
(8) main thread works
(9) main thread waits at gvl_acquire_common:64 (native_cond_wait)
(10) sub tread works
(11) set sub thread as the current thread
(12) run Ruby thread
(13) ...100ms
(14) sub thread goes to rb_threadptr_execute_interrupts_common
(15) sub thread call rb_thread_schedule_limits
(16) sub thread call gvl_release_common
(17) sub threads waits at gvl_yield:121 (native_cond_wait)
(18) main threads works
(19) main thread back to gvl_yield
(20) set main thread as the current thread
(21) main thread call gvl_yield
(22) main thread waits at gvl_yield:112 (native_cond_wait)
As described above, the main thread can't escape from
rb_threadptr_execute_interrupts_common.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
test for r35467. OptionParser#to_a shouldn't split banner by spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
format.
(addrinfo_mload): show more information on "too long AF_UNIX path"
error.
(addrinfo_unix_path): ditto for "too short AF_UNIX address" and
"too long AF_UNIX address" error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
when it is too long for Unix socket.
* ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
* ext/socket/socket.c (sock_s_pack_sockaddr_un): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
and MUST TEST IT, MUST RUN THE TEST, MUST VERIFY BEFORE BACKPORT.
[ruby-dev:45568][Bug #6348]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
are available as a condition of same case clause.
And remove infomation ('#n') because we can find duplicated
condition with explicit line numbers.
[ruby-core:38343] [Ruby 1.9 - Bug #5068]
* test/ruby/test_syntax.rb: add a test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
FindChildSlotByHandle() before passing poll_child_status().
this fixed a SEGV in test-all. reported by ko1 via IRC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
source_location of blocks. [ruby-core:42232] [Bug #5930]
* test/ruby/test_proc.rb: add a test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/rubygems/test_gem_specification.rb (test_to_yaml_emits_syck_compat_yaml):
test with psych.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35442 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/net/imap.rb (Net::IMAP): see if actually used SSL is defined to
get rid of autoloaded OpenSSL.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/net/http.rb (Net::OpenSSL): get rid of autoload in global scope
not to make tests confused.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/net/http.rb (Net::HTTP#transport_request): deal with
Net::OpenTimeout and Net::ReadTimeout first to get rid of loading
OpenSSL as possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e