aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* test/socket/test_socket.rb (timestamp_retry_rw): IO.select before recvmsgnormal2018-08-201-0/+1
| | | | | | | | | CI failures are still happening from these tests, but try to break out of it earlier instead of holding up the job. [Bug #14898] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Try 4 times for WIN32OLE specseregon2018-08-201-4/+5
| | | | | | | * They seem to fail a lot on: http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/recent.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert r64471eregon2018-08-201-2/+0
| | | | | | | | | * This reverts commit 9ab04897bd06767f773b35c6958a0551981093aa: "don't run specs add at r64409 on Windows" * It doesn't seem to help: http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/recent.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2018-08-21svn2018-08-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Remove extra semicolonkazu2018-08-202-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Update link to Email address specificationkazu2018-08-201-1/+1
| | | | | | | | | The current link leads to 404, I updated to the actual one. [Fix GH-1929] [ci skip] Author: Nikolay Belov <travelerspb@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* spec/ruby/core/io/select_spec.rb: workaround stuck IO.selectnormal2018-08-201-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under pipe page memory pressure on Linux, a pipe may only be created with a single buffer[1]. And as of Linux v4.18, the fs/pipe.c::pipe_poll callback does not account for merging done in fs/pipe::pipe_write; only the number of usable buffers in the pipe. Thus it is possible for a pipe to be writable (if only by a small amount) despite IO.select saying it is not. With the default 16384 /proc/sys/fs/pipe-user-pages-soft value and the pipe having 16 pages of buffers, this issue is trivially reproducible by creating 1024 pipes in a background process before running the spec: $ ulimit -n 2053 # or something higher $ ./miniruby -e '1024.times.map { IO.pipe }; sleep' & $ make test-spec MSPECOPT=spec/ruby/core/io/select_spec.rb So, we create a new pipe we never write to for testing writability of IO.select. This may cause the test to fail with ENFILE on an overloaded system, but at least that's an obvious failure (unlike having a test get stuck). This should reduce failures on our overloaded CI machines: http://ci.rvm.jp/results/trunk-nopara@silicon-docker/1239426 [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/pipe.c?h=v4.18#n642 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_sync.c (rb_condvar_initialize): remove extra semicolonnormal2018-08-191-1/+1
| | | | | | Oops :x git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_sync.c (rb_mutex_sleep): disable interrupt checking in ensurenormal2018-08-191-16/+31
| | | | | | | | | | | | | | | | This is needed to reliably fix ConditionVariable#wait on Thread#kill [Bug #14999] because there is still a chance an interrupt could fire and prevent lock acquisition after an ensure statement. Arguably, rb_mutex_lock itself should be uninterruptible, but that already prevents bootstraptest/test_thread.rb from completing and probably breaks existing use cases. For reference, POSIX expressly forbids EINTR from pthread_mutex_lock. [ruby-core:88556] [Bug #14999] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c (rb_thread_fd_select): fix off-by-one with sigwait_fdnormal2018-08-191-1/+1
| | | | | | | select(2) needs the nfds argument to be one higher than the largest FD in the sets :x git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_sync.rb (rb_condvar_wait): golf out unnecessary variablesnormal2018-08-191-4/+1
| | | | | | | GCC is smart enough to optimize these away, but my attention span is too short :{ git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2018-08-20svn2018-08-191-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_io.rb (test_select_leak): quiet unused variable warningnormal2018-08-191-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* don't run specs add at r64409 on Windowsnaruse2018-08-191-0/+2
| | | | | | Maybe it breaks http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20180817T095734Z.fail.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* select() on all platforms for Socket#recvmsg_nonblock speceregon2018-08-191-1/+1
| | | | | | | * The specs above already do that, and Solaris needs it too: https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20180819T111806Z.fail.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* NEWS: categorized new entries allnobu2018-08-191-45/+74
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix a typo [ci skip]kazu2018-08-191-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_pthread.c: reset timeslice delay when uncontendednormal2018-08-192-3/+7
| | | | | | | | | | | | | | | | This matches the behavior of old timer thread more closely and seems to fix [Bug #14999] when limited to a single CPU. I cannot reproduce the error on a multi-core system unless I use schedtool to force affinity to a single CPU: schedtool -a 0x01 -e make test-spec \ MSPECOPT='-R1000 spec/ruby/library/conditionvariable/wait_spec.rb' While it may be good enough to pass the spec, I don't have huge degree of confidence in the interrupt handling robustness under extremely heavy load (these may be ancient bugs, though). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "thread_sync.c (rb_mutex_sleep): skip interrupt check before sleep"normal2018-08-192-11/+5
| | | | | | This reverts commit 2e420b8b99db4a5b81e2deda1ca386d59ad6bcba (r64464) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Guard spec which only works on Linuxeregon2018-08-181-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_sync.c (rb_mutex_sleep): skip interrupt check before sleepnormal2018-08-182-5/+11
| | | | | | | | We do not want to risk switching threads before going to sleep because it can cause unexpected wakeups and put us in an unexpected state when used with ConditionVariable. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Special case for Solaris 11x on RubyCIeregon2018-08-181-2/+5
| | | | | | * Where localhost is an alias but not the primary name of 127.0.0.1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Be more flexible in the protocol value returned by getaddrinfo()eregon2018-08-181-26/+22
| | | | | | | * Only Solaris 2.10 i386 and Windows seem to return 0 it and other Solaris seem to fill the value. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Adapt pack_sockaddr_in specs for Solariseregon2018-08-181-5/+18
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Use ftp for the service in getaddrinfo/getnameinfo/getservbyname specseregon2018-08-184-64/+55
| | | | | | * Solaris cannot resolve 'http' but can resolve 'ftp'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Simplify to a more standardized Socket SCM constant in specseregon2018-08-181-6/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add guards for Solaris for socket specseregon2018-08-182-6/+6
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Adapt spec to consider Solariseregon2018-08-181-6/+11
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Use 127.0.0.1 instead of localhost in Addrinfo specseregon2018-08-182-15/+12
| | | | | | | * Solaries doesn't support Addrinfo.getaddrinfo('localhost', 80), but supports Addrinfo.getaddrinfo('127.0.0.1', 80). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Accept TypeError for Socket#getnameinfoeregon2018-08-181-2/+4
| | | | | | | * Happens when VALIDATE_SOCKLEN() actually checks the length such as on FreeBSD. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Always set autoclose=false for IO.for_fd fdseregon2018-08-182-1/+3
| | | | | | | * I believe this should be default behavior, see [Feature #2250]. * Now make test-spec MSPECOPT='-R100 spec/ruby/library/socket' works fine. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.svn2018-08-180-0/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Re-add socket specseregon2018-08-1810-0/+1451
| | | | | | | | * This reverts commit df9521fd043df1fb862e46f9b1af83223f16eb2d: "Remove failing spec files" * Platform guards follow in the next commits. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "thread.c (sleep_*): check interrupt before changing th->status"normal2018-08-181-2/+2
| | | | | | | | | This reverts commit 9e59487a38d914275bedcde723923f22b3779e59 (r64449) More (but different) CI failures I can't reproduce locally... http://ci.rvm.jp/results/trunk-test@ruby-sky3/1235951 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2018-08-19svn2018-08-181-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c (sleep_*): check interrupt before changing th->statusnormal2018-08-181-2/+2
| | | | | | | | | | | Having threads switch before we sleep can cause applications to misread the state of the thread. Now, we are consistent with blocking_region_begin behavior and change th->status AFTER checking interrupts. Maybe this can fix [Bug #15002] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert r64441eregon2018-08-182-56/+44
| | | | | | | | | | * This reverts commit 647fc1227a4146ecbfeb0d59358abc8d99cd8ae6: "thread_sync.c (rb_mutex_synchronize): only unlock if we own the mutex" * Let's try to preserve the semantics of always being locked inside Mutex#synchronize, even if an exception interrupts ConditionVariable#wait. * As discussed on [Bug #14999]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Temporary revert "process.c: dead code when no SIGCHLD"naruse2018-08-182-17/+7
| | | | | | | This reverts commit r64407. Maybe it breaks http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20180817T095734Z.fail.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* NEWS: quote false [ci skip]nobu2018-08-181-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* NEWS: converted to Markdown [ci skip]nobu2018-08-181-156/+201
| | | | | | | * NEWS: Converted to Markdown format, from (wrongly) Markdown-mixed RDoc format. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c (sleep_*): reduce the effect of spurious interruptsnormal2018-08-183-16/+28
| | | | | | | | | | | | | Spurious interrupts from SIGCHLD cause Mutex#sleep (via ConditionVariable#wait) to return early and breaks some use cases. Since these are outside the programs's control with MJIT, we will only consider pending interrupts (e.g. those from Thread#run) and signals which cause a Ruby-level Signal.trap handler to fire as "spurious" wakeups. [ruby-core:88537] [Feature #15002] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* [DOC] Fix indent [ci skip]kazu2018-08-181-2/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64442 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_sync.c (rb_mutex_synchronize): only unlock if we own the mutexnormal2018-08-182-44/+56
| | | | | | | | | | | | | | | | | If an exception is raised inside Mutex#sleep (via ConditionVariable#wait), we cannot guarantee we can own the mutex in the ensure callback. However, who owns the mutex at that point does not matter. What matters is the Mutex is usable after an exception occurs. * thread_sync.c (rb_mutex_synchronize): only unlock if we own the mutex * spec/ruby/library/conditionvariable/wait_spec.rb: only test lock usability after thread kill. Who owns the lock at any particular moment is an implementation detail which we cannot easily guarantee. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "thread_sync.c (do_sleep): avoid thread-switch/interrupt check"normal2018-08-181-6/+0
| | | | | | | | This reverts commit d7ddbff2954ba22b71bdfeba4b94e1c4fb91efb0 (r64436) Seems worthless at preventing CI failures git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_sync.c (do_sleep): avoid thread-switch/interrupt checknormal2018-08-181-0/+6
| | | | | | | | | | | | | | | | Calling rb_mutex_sleep directly should avoid thread-switching/interrupt checking which can lead to occasional failures. Unfortunately, this means overriding Mutex#sleep is no longer supported. Will let this commit run for a bit see if CI failures from ConditionVariable specs continue... cf. https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu/ruby-trunk/log/20180817T213003Z.fail.html.gz [ruby-core:88524] [Bug #14999] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Suppress read of ~/.irbrckazu2018-08-181-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_system.rb: suppress prompt and echo on Windowsnobu2018-08-181-0/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/lib/zombie_hunter.rb: enable zombie hunter for MJITk0kubun2018-08-181-3/+0
| | | | | | I think this issue is solved by Eric Wong. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_function.rb: try running test_nogvl_poll againk0kubun2018-08-181-4/+0
| | | | | | | | | According to some runs in mjit-test (make test-all RUN_OPTS="--jit-wait"), this test might not be the cause of its failure. So, let me try running this again. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/downloader.rb: retry 500 from GitHubk0kubun2018-08-181-1/+1
| | | | | | | Unfortunately, GitHub may return 500 for temporary failure: https://travis-ci.org/ruby/ruby/builds/417246523 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e