Truffleruby: puma: waited 15 seconds in the SafepointManager but 1 of 12 threads did not arrive

Created on 15 Apr 2019  Â·  4Comments  Â·  Source: oracle/truffleruby

If I run puma tests and abort them for a while after hanging up I get this error.

truffleruby 1.0.0-rc16-dev-9cda04fc, like ruby 2.6.2, Interpreted JVM [x86_64-darwin]

To reproduce:

git clone https://github.com/puma/puma.git
cd puma
bundle
rake test

Error:

mkdir -p tmp/x86_64-darwin/puma_http11/2.6.2
cd tmp/x86_64-darwin/puma_http11/2.6.2
~/.rubies/truffleruby-1.0.0-nightly/jre/languages/ruby/bin/truffleruby -I. ../../../../ext/puma_http11/extconf.rb
checking for BIO_read() in -lcrypto... yes
checking for SSL_CTX_new() in -lssl... yes
checking for openssl/bio.h... no
creating Makefile
cd -
cd tmp/x86_64-darwin/puma_http11/2.6.2
/usr/bin/make
compiling ../../../../ext/puma_http11/http11_parser.c
compiling ../../../../ext/puma_http11/io_buffer.c
compiling ../../../../ext/puma_http11/mini_ssl.c
compiling ../../../../ext/puma_http11/puma_http11.c
linking shared-object puma/puma_http11.su
cd -
mkdir -p tmp/x86_64-darwin/stage/lib/puma
cp History.md tmp/x86_64-darwin/stage/History.md
cp LICENSE tmp/x86_64-darwin/stage/LICENSE
cp README.md tmp/x86_64-darwin/stage/README.md
mkdir -p tmp/x86_64-darwin/stage/bin
cp bin/puma tmp/x86_64-darwin/stage/bin/puma
cp bin/puma-wild tmp/x86_64-darwin/stage/bin/puma-wild
cp bin/pumactl tmp/x86_64-darwin/stage/bin/pumactl
mkdir -p tmp/x86_64-darwin/stage/docs
cp docs/architecture.md tmp/x86_64-darwin/stage/docs/architecture.md
cp docs/deployment.md tmp/x86_64-darwin/stage/docs/deployment.md
mkdir -p tmp/x86_64-darwin/stage/docs/images
cp docs/images/puma-connection-flow-no-reactor.png tmp/x86_64-darwin/stage/docs/images/puma-connection-flow-no-reactor.png
cp docs/images/puma-connection-flow.png tmp/x86_64-darwin/stage/docs/images/puma-connection-flow.png
cp docs/images/puma-general-arch.png tmp/x86_64-darwin/stage/docs/images/puma-general-arch.png
cp docs/nginx.md tmp/x86_64-darwin/stage/docs/nginx.md
cp docs/plugins.md tmp/x86_64-darwin/stage/docs/plugins.md
cp docs/restart.md tmp/x86_64-darwin/stage/docs/restart.md
cp docs/signals.md tmp/x86_64-darwin/stage/docs/signals.md
cp docs/systemd.md tmp/x86_64-darwin/stage/docs/systemd.md
mkdir -p tmp/x86_64-darwin/stage/ext/puma_http11
cp ext/puma_http11/PumaHttp11Service.java tmp/x86_64-darwin/stage/ext/puma_http11/PumaHttp11Service.java
cp ext/puma_http11/ext_help.h tmp/x86_64-darwin/stage/ext/puma_http11/ext_help.h
cp ext/puma_http11/extconf.rb tmp/x86_64-darwin/stage/ext/puma_http11/extconf.rb
cp ext/puma_http11/http11_parser.c tmp/x86_64-darwin/stage/ext/puma_http11/http11_parser.c
cp ext/puma_http11/http11_parser.h tmp/x86_64-darwin/stage/ext/puma_http11/http11_parser.h
cp ext/puma_http11/http11_parser.java.rl tmp/x86_64-darwin/stage/ext/puma_http11/http11_parser.java.rl
cp ext/puma_http11/http11_parser.rl tmp/x86_64-darwin/stage/ext/puma_http11/http11_parser.rl
cp ext/puma_http11/http11_parser_common.rl tmp/x86_64-darwin/stage/ext/puma_http11/http11_parser_common.rl
cp ext/puma_http11/io_buffer.c tmp/x86_64-darwin/stage/ext/puma_http11/io_buffer.c
cp ext/puma_http11/mini_ssl.c tmp/x86_64-darwin/stage/ext/puma_http11/mini_ssl.c
mkdir -p tmp/x86_64-darwin/stage/ext/puma_http11/org/jruby/puma
cp ext/puma_http11/org/jruby/puma/Http11.java tmp/x86_64-darwin/stage/ext/puma_http11/org/jruby/puma/Http11.java
cp ext/puma_http11/org/jruby/puma/Http11Parser.java tmp/x86_64-darwin/stage/ext/puma_http11/org/jruby/puma/Http11Parser.java
cp ext/puma_http11/org/jruby/puma/IOBuffer.java tmp/x86_64-darwin/stage/ext/puma_http11/org/jruby/puma/IOBuffer.java
cp ext/puma_http11/org/jruby/puma/MiniSSL.java tmp/x86_64-darwin/stage/ext/puma_http11/org/jruby/puma/MiniSSL.java
cp ext/puma_http11/puma_http11.c tmp/x86_64-darwin/stage/ext/puma_http11/puma_http11.c
cp lib/puma.rb tmp/x86_64-darwin/stage/lib/puma.rb
cp lib/puma/accept_nonblock.rb tmp/x86_64-darwin/stage/lib/puma/accept_nonblock.rb
mkdir -p tmp/x86_64-darwin/stage/lib/puma/app
cp lib/puma/app/status.rb tmp/x86_64-darwin/stage/lib/puma/app/status.rb
cp lib/puma/binder.rb tmp/x86_64-darwin/stage/lib/puma/binder.rb
cp lib/puma/cli.rb tmp/x86_64-darwin/stage/lib/puma/cli.rb
cp lib/puma/client.rb tmp/x86_64-darwin/stage/lib/puma/client.rb
cp lib/puma/cluster.rb tmp/x86_64-darwin/stage/lib/puma/cluster.rb
cp lib/puma/commonlogger.rb tmp/x86_64-darwin/stage/lib/puma/commonlogger.rb
cp lib/puma/configuration.rb tmp/x86_64-darwin/stage/lib/puma/configuration.rb
cp lib/puma/const.rb tmp/x86_64-darwin/stage/lib/puma/const.rb
cp lib/puma/control_cli.rb tmp/x86_64-darwin/stage/lib/puma/control_cli.rb
cp lib/puma/convenient.rb tmp/x86_64-darwin/stage/lib/puma/convenient.rb
cp lib/puma/daemon_ext.rb tmp/x86_64-darwin/stage/lib/puma/daemon_ext.rb
cp lib/puma/delegation.rb tmp/x86_64-darwin/stage/lib/puma/delegation.rb
cp lib/puma/detect.rb tmp/x86_64-darwin/stage/lib/puma/detect.rb
cp lib/puma/dsl.rb tmp/x86_64-darwin/stage/lib/puma/dsl.rb
cp lib/puma/events.rb tmp/x86_64-darwin/stage/lib/puma/events.rb
cp lib/puma/io_buffer.rb tmp/x86_64-darwin/stage/lib/puma/io_buffer.rb
cp lib/puma/jruby_restart.rb tmp/x86_64-darwin/stage/lib/puma/jruby_restart.rb
cp lib/puma/launcher.rb tmp/x86_64-darwin/stage/lib/puma/launcher.rb
cp lib/puma/minissl.rb tmp/x86_64-darwin/stage/lib/puma/minissl.rb
cp lib/puma/null_io.rb tmp/x86_64-darwin/stage/lib/puma/null_io.rb
cp lib/puma/plugin.rb tmp/x86_64-darwin/stage/lib/puma/plugin.rb
mkdir -p tmp/x86_64-darwin/stage/lib/puma/plugin
cp lib/puma/plugin/tmp_restart.rb tmp/x86_64-darwin/stage/lib/puma/plugin/tmp_restart.rb
mkdir -p tmp/x86_64-darwin/stage/lib/puma/rack
cp lib/puma/rack/builder.rb tmp/x86_64-darwin/stage/lib/puma/rack/builder.rb
cp lib/puma/rack/urlmap.rb tmp/x86_64-darwin/stage/lib/puma/rack/urlmap.rb
cp lib/puma/rack_default.rb tmp/x86_64-darwin/stage/lib/puma/rack_default.rb
cp lib/puma/reactor.rb tmp/x86_64-darwin/stage/lib/puma/reactor.rb
cp lib/puma/runner.rb tmp/x86_64-darwin/stage/lib/puma/runner.rb
cp lib/puma/server.rb tmp/x86_64-darwin/stage/lib/puma/server.rb
cp lib/puma/single.rb tmp/x86_64-darwin/stage/lib/puma/single.rb
cp lib/puma/state_file.rb tmp/x86_64-darwin/stage/lib/puma/state_file.rb
cp lib/puma/tcp_logger.rb tmp/x86_64-darwin/stage/lib/puma/tcp_logger.rb
cp lib/puma/thread_pool.rb tmp/x86_64-darwin/stage/lib/puma/thread_pool.rb
cp lib/puma/util.rb tmp/x86_64-darwin/stage/lib/puma/util.rb
mkdir -p tmp/x86_64-darwin/stage/lib/rack/handler
cp lib/rack/handler/puma.rb tmp/x86_64-darwin/stage/lib/rack/handler/puma.rb
mkdir -p tmp/x86_64-darwin/stage/tools/jungle
cp tools/jungle/README.md tmp/x86_64-darwin/stage/tools/jungle/README.md
mkdir -p tmp/x86_64-darwin/stage/tools/jungle/init.d
cp tools/jungle/init.d/README.md tmp/x86_64-darwin/stage/tools/jungle/init.d/README.md
cp tools/jungle/init.d/puma tmp/x86_64-darwin/stage/tools/jungle/init.d/puma
cp tools/jungle/init.d/run-puma tmp/x86_64-darwin/stage/tools/jungle/init.d/run-puma
mkdir -p tmp/x86_64-darwin/stage/tools/jungle/rc.d
cp tools/jungle/rc.d/README.md tmp/x86_64-darwin/stage/tools/jungle/rc.d/README.md
cp tools/jungle/rc.d/puma tmp/x86_64-darwin/stage/tools/jungle/rc.d/puma
cp tools/jungle/rc.d/puma.conf tmp/x86_64-darwin/stage/tools/jungle/rc.d/puma.conf
mkdir -p tmp/x86_64-darwin/stage/tools/jungle/upstart
cp tools/jungle/upstart/README.md tmp/x86_64-darwin/stage/tools/jungle/upstart/README.md
cp tools/jungle/upstart/puma-manager.conf tmp/x86_64-darwin/stage/tools/jungle/upstart/puma-manager.conf
cp tools/jungle/upstart/puma.conf tmp/x86_64-darwin/stage/tools/jungle/upstart/puma.conf
cp tools/trickletest.rb tmp/x86_64-darwin/stage/tools/trickletest.rb
install -c tmp/x86_64-darwin/puma_http11/2.6.2/puma_http11.su lib/puma/puma_http11.su
cp tmp/x86_64-darwin/puma_http11/2.6.2/puma_http11.su tmp/x86_64-darwin/stage/lib/puma/puma_http11.su
~/.rubies/truffleruby-1.0.0-nightly/jre/languages/ruby/lib/truffle/rbconfig.rb:35: warning: loading in progress, circular require considered harmful - ~/.rubies/truffleruby-1.0.0-nightly/jre/languages/ruby/lib/truffle/rbconfig.rb
~/.rubies/truffleruby-1.0.0-nightly/jre/languages/ruby/lib/mri/rubygems/requirement.rb:29: warning: loading in progress, circular require considered harmful - ~/.rubies/truffleruby-1.0.0-nightly/jre/languages/ruby/lib/mri/rubygems/requirement.rb
~/.rubies/truffleruby-1.0.0-nightly/jre/languages/ruby/lib/mri/tmpdir.rb:87: warning: shadowing outer local variable - path
~/dev/bugs/truffleruby/puma/test/test_integration.rb:312: warning: Ambiguous first argument; make sure.
~/dev/bugs/truffleruby/puma/test/test_integration.rb:313: warning: Ambiguous first argument; make sure.
Run options: --seed 21662

# Running:

..........^Crake aborted!
Interrupt: Interrupt

Tasks: TOP => test
(See full trace by running task with --trace)
➜  puma git:(master) ✗ [ruby] SEVERE: waited 5 seconds in the SafepointManager but 1 of 12 threads did not arrive - a thread is likely making a blocking native call which should use runBlockingSystemCallUntilResult() - check with jstack
Dumping stacktraces of blocked threads:
Thread[Ruby Thread id=16 from ~/dev/bugs/truffleruby/puma/lib/puma/reactor.rb:309,5,main]
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly(AbstractQueuedSynchronizer.java:897)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1222)
java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)
org.truffleruby.core.mutex.MutexOperations.lambda$lockInternal$0(MutexOperations.java:40)
org.truffleruby.core.mutex.MutexOperations$$Lambda$804/2099286363.block(Unknown Source)
org.truffleruby.core.thread.ThreadManager.runUntilResult(ThreadManager.java:440)
org.truffleruby.core.mutex.MutexOperations.lockInternal(MutexOperations.java:39)
org.truffleruby.cext.CExtNodes$CallCWithoutMutexNode.callCWithoutMutex(CExtNodes.java:179)
org.truffleruby.cext.CExtNodesFactory$CallCWithoutMutexNodeFactory$CallCWithoutMutexNodeGen.execute(CExtNodesFactory.java:327)
org.truffleruby.builtins.InvokePrimitiveNode.execute(InvokePrimitiveNode.java:33)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.CatchForLambdaNode.execute(CatchForLambdaNode.java:48)
org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:54)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
org.truffleruby.language.yield.CallBlockNode.callBlockCached(CallBlockNode.java:48)
org.truffleruby.language.yield.CallBlockNodeGen.executeCallBlock(CallBlockNodeGen.java:39)
org.truffleruby.language.yield.YieldNode.dispatch(YieldNode.java:23)
org.truffleruby.builtins.YieldingCoreMethodNode.yield(YieldingCoreMethodNode.java:28)
org.truffleruby.core.thread.ThreadNodes$UnblockNode.lambda$unblock$1(ThreadNodes.java:474)
org.truffleruby.core.thread.ThreadNodes$UnblockNode$$Lambda$800/1962044794.block(Unknown Source)
org.truffleruby.core.thread.ThreadManager.runUntilResult(ThreadManager.java:440)
org.truffleruby.core.thread.ThreadManager.runUntilResult(ThreadManager.java:473)
org.truffleruby.core.thread.ThreadNodes$UnblockNode.unblock(ThreadNodes.java:473)
org.truffleruby.core.thread.ThreadNodesFactory$UnblockNodeFactory$UnblockNodeGen.execute(ThreadNodesFactory.java:1711)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.LazyRubyNode.execute(LazyRubyNode.java:42)
org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:54)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
org.truffleruby.language.dispatch.CachedDispatchNode.call(CachedDispatchNode.java:190)
org.truffleruby.language.dispatch.CachedBoxedDispatchNode.executeDispatch(CachedBoxedDispatchNode.java:94)
org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.CatchForMethodNode.execute(CatchForMethodNode.java:38)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:54)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
org.truffleruby.language.dispatch.CachedDispatchNode.call(CachedDispatchNode.java:190)
org.truffleruby.language.dispatch.CachedSingletonDispatchNode.executeDispatch(CachedSingletonDispatchNode.java:93)
org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
org.truffleruby.language.dispatch.CallDispatchHeadNode.call(CallDispatchHeadNode.java:41)
org.truffleruby.interop.RubyObjectType$InvokeNode.access(RubyObjectType.java:374)
org.truffleruby.interop.RubyObjectTypeForeign$InvokeSubNode.accessWithTarget(RubyObjectTypeForeign.java:255)
org.truffleruby.interop.RubyObjectTypeForeignFactory$InvokeSubNodeGen.executeWithTarget(RubyObjectTypeForeignFactory.java:199)
org.truffleruby.interop.RubyObjectTypeForeign$InvokeSubNode$INVOKERootNode.execute(RubyObjectTypeForeign.java:278)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.api.interop.InteropAccessNode$CachedNode.doCached(InteropAccessNode.java:304)
com.oracle.truffle.api.interop.InteropAccessNodeFactory$CachedNodeGen.executeImpl(InteropAccessNodeFactory.java:42)
com.oracle.truffle.api.interop.InteropAccessNode.execute(InteropAccessNode.java:103)
com.oracle.truffle.api.interop.LibraryToLegacy.sendInvoke(LibraryToLegacy.java:189)
com.oracle.truffle.api.interop.DefaultTruffleObjectExports.invokeMember(DefaultTruffleObjectExports.java:205)
com.oracle.truffle.api.interop.DefaultTruffleObjectExportsGen$InteropLibraryExports$Cached.invokeMember(DefaultTruffleObjectExportsGen.java:712)
com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.invokeMember(InteropLibraryGen.java:3104)
com.oracle.truffle.llvm.nodes.intrinsics.interop.LLVMPolyglotInvoke.doInvoke(LLVMPolyglotInvoke.java:103)
com.oracle.truffle.llvm.nodes.intrinsics.interop.LLVMPolyglotInvoke.doIntrinsic(LLVMPolyglotInvoke.java:118)
com.oracle.truffle.llvm.nodes.intrinsics.interop.LLVMPolyglotInvokeNodeGen.executeGeneric(LLVMPolyglotInvokeNodeGen.java:46)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode$IntrinsicDispatch.execute(LLVMCallNode.java:69)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode.executeGeneric(LLVMCallNode.java:114)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric_generic1(LLVMValueProfilingNodeFactory.java:392)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric(LLVMValueProfilingNodeFactory.java:376)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute_generic1(LLVMWriteNodeFactory.java:755)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute(LLVMWriteNodeFactory.java:736)
com.oracle.truffle.llvm.nodes.base.LLVMBasicBlockNode.execute(LLVMBasicBlockNode.java:92)
com.oracle.truffle.llvm.nodes.control.LLVMDispatchBasicBlockNode.executeGeneric(LLVMDispatchBasicBlockNode.java:102)
com.oracle.truffle.llvm.nodes.func.LLVMFunctionStartNode.execute(LLVMFunctionStartNode.java:82)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNode.doDirect(LLVMDispatchNode.java:109)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNodeGen.executeDispatch(LLVMDispatchNodeGen.java:71)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode.executeGeneric(LLVMCallNode.java:135)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric_generic1(LLVMValueProfilingNodeFactory.java:392)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric(LLVMValueProfilingNodeFactory.java:376)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute_generic1(LLVMWriteNodeFactory.java:755)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute(LLVMWriteNodeFactory.java:736)
com.oracle.truffle.llvm.nodes.base.LLVMBasicBlockNode.execute(LLVMBasicBlockNode.java:92)
com.oracle.truffle.llvm.nodes.control.LLVMDispatchBasicBlockNode.executeGeneric(LLVMDispatchBasicBlockNode.java:102)
com.oracle.truffle.llvm.nodes.func.LLVMFunctionStartNode.execute(LLVMFunctionStartNode.java:82)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNode.doDirect(LLVMDispatchNode.java:109)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNodeGen.executeDispatch(LLVMDispatchNodeGen.java:71)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode.executeGeneric(LLVMCallNode.java:135)
com.oracle.truffle.llvm.runtime.nodes.api.LLVMExpressionNode.executeI32(LLVMExpressionNode.java:111)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI32ProfiledValueNodeGen.executeI32(LLVMValueProfilingNodeFactory.java:304)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWriteI32NodeGen.execute(LLVMWriteNodeFactory.java:278)
com.oracle.truffle.llvm.nodes.base.LLVMBasicBlockNode.execute(LLVMBasicBlockNode.java:92)
com.oracle.truffle.llvm.nodes.control.LLVMDispatchBasicBlockNode.executeGeneric(LLVMDispatchBasicBlockNode.java:102)
com.oracle.truffle.llvm.nodes.func.LLVMFunctionStartNode.execute(LLVMFunctionStartNode.java:82)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNode.doDirect(LLVMDispatchNode.java:109)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNodeGen.executeDispatch(LLVMDispatchNodeGen.java:71)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode.executeGeneric(LLVMCallNode.java:135)
com.oracle.truffle.llvm.runtime.nodes.api.LLVMExpressionNode.executeI32(LLVMExpressionNode.java:111)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI32ProfiledValueNodeGen.executeI32(LLVMValueProfilingNodeFactory.java:304)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWriteI32NodeGen.execute(LLVMWriteNodeFactory.java:278)
com.oracle.truffle.llvm.nodes.base.LLVMBasicBlockNode.execute(LLVMBasicBlockNode.java:92)
com.oracle.truffle.llvm.nodes.control.LLVMDispatchBasicBlockNode.executeGeneric(LLVMDispatchBasicBlockNode.java:102)
com.oracle.truffle.llvm.nodes.func.LLVMFunctionStartNode.execute(LLVMFunctionStartNode.java:82)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.llvm.runtime.interop.LLVMForeignCallNode.callDirectCached(LLVMForeignCallNode.java:159)
com.oracle.truffle.llvm.runtime.interop.LLVMForeignCallNodeGen.executeCall(LLVMForeignCallNodeGen.java:47)
com.oracle.truffle.llvm.runtime.LLVMFunctionDescriptor.execute(LLVMFunctionDescriptor.java:474)
com.oracle.truffle.llvm.runtime.LLVMFunctionDescriptorGen$InteropLibraryExports$Cached.execute(LLVMFunctionDescriptorGen.java:104)
com.oracle.truffle.llvm.runtime.pointer.ManagedPointerLibraries.execute(ManagedPointerLibraries.java:69)
com.oracle.truffle.llvm.runtime.pointer.ManagedPointerLibrariesGen$InteropLibraryExports$Cached.execute(ManagedPointerLibrariesGen.java:620)
com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.execute(InteropLibraryGen.java:2626)
com.oracle.truffle.api.interop.LegacyToLibraryNode.sendExecute(LegacyToLibraryNode.java:259)
com.oracle.truffle.api.interop.ForeignAccess.sendExecute(ForeignAccess.java:334)
org.truffleruby.cext.CExtNodes$CallCWithMutexNode.execute(CExtNodes.java:149)
org.truffleruby.cext.CExtNodes$CallCWithMutexNode.callCWithMutex(CExtNodes.java:139)
org.truffleruby.cext.CExtNodesFactory$CallCWithMutexNodeFactory$CallCWithMutexNodeGen.execute(CExtNodesFactory.java:189)
org.truffleruby.builtins.InvokePrimitiveNode.execute(InvokePrimitiveNode.java:33)
org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
org.truffleruby.language.exceptions.EnsureNode.execute(EnsureNode.java:38)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.CatchForMethodNode.execute(CatchForMethodNode.java:38)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:54)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
org.truffleruby.language.dispatch.CachedDispatchNode.call(CachedDispatchNode.java:190)
org.truffleruby.language.dispatch.CachedSingletonDispatchNode.executeDispatch(CachedSingletonDispatchNode.java:93)
org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
org.truffleruby.language.dispatch.CallDispatchHeadNode.call(CallDispatchHeadNode.java:41)
org.truffleruby.interop.RubyObjectType$InvokeNode.access(RubyObjectType.java:374)
org.truffleruby.interop.RubyObjectTypeForeign$InvokeSubNode.accessWithTarget(RubyObjectTypeForeign.java:255)
org.truffleruby.interop.RubyObjectTypeForeignFactory$InvokeSubNodeGen.executeWithTarget(RubyObjectTypeForeignFactory.java:199)
org.truffleruby.interop.RubyObjectTypeForeign$InvokeSubNode$INVOKERootNode.execute(RubyObjectTypeForeign.java:278)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.api.interop.InteropAccessNode$CachedNode.doCached(InteropAccessNode.java:304)
com.oracle.truffle.api.interop.InteropAccessNodeFactory$CachedNodeGen.executeImpl(InteropAccessNodeFactory.java:42)
com.oracle.truffle.api.interop.InteropAccessNode.execute(InteropAccessNode.java:103)
com.oracle.truffle.api.interop.LibraryToLegacy.sendInvoke(LibraryToLegacy.java:189)
com.oracle.truffle.api.interop.DefaultTruffleObjectExports.invokeMember(DefaultTruffleObjectExports.java:205)
com.oracle.truffle.api.interop.DefaultTruffleObjectExportsGen$InteropLibraryExports$Cached.invokeMember(DefaultTruffleObjectExportsGen.java:712)
com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.invokeMember(InteropLibraryGen.java:3104)
com.oracle.truffle.llvm.nodes.intrinsics.interop.LLVMPolyglotInvoke.doInvoke(LLVMPolyglotInvoke.java:103)
com.oracle.truffle.llvm.nodes.intrinsics.interop.LLVMPolyglotInvoke.doIntrinsic(LLVMPolyglotInvoke.java:118)
com.oracle.truffle.llvm.nodes.intrinsics.interop.LLVMPolyglotInvokeNodeGen.executeGeneric(LLVMPolyglotInvokeNodeGen.java:46)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode$IntrinsicDispatch.execute(LLVMCallNode.java:69)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode.executeGeneric(LLVMCallNode.java:114)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric_generic1(LLVMValueProfilingNodeFactory.java:392)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric(LLVMValueProfilingNodeFactory.java:376)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute_generic1(LLVMWriteNodeFactory.java:755)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute(LLVMWriteNodeFactory.java:736)
com.oracle.truffle.llvm.nodes.base.LLVMBasicBlockNode.execute(LLVMBasicBlockNode.java:92)
com.oracle.truffle.llvm.nodes.control.LLVMDispatchBasicBlockNode.executeGeneric(LLVMDispatchBasicBlockNode.java:102)
com.oracle.truffle.llvm.nodes.func.LLVMFunctionStartNode.execute(LLVMFunctionStartNode.java:82)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNode.doDirect(LLVMDispatchNode.java:109)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNodeGen.executeDispatch(LLVMDispatchNodeGen.java:71)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode.executeGeneric(LLVMCallNode.java:135)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric_generic1(LLVMValueProfilingNodeFactory.java:392)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric(LLVMValueProfilingNodeFactory.java:376)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute_generic1(LLVMWriteNodeFactory.java:755)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute(LLVMWriteNodeFactory.java:736)
com.oracle.truffle.llvm.nodes.base.LLVMBasicBlockNode.execute(LLVMBasicBlockNode.java:92)
com.oracle.truffle.llvm.nodes.control.LLVMDispatchBasicBlockNode.executeGeneric(LLVMDispatchBasicBlockNode.java:102)
com.oracle.truffle.llvm.nodes.func.LLVMFunctionStartNode.execute(LLVMFunctionStartNode.java:82)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNode.doDirect(LLVMDispatchNode.java:109)
com.oracle.truffle.llvm.nodes.func.LLVMDispatchNodeGen.executeDispatch(LLVMDispatchNodeGen.java:71)
com.oracle.truffle.llvm.nodes.func.LLVMCallNode.executeGeneric(LLVMCallNode.java:135)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric_generic1(LLVMValueProfilingNodeFactory.java:392)
com.oracle.truffle.llvm.nodes.others.LLVMValueProfilingNodeFactory$LLVMI64ProfiledValueNodeGen.executeGeneric(LLVMValueProfilingNodeFactory.java:376)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute_generic1(LLVMWriteNodeFactory.java:755)
com.oracle.truffle.llvm.nodes.vars.LLVMWriteNodeFactory$LLVMWritePointerNodeGen.execute(LLVMWriteNodeFactory.java:736)
com.oracle.truffle.llvm.nodes.base.LLVMBasicBlockNode.execute(LLVMBasicBlockNode.java:92)
com.oracle.truffle.llvm.nodes.control.LLVMDispatchBasicBlockNode.executeGeneric(LLVMDispatchBasicBlockNode.java:102)
com.oracle.truffle.llvm.nodes.func.LLVMFunctionStartNode.execute(LLVMFunctionStartNode.java:82)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
com.oracle.truffle.llvm.runtime.interop.LLVMForeignCallNode.callDirectCached(LLVMForeignCallNode.java:159)
com.oracle.truffle.llvm.runtime.interop.LLVMForeignCallNodeGen.executeCall(LLVMForeignCallNodeGen.java:47)
com.oracle.truffle.llvm.runtime.LLVMFunctionDescriptor.execute(LLVMFunctionDescriptor.java:474)
com.oracle.truffle.llvm.runtime.LLVMFunctionDescriptorGen$InteropLibraryExports$Cached.execute(LLVMFunctionDescriptorGen.java:104)
com.oracle.truffle.llvm.runtime.pointer.ManagedPointerLibraries.execute(ManagedPointerLibraries.java:69)
com.oracle.truffle.llvm.runtime.pointer.ManagedPointerLibrariesGen$InteropLibraryExports$Cached.execute(ManagedPointerLibrariesGen.java:620)
com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.execute(InteropLibraryGen.java:2626)
com.oracle.truffle.api.interop.LegacyToLibraryNode.sendExecute(LegacyToLibraryNode.java:259)
com.oracle.truffle.api.interop.ForeignAccess.sendExecute(ForeignAccess.java:334)
org.truffleruby.cext.CExtNodes$CallCWithMutexNode.execute(CExtNodes.java:149)
org.truffleruby.cext.CExtNodes$CallCWithMutexNode.callCWithMutex(CExtNodes.java:134)
org.truffleruby.cext.CExtNodesFactory$CallCWithMutexNodeFactory$CallCWithMutexNodeGen.execute(CExtNodesFactory.java:189)
org.truffleruby.builtins.InvokePrimitiveNode.execute(InvokePrimitiveNode.java:33)
org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:37)
org.truffleruby.language.exceptions.EnsureNode.execute(EnsureNode.java:38)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.CatchForLambdaNode.execute(CatchForLambdaNode.java:48)
org.truffleruby.core.module.ModuleNodes$DefineMethodNode$CallMethodWithProcBody.execute(ModuleNodes.java:1092)
org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:54)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
org.truffleruby.language.dispatch.CachedDispatchNode.call(CachedDispatchNode.java:190)
org.truffleruby.language.dispatch.CachedBoxedDispatchNode.executeDispatch(CachedBoxedDispatchNode.java:94)
org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:36)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.exceptions.TryNode.execute(TryNode.java:50)
org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:54)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:31)
org.truffleruby.language.control.WhileNode$WhileRepeatingNode.executeRepeating(WhileNode.java:83)
com.oracle.truffle.api.impl.DefaultLoopNode.executeLoop(DefaultLoopNode.java:62)
org.truffleruby.language.control.WhileNode.execute(WhileNode.java:35)
org.truffleruby.language.methods.CatchBreakNode.execute(CatchBreakNode.java:38)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.CatchForMethodNode.execute(CatchForMethodNode.java:38)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:54)
com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85)
com.oracle.truffle.api.impl.DefaultDirectCallNode.call(DefaultDirectCallNode.java:59)
org.truffleruby.language.dispatch.CachedDispatchNode.call(CachedDispatchNode.java:190)
org.truffleruby.language.dispatch.CachedBoxedDispatchNode.executeDispatch(CachedBoxedDispatchNode.java:94)
org.truffleruby.language.dispatch.UnresolvedDispatchNode.executeDispatch(UnresolvedDispatchNode.java:120)
org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.exceptions.TryNode.execute(TryNode.java:50)
org.truffleruby.language.exceptions.EnsureNode.execute(EnsureNode.java:38)
org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:51)
org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
org.truffleruby.language.methods.CatchForProcNode.execute(CatchForProcNode.java:36)
org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:54)
com.oracle.truffle.api.impl.DefaultCallTarget.call(DefaultCallTarget.java:102)
org.truffleruby.core.proc.ProcOperations.rootCall(ProcOperations.java:48)
org.truffleruby.core.thread.ThreadNodes$ThreadInitializeNode.lambda$initialize$0(ThreadNodes.java:288)
org.truffleruby.core.thread.ThreadNodes$ThreadInitializeNode$$Lambda$793/1275603581.get(Unknown Source)
org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:248)
org.truffleruby.core.thread.ThreadManager.lambda$initialize$3(ThreadManager.java:236)
org.truffleruby.core.thread.ThreadManager$$Lambda$602/1417126346.run(Unknown Source)
java.lang.Thread.run(Thread.java:748)
com.oracle.truffle.polyglot.PolyglotThread.run(PolyglotThread.java:78)
bug

All 4 comments

Probably relative to #1448

I think this is a different problem and is caused by rb_thread_call_without_gvl reclaiming the C mutex before restoring the default thread unblocker. Having fixed this issue I still see other puma test failures, but I also see test failures under MRI.

The fix for rb_thread_call_without_gvl is now merged with master. I no longer see the safepoint manager issue. But I think there are other problems with running the tests.

@eregon you can close this I guess. The original issue is fixed and your latest changes in puma repo hasn't showed this issue again

Was this page helpful?
0 / 5 - 0 ratings