Issue 4020 in selenium: Ruby webdriver hangs on `Selenium::WebDriver.for`

38 views
Skip to first unread message

sele...@googlecode.com

unread,
Jun 2, 2012, 4:38:13 PM6/2/12
to selenium-develope...@googlegroups.com
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium Status-Untriaged

New issue 4020 by xav...@squareup.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

The following script:

require 'selenium-webdriver'

browser = Selenium::WebDriver.for(:firefox)
puts browser.inspect

Shows a browser and output with version 2.21.2.
On 2.22.0 and 1 it hangs and shows no output, and does not appear to try to
launch Firefox.

(I use a Gemfile and bundle exec to lock to specific versions to verify)

OS: OSX 10.7.4
Browser: Firefox
Browser version: Checked on 3.X and 12
Ruby version: 1.9.3-p194, ruby 1.8.7.

This seems like an obvious problem that would have been caught earlier, so
I'm afraid it's just me, but it is completely reproducible on my machine.

I managed to get this stack trace once on 1.8.7:
Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/platform.rb:153:in
`getaddress':
Interrupt
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/platform.rb:153:in
`ip'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/platform.rb:158:in
`interfaces'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/port_prober.rb:23:in
`free?'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/port_prober.rb:5:in
`above'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/firefox/launcher.rb:49:in
`find_free_port'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/firefox/launcher.rb:33:in
`launch'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/firefox/socket_lock.rb:20:in
`locked'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/firefox/launcher.rb:32:in
`launch'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/firefox/bridge.rb:19:in
`initialize'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/driver.rb:31:in
`new'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/driver.rb:31:in
`for'
from
/Users/xavier/.rvm/gems/ree-1.8.7-2011.03/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver.rb:65:in
`for'


sele...@googlecode.com

unread,
Jun 3, 2012, 5:58:10 PM6/3/12
to selenium-develope...@googlegroups.com
Updates:
Status: NeedsClarification
Owner: jari.bakken
Labels: -Status-Untriaged Component-WebDriver Lang-Ruby

Comment #1 on issue 4020 by jari.bakken: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

Does this hang as well?

$ ruby -rsocket -e 'p IPSocket.getaddress(Socket.gethostname)'

Anything special about your network or network configuration?

sele...@googlecode.com

unread,
Jun 3, 2012, 6:00:01 PM6/3/12
to selenium-develope...@googlegroups.com

Comment #2 on issue 4020 by jari.bakken: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

Would also be good to see the output of this:

$ ruby -r selenium-webdriver -e 'p
Selenium::WebDriver::Platform.interfaces'

sele...@googlecode.com

unread,
Jun 4, 2012, 12:15:02 PM6/4/12
to selenium-develope...@googlegroups.com

Comment #3 on issue 4020 by mclean.b...@gmail.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

Jari, we started seeing this as well after changing to 2.22.0.
This hangs indefinitely without any output:

driver = Selenium::WebDriver.for :firefox

We have temporarily changed to using remote webdriver to keep the test
suite running, using the same local firefox:

caps = Selenium::WebDriver::Remote::Capabilities.firefox
url = 'http://localhost:4444/wd/hub'
driver = Selenium::WebDriver.for(:remote, :url =>
url, :desired_capabilities => caps)

$ ruby -rsocket -e 'p IPSocket.getaddress(Socket.gethostname)'
-e:1:in `getaddress': getaddrinfo: Name or service not known (SocketError)
from -e:1:in `<main>'

$ ruby -r selenium-webdriver -e 'p Selenium::WebDriver::Platform.interfaces'
-e:1:in `<main>': undefined method `interfaces' for
Selenium::WebDriver::Platform:Module (NoMethodError)

Which makes sense? I don't see an 'interfaces' method in the doc.
http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Platform.html


sele...@googlecode.com

unread,
Jun 4, 2012, 3:14:26 PM6/4/12
to selenium-develope...@googlegroups.com

Comment #4 on issue 4020 by xav...@squareup.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

My network is pretty standard - macbook pro connected over wifi.

> ruby -rsocket -e 'p IPSocket.getaddress(Socket.gethostname)'
-e:1:in `getaddress': getaddrinfo: nodename nor servname provided, or not
known (SocketError)
from -e:1:in `<main>'
> ruby -r selenium-webdriver -e 'p Selenium::WebDriver::Platform.interfaces'
/Users/xavier/.rvm/gems/ruby-1.9.3-p194/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/platform.rb:153:in
`getaddress':
getaddrinfo: nodename nor servname provided, or not known
(SocketError)
from
/Users/xavier/.rvm/gems/ruby-1.9.3-p194/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/platform.rb:153:in
`ip'
from
/Users/xavier/.rvm/gems/ruby-1.9.3-p194/gems/selenium-webdriver-2.22.1/lib/selenium/webdriver/common/platform.rb:158:in
`interfaces'

sele...@googlecode.com

unread,
Jun 4, 2012, 6:26:07 PM6/4/12
to selenium-develope...@googlegroups.com

Comment #5 on issue 4020 by jari.bakken: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

OK, so the problem is that neither of you can't get the IP of your current
hostname, which is odd. I can't reproduce the error on any of my machines.

I can however reproduce a problem where the *wrong* IP is returned (issue
3987), so I'm currently looking at alternatives to the IPSocket API which
may very well solve this problem.

@3: Platform.interfaces was added in v2.22.1

sele...@googlecode.com

unread,
Jun 5, 2012, 5:53:21 AM6/5/12
to selenium-develope...@googlegroups.com

Comment #6 on issue 4020 by barancev: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

Issue 4023 has been merged into this issue.

sele...@googlecode.com

unread,
Jun 5, 2012, 10:49:36 AM6/5/12
to selenium-develope...@googlegroups.com

Comment #7 on issue 4020 by jari.bakken: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

I've pushed 2.22.2.rc1. Can you try that (`gem install selenium-webdriver
--pre`) and report back?

sele...@googlecode.com

unread,
Jun 5, 2012, 11:16:31 AM6/5/12
to selenium-develope...@googlegroups.com

Comment #8 on issue 4020 by jari.bakken: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

Oops, rc1 included an unintended change that would invalidate the test.
Please check rc2 instead.

sele...@googlecode.com

unread,
Jun 5, 2012, 11:29:43 AM6/5/12
to selenium-develope...@googlegroups.com

Comment #9 on issue 4020 by mclean.b...@gmail.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

I added gem 'selenium-webdriver', '2.22.2.rc2' to my Gemfile.
Firefox opens correctly, all test pass.

sele...@googlecode.com

unread,
Jun 5, 2012, 11:30:53 AM6/5/12
to selenium-develope...@googlegroups.com
Updates:
Status: Fixed

Comment #10 on issue 4020 by jari.bakken: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

Great, thanks. I'll push 2.22.2. shortly.

sele...@googlecode.com

unread,
Jul 31, 2012, 10:22:36 PM7/31/12
to selenium-develope...@googlegroups.com

Comment #11 on issue 4020 by barry....@gmail.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

I'm still getting the "getaddrinfo: nodename nor servname provided, or not
known" error intermittently with 2.24.0. I see it about 25% of the time.

p Selenium::WebDriver::Platform.interfaces #=>
["127.0.0.1", "0.0.0.0", "10.244.3.184"]

p IPSocket.getaddress(Socket.gethostname) #=> "127.0.0.1"

I'm running the browser through Sidekiq (and running7 concurrent workers at
once, but each worker is supposed to have it's own browser connection).

Any ideas on how to troubleshoot this further?

sele...@googlecode.com

unread,
Aug 1, 2012, 4:54:03 AM8/1/12
to selenium-develope...@googlegroups.com

Comment #12 on issue 4020 by jari.bakken: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

@barry.cox: Please try the latest gem (2.25). If you're still seeing the
problem, attach the output of running your code with $DEBUG = true (or pass
-d to Ruby).



sele...@googlecode.com

unread,
Aug 13, 2012, 8:04:54 AM8/13/12
to selenium-develope...@googlegroups.com

Comment #13 on issue 4020 by tas...@gmail.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

The 2.25 version does not work in Jruby, IE and Firefox both hang and just
chews up memory by the JVM. Anyone has any suggestion? It works in 1.9 Matz
Ruby though.

sele...@googlecode.com

unread,
Aug 20, 2012, 5:57:29 AM8/20/12
to selenium-develope...@googlegroups.com

Comment #14 on issue 4020 by ken...@gmail.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

This is because some machines(Windows 2008 or Windows 7) has IPv6
configured), so let's say we have an interface with ip '0:0:0:0:0:0:0:1',
when we execute the following code, and got error message:

require 'socket'
TCPServer.new('0:0:0:0:0:0:0:1', 7055).close

SocketError: initialize: name or service not known
initialize at org/jruby/ext/socket/RubyTCPServer.java:153
new at org/jruby/RubyIO.java:876

sele...@googlecode.com

unread,
Aug 20, 2012, 6:12:03 AM8/20/12
to selenium-develope...@googlegroups.com

Comment #15 on issue 4020 by ken...@gmail.com: Ruby webdriver hangs on
`Selenium::WebDriver.for`
http://code.google.com/p/selenium/issues/detail?id=4020

My workaround is adding the following code in red to the method
“interfaces” in file
RUBY_HOME/lib/ruby/gems/1.8/gems/selenium-webdriver-2.xx.x/lib/selenium/webdriver/common/platform.rb

def interfaces
interfaces = Socket.getaddrinfo("localhost", 8080).map { |e| e[3] }
# fix the problem of binding IPv6
interfaces.delete("0:0:0:0:0:0:0:1")
interfaces += ["0.0.0.0", Platform.ip]

interfaces.compact.uniq
end


Reply all
Reply to author
Forward
0 new messages