From: duerst@... Date: 2018-09-25T06:32:49+00:00 Subject: [ruby-core:89156] [Ruby trunk Bug#15130] open-uri hangs on cygwin Issue #15130 has been updated by duerst (Martin D��rst). I managed to create a very short script that seem so recreate the problem (or at least something similar). It seems to happen with a `Timeout` inside a `Timeout` (I didn't manage to create a problem with only one `Timeout`). Here's the script: ````ruby require 'timeout' def time_out begin Timeout.timeout(3) do |_| puts 'Before sleeping in method' sleep 1 puts 'After sleeping in method' end rescue Timeout::Error puts 'Timeout triggered in method' end end begin Timeout.timeout(5) do |_| puts 'Before sleeping' sleep 1 puts 'After sleeping, before method call' time_out puts 'After method call' end rescue Timeout::Error puts 'Timeout triggered' end ```` When I run this, I get all the expected output, as follows: ``` Before sleeping After sleeping, before method call Before sleeping in method After sleeping in method ``` but this script, rather than stopping after that (2 seconds overall), just hangs (for minutes), until I use Ctrl-C. At that point, it prints out ``` Traceback (most recent call last): ../timeout_test.rb: execution expired (Timeout::Error) ``` ---------------------------------------- Bug #15130: open-uri hangs on cygwin https://bugs.ruby-lang.org/issues/15130#change-74187 * Author: duerst (Martin D��rst) * Status: Open * Priority: Normal * Assignee: normalperson (Eric Wong) * Target version: * ruby -v: ruby 2.6.0dev (2018-09-16 trunk 64761) [x86_64-cygwin] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- After using `make; make runnable`, the following one-liner hangs: ``` ./ruby -ropen-uri -e 'open "http://web.mit.edu/index.html"' ``` This happens on any http URI, but not for local files. The above URI is just an example. I would have chosen ruby-lang.org if it was still using http, but I didn't want to complicate this with https. The `open` work for local files. I discovered this when trying to use `make up`, where the downloading of Unicode data files just hung. Here's the trace I get after hitting Ctrl-C: Traceback (most recent call last): 15: from -e:1:in `
' 14: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:35:in `open' 13: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:736:in `open' 12: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:165:in `open_uri' 11: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:224:in `open_loop' 10: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:224:in `catch' 9: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:226:in `block in open_loop' 8: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:758:in `buffer_open' 7: from /cygdrive/c/Data/ruby_test_copy/lib/open-uri.rb:337:in `open_http' 6: from /cygdrive/c/Data/ruby_test_copy/lib/net/http.rb:924:in `start' 5: from /cygdrive/c/Data/ruby_test_copy/lib/net/http.rb:935:in `do_start' 4: from /cygdrive/c/Data/ruby_test_copy/lib/net/http.rb:950:in `connect' 3: from /cygdrive/c/Data/ruby_test_copy/lib/timeout.rb:103:in `timeout' 2: from /cygdrive/c/Data/ruby_test_copy/lib/timeout.rb:97:in `block in timeout' 1: from /cygdrive/c/Data/ruby_test_copy/lib/timeout.rb:97:in `ensure in block in timeout' /cygdrive/c/Data/ruby_test_copy/lib/timeout.rb:97:in `join': Interrupt My plan is to (manually) bisect this to find the offending commit. One suspicion I have is that the problem is related to timeouts, but this is not confirmed at all. Any help is appreciated. ---Files-------------------------------- 0001-thread_pthread.c-fall-back-to-UBF_TIMER_PTHREAD-for-.patch (1.29 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: