Sporadic RubyIO errors after upgrade to 1.4.10 with Xcode 7

Xcode 7.0 GM (8.x and 9.0 simulators)

jruby-1.7.21
appium 1.4.10
appium_lib 7.0.0
selenium-webdriver 2.46.2

Since updating our tests to run with appium 1.4.10 and Xcode 7 (originally beta 6, now GM), we’ve been seeing sporadic RubyIO EOFerrors from the test runs in our CI system. Usually only a couple of tests are affected, and not consistently the same ones. Have so far been unable to determine whether this is more of an appium or a jruby or a network connectivity issue. Has anyone else encountered something similar?

Pasting a sample stacktrace, which looks more or less similar when the issue occurs for any given test:

EOFError: End of file reached
org/jruby/RubyIO.java:2860:in read_nonblock' /Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/protocol.rb:141:inrbuf_fill’
/Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/protocol.rb:122:in readuntil' /Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/protocol.rb:132:inreadline’
/Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/http.rb:2571:in read_status_line' /Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/http.rb:2560:inread_new’
/Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/aws-sdk-v1-1.63.0/lib/aws/core/http/patch.rb:80:in new_transport_request' org/jruby/RubyKernel.java:1242:incatch’
/Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/aws-sdk-v1-1.63.0/lib/aws/core/http/patch.rb:77:in new_transport_request' /Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/http.rb:1302:inrequest’
/Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/http.rb:1295:in request' /Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/http.rb:746:instart’
/Users/teamcity/.rvm/rubies/jruby-1.7.21/lib/ruby/1.9/net/http.rb:1293:in request' /Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/default.rb:107:inresponse_for’
/Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/default.rb:58:in request' /Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/common.rb:59:incall’
/Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:657:in raw_execute' /Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:122:increate_session’
/Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:87:in initialize' /Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/common/driver.rb:52:infor’
/Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver.rb:84:in for' /Users/teamcity/.rvm/gems/jruby-1.7.21@hyprios/gems/appium_lib-7.0.0/lib/appium_lib/driver.rb:484:instart_driver’

We are seeing more usual now , logs below , we are using ruby with appium_lib 5_01,selenium-webdriver 2.46.2

end of file reached/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/protocol.rb:153:in read_nonblock'\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/protocol.rb:153:inrbuf_fill’\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/protocol.rb:134:in readuntil'\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/protocol.rb:144:inreadline’\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http/response.rb:39:in read_status_line'\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http/response.rb:28:inread_new’\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1408:in block in transport_request'\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1405:incatch’\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1405:in transport_request'\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1378:inrequest’\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1371:in block in request'\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:853:instart’\n/Users/listener/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1369:in request'\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/default.rb:107:inresponse_for’\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/default.rb:58:in request'\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/common.rb:59:incall’\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:657:in raw_execute'\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:635:inexecute’\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:360:in executeScript'\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/common/driver.rb:210:inexecute_script’\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/appium_lib-5.0.1/lib/appium_lib/driver.rb:572:in execute_script'\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/appium_lib-5.0.1/lib/appium_lib/driver.rb:209:inrescue in block (4 levels) in promote_appium_methods’\n/Users/listener/.rvm/gems/ruby-2.1.2/gems/appium_lib-5.0.1/lib/appium_lib/driver.rb:201:in block (4 levels) in promote_appium_methods'\n/Users/listener/git/E2E_1443256411/e2e_framework/driver/custom_web_driver.rb:943:inblock in find_element_by_instruments_script’\n/

Just wanted to update that upon further research and looking closer at the associated appium logs, it appears that there are at least a couple of different causes in our case for these EOFErrors. One error case is when instruments “never check in”. Another error case is when there is a problem opening “/var/root/Library/Caches/locationd/consolidated.db”. Still working on determining the causes of these problems, and the workarounds we will put in place (if it turns out that instruments just behaves badly sometimes, we may just need to check for this and rerun the given test).