selenium: [🐛 Bug]: selenium-manager segmentation fault

What happened?

TLDR: When running selenium-manager, I get a segmentation fault.

Long version: When running my ruby rspec capybara tests, I get errors like this:

7) email subscriptions sign up for lists                                                                                                                                                                                                                                                                                                                                                                                      
     Failure/Error: visit '/'                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                          
     NoMethodError:                                                                                                                                                                                                                                                                                                                                                                                                                       
       undefined method `positive?' for nil:NilClass                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                          
                 if status.exitstatus.positive?                                                                                                                                                                                                                                                                                                                                                                                           
                                     ^^^^^^^^^^                                                                                                                                                                                                                                                                                                                                                                                           
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/selenium_manager.rb:80:in `run'                                                                                                                                                                                                                                                                                    
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/selenium_manager.rb:41:in `driver_path'                                                                                                                                                                                                                                                                            
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/service.rb:107:in `binary_path'                                                                                                                                                                                                                                                                                    
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/service.rb:74:in `initialize'                                                                                                                                                                                                                                                                                      
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/service.rb:32:in `new'                                                                                                                                                                                                                                                                                             
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/service.rb:32:in `chrome'                                                                                                                                                                                                                                                                                          
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/chrome/driver.rb:35:in `initialize'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/driver.rb:47:in `new'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver/common/driver.rb:47:in `for'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/lib/selenium/webdriver.rb:88:in `for'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/capybara-3.38.0/lib/capybara/selenium/driver.rb:83:in `browser'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/capybara-3.38.0/lib/capybara/selenium/driver.rb:104:in `visit'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/capybara-3.38.0/lib/capybara/session.rb:280:in `visit'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/capybara-3.38.0/lib/capybara/dsl.rb:52:in `call'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/capybara-3.38.0/lib/capybara/dsl.rb:52:in `visit'
     # /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/rspec-rails-6.0.1/lib/rspec/rails/example/feature_example_group.rb:29:in `visit'
     # ./spec/features/homepage/email_subscriptions_spec.rb:88:in `block (2 levels) in <top (required)>'

That got me playing around with https://github.com/SeleniumHQ/selenium/blob/trunk/rb/lib/selenium/webdriver/common/selenium_manager.rb#L41. When I run selenium-manager directly (see “Relevant log output” section), I get a segfault, which is probably messing with Open3 and causing the error that I’m seeing.

How can we reproduce the issue?

See the relevant log output. I am running the selenium-manager executable out of my ruby gem's bin directory. I see the same issue for both chromedriver and geckodriver.

Relevant log output

$ /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/bin/linux/selenium-manager --driver chromedriver --trace
TRACE   Reading metadata from /home/ben/.cache/selenium/selenium-manager.json
DEBUG   Using shell command to find out chrome version
DEBUG   Running command: "google-chrome --version"
DEBUG   Output: "Google Chrome 110.0.5481.177 "
DEBUG   The version of chrome is 110.0.5481.177
TRACE   Writing metadata to /home/ben/.cache/selenium/selenium-manager.json
DEBUG   Detected browser: chrome 110
TRACE   Reading metadata from /home/ben/.cache/selenium/selenium-manager.json
DEBUG   Reading chromedriver version from https://chromedriver.storage.googleapis.com/LATEST_RELEASE_110
[1]    296300 segmentation fault (core dumped)   --driver chromedriver --trace

$ /home/ben/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/selenium-webdriver-4.8.1/bin/linux/selenium-manager --driver geckodriver --trace
TRACE   Reading metadata from /home/ben/.cache/selenium/selenium-manager.json
DEBUG   Using shell command to find out firefox version
DEBUG   Running command: "firefox -v"
DEBUG   Output: "Mozilla Firefox 110.0"
DEBUG   The version of firefox is 110.0
TRACE   Writing metadata to /home/ben/.cache/selenium/selenium-manager.json
DEBUG   Detected browser: firefox 110
TRACE   Reading metadata from /home/ben/.cache/selenium/selenium-manager.json
[1]    297570 segmentation fault (core dumped)   --driver geckodriver --trace

Operating System

Ubuntu 22.10

Selenium version

Ruby 4.8.1

What are the browser(s) and version(s) where you see this issue?

Google Chrome 110.0.5481.177 and Mozilla Firefox 110.0

What are the browser driver(s) and version(s) where you see this issue?

I’m not sure selenium-manager gets far enough

Are you using Selenium Grid?

I don’t think so

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 29 (14 by maintainers)

Most upvoted comments

Great! Options f and g used static linking using cross-compiling to target x86_64-unknown-linux-musl in GH Actions. That did the trick. I think we need to use that target by default for upcoming versions of selenium-manager in Linux.

Thanks a lot for your time, @benhutton!

f and g work!

You’ll note that I had clear cache on g to really test it