open-telemetry / open-telemetry/opentelemetry-ruby

Fix TruffleRuby install failures on tests

Open
#1,558 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

keep
Dominant language
Ruby
Stars
606
Forks
301
Avg merge
3d 19h
Merged PRs (30d)
42

Description

Many CI jobs that run TruffleRuby tests fail to install TruffleRuby and cause the job to fail.

Here's an example failure from a recent run:

Prepare all required actions
Getting action download info
Run ./.github/actions/test_gem
Run # 🛠️ Setup 🛠️
Run ruby/setup-ruby@v1.15[2](https://github.com/open-telemetry/opentelemetry-ruby/actions/runs/7392184795/job/20110274489?pr=1554#step:7:2).0
Modifying PATH
Downloading Ruby
Extracting  Ruby
Print Ruby version
Installing Bundler
> bundle install
/home/runner/.rubies/truffleruby-2[3](https://github.com/open-telemetry/opentelemetry-ruby/actions/runs/7392184795/job/20110274489?pr=1554#step:7:3).0.0/bin/bundle config --local path /home/runner/work/opentelemetry-ruby/opentelemetry-ruby/logs_api/vendor/bundle
/home/runner/.rubies/truffleruby-23.0.0/bin/bundle lock

truffleruby: an internal exception escaped out of the interpreter,
please report it to https://github.com/oracle/truffleruby/issues.

<no message> (com.oracle.truffle.api.CompilerDirectives.ShouldNotReachHere)
	from com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere(CompilerDirectives.java:574)
	from com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere(CompilerDirectives.java:494)
	from com.oracle.truffle.regex.tregex.parser.ast.visitors.RegexASTVisitor.doVisit(RegexASTVisitor.java:105)
	from com.oracle.truffle.regex.tregex.parser.ast.visitors.DepthFirstTraversalRegexASTVisitor.run(DepthFirstTraversalRegexASTVisitor.java:119)
	from com.oracle.truffle.regex.tregex.parser.ast.visitors.DepthFirstTraversalRegexASTVisitor.run(DepthFirstTraversalRegexASTVisitor.java:97)
	from com.oracle.truffle.regex.tregex.parser.ast.visitors.CopyVisitor.copy(CopyVisitor.java:76)
	from com.oracle.truffle.regex.tregex.parser.flavors.RubySubexpressionCalls.replace(RubySubexpressionCalls.java:101)
	from com.oracle.truffle.regex.tregex.parser.flavors.RubySubexpressionCalls.expandNonRecursiveSubexpressionCalls(RubySubexpressionCalls.java:78)
	from com.oracle.truffle.regex.tregex.parser.flavors.RubyRegexParser.parse(RubyRegexParser.java:416)
	from com.oracle.truffle.regex.tregex.TRegexCompilationRequest.parse(TRegexCompilationRequest.java:323)
	from com.oracle.truffle.regex.tregex.TRegexCompilationRequest.compileInternal(TRegexCompilationRequest.java:164)
	from com.oracle.truffle.regex.tregex.TRegexCompilationRequest.compile(TRegexCompilationRequest.java:148)
	from com.oracle.truffle.regex.tregex.TRegexCompiler.doCompile(TRegexCompiler.java:89)
	from com.oracle.truffle.regex.tregex.TRegexCompiler.compile(TRegexCompiler.java:75)
	from com.oracle.truffle.regex.RegexLanguage.createRegexObject(RegexLanguage.java:187)
	from com.oracle.truffle.regex.RegexLanguage.parse(RegexLanguage.java:155)
	from com.oracle.truffle.api.TruffleLanguage$ParsingRequest.parse(TruffleLanguage.java:1000)
	from com.oracle.truffle.api.TruffleLanguage.parse(TruffleLanguage.java:1357)
	from com.oracle.truffle.api.LanguageAccessor$LanguageImpl.parse(LanguageAccessor.java:298)
	from com.oracle.truffle.polyglot.PolyglotSourceCache.parseImpl(PolyglotSourceCache.java:94)
	from com.oracle.truffle.polyglot.PolyglotSourceCache$WeakCache.lookup(PolyglotSourceCache.java:222)
	from com.oracle.truffle.polyglot.PolyglotSourceCache.parseCached(PolyglotSourceCache.java:80)
	from com.oracle.truffle.polyglot.PolyglotLanguageContext.parseCached(PolyglotLanguageContext.java:372)
	from com.oracle.truffle.polyglot.EngineAccessor$EngineImpl.parseForLanguage(EngineAccessor.java:256)
	from com.oracle.truffle.api.TruffleLanguage$Env.parseInternal(TruffleLanguage.java:2423)
	from org.truffleruby.core.regexp.TRegexCache.compileTRegex(TRegexCache.java:183)
	from org.truffleruby.core.regexp.TRegexCache.compile(TRegexCache.java:64)
	from org.truffleruby.core.regexp.TruffleRegexpNodes$TRegexCompileNode.usASCII(TruffleRegexpNodes.java:365)
	from org.truffleruby.core.regexp.TruffleRegexpNodesFactory$TRegexCompileNodeGen.executeTRegexCompile(TruffleRegexpNodesFactory.java:562)
	from org.truffleruby.core.regexp.TruffleRegexpNodes$MatchInRegionTRegexNode.matchInRegionTRegex(TruffleRegexpNodes.java:867)
	from org.truffleruby.core.regexp.TruffleRegexpNodesFactory$MatchInRegionTRegexNodeFactory$MatchInRegionTRegexNodeGen.execute(TruffleRegexpNodesFactory.java:1557)
	from org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:43)
	from org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:45)
	from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
	from org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
<internal:core> core/truffle/regexp_operations.rb:76:in `match_in_region'
	from <internal:core> core/truffle/regexp_operations.rb:29:in `search_region'
	from <internal:core> core/truffle/regexp_operations.rb:42:in `match'
	from <internal:core> core/regexp.rb:175:in `match'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb:85:in `split'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb:135:in `parse'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/uri/lib/uri/common.rb:185:in `parse'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/uri/lib/uri/common.rb:846:in `URI'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/source/rubygems.rb:352:in `normalize_uri'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/source/rubygems.rb:238:in `add_remote'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/source_list.rb:72:in `add_global_rubygems_remote'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/dsl.rb:175:in `source'
	from /home/runner/work/opentelemetry-ruby/opentelemetry-ruby/logs_api/Gemfile:7:in `eval_gemfile'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/dsl.rb:49:in `eval_gemfile'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/dsl.rb:[12](https://github.com/open-telemetry/opentelemetry-ruby/actions/runs/7392184795/job/20110274489?pr=1554#step:7:13):in `evaluate'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/definition.rb:38:in `build'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler.rb:208:in `definition'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/cli/lock.rb:[37](https://github.com/open-telemetry/opentelemetry-ruby/actions/runs/7392184795/job/20110274489?pr=1554#step:7:39):in `block in run'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/settings.rb:158:in `temporary'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/cli/lock.rb:36:in `run'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/cli.rb:627:in `lock'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/cli.rb:34:in `dispatch'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/cli.rb:28:in `start'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/exe/bundle:28:in `block in <top (required)>'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
	from /home/runner/.rubies/truffleruby-23.0.0/lib/gems/gems/bundler-2.5.3/exe/bundle:20:in `<top (required)>'
	from <internal:core> core/kernel.rb:3[81](https://github.com/open-telemetry/opentelemetry-ruby/actions/runs/7392184795/job/20110274489?pr=1554#step:7:89):in `load'
	from /home/runner/.rubies/truffleruby-23.0.0/bin/bundle:25:in `<main>'

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .github/actions/test_gem and the TruffleRuby setup step, then reproduce the bundle lock failure using logs_api/Gemfile. Trace whether the failure is in the CI setup or Bundler interaction; done means TruffleRuby jobs install dependencies and complete their tests successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, ruby
Domain
ci-cd
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.