oracle / truffleruby

A high performance implementation of the Ruby programming language, built on GraalVM.
https://www.graalvm.org/ruby/
Other
3.02k stars 185 forks source link

Puma server crashes while booting on M1 #2670

Closed deepj closed 2 years ago

deepj commented 2 years ago
truffleruby 22.2.0-dev-0f63df6f, like ruby 3.0.3, GraalVM CE Native [aarch64-darwin]

To reproduce:

gem install puma
puma -C app.rb

app.rb

app do |env|
  body = 'Puma crashes'
  [200, { 'Content-Type' => 'text/plain', 'Content-Length' => body.length.to_s }, [body]]
end

Error:

Ruby Thread id=58 from ~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/lib/puma/reactor.rb:37 terminated with internal error: (java.lang.RuntimeException)
    from org.truffleruby.core.thread.ThreadManager.printInternalError(ThreadManager.java:337)
    from org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:325)
    from org.truffleruby.core.thread.ThreadManager.lambda$initialize$5(ThreadManager.java:293)
    from java.lang.Thread.run(Thread.java:829)
    from com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53)
    from com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:99)
    from com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(PolyglotThread.java:130)
    from com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(PolyglotThread.java:121)
~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/lib/puma/single.rb:61:in `join'
    from ~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/lib/puma/single.rb:61:in `run'
    from ~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/lib/puma/launcher.rb:182:in `run'
    from ~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/lib/puma/cli.rb:81:in `run'
    from ~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/bin/puma:10:in `<top (required)>'
    from <internal:core> core/kernel.rb:376:in `load'
    from <internal:core> core/kernel.rb:376:in `load'
    from ~/.gem/truffleruby/3.0.3/bin/puma:25:in `<main>'
Caused by:
inline assembler: Unsupported operation: "dmb ish": ASM error in "dmb ish":
-- line 1 col 2: mismatched input 'dmb' expecting {'"', 'rep', 'repz', 'repe', 'repne', 'repnz', 'lock', 'int', 'call', 'ja', 'jae', 'jb', 'jbe', 'jc', 'jcxz', 'je', 'jecxz', 'jg', 'jge', 'jl', 'jle', 'jmp', 'jnae', 'jnb', 'jnbe', 'jnc', 'jne', 'jng', 'jnge', 'jnl', 'jnle', 'jno', 'jnp', 'jns', 'jnz', 'jo', 'jp', 'jpe', 'jpo', 'js', 'jz', 'lcall', 'loop', 'loope', 'loopne', 'loopnz', 'loopz', '.p2align', 'clc', 'cld', 'cli', 'cmc', 'lahf', 'popf', 'popfw', 'pushf', 'pushfw', 'sahf', 'stc', 'std', 'sti', 'nop', 'rdtsc', 'cpuid', 'xgetbv', 'ud2', 'mfence', 'lfence', 'sfence', 'hlt', 'syscall', 'stosb', 'stosw', 'stosd', 'stosq', 'pause', 'idivb', 'imulb', 'idivw', 'imulw', 'idivl', 'imull', 'idivq', 'imulq', 'idiv', 'imul', 'incb', 'decb', 'negb', 'notb', 'divb', 'mulb', 'incw', 'decw', 'negw', 'notw', 'divw', 'mulw', 'pushw', 'popw', 'incl', 'decl', 'negl', 'notl', 'divl', 'mull', 'bswapl', 'pushl', 'popl', 'incq', 'decq', 'negq', 'notq', 'divq', 'mulq', 'bswapq', 'pushq', 'popq', 'inc', 'dec', 'neg', 'not', 'bswap', 'rdrand', 'rdseed', 'seta', 'setae', 'setb', 'setbe', 'setc', 'sete', 'setg', 'setge', 'setl', 'setle', 'setna', 'setnae', 'setnb', 'setnbe', 'setnc', 'setne', 'setng', 'setnge', 'setnl', 'setnle', 'setno', 'setnp', 'setns', 'setnz', 'seto', 'setp', 'setpe', 'setpo', 'sets', 'setz', 'push', 'pop', 'cmpxchg8b', 'cmpxchg16b', 'movb', 'xaddb', 'xchgb', 'adcb', 'addb', 'cmpb', 'sbbb', 'subb', 'andb', 'orb', 'xorb', 'rclb', 'rcrb', 'rolb', 'rorb', 'salb', 'sarb', 'shlb', 'shrb', 'testb', 'cmpxchgb', 'cmovaw', 'cmovaew', 'cmovbw', 'cmovbew', 'cmovcw', 'cmovew', 'cmovgw', 'cmovgew', 'cmovlw', 'cmovlew', 'cmovnaw', 'cmovnaew', 'cmovnbw', 'cmovnbew', 'cmovncw', 'cmovnew', 'cmovngw', 'cmovngew', 'cmovnlw', 'cmovnlew', 'cmovnow', 'cmovnpw', 'cmovnsw', 'cmovnzw', 'cmovow', 'cmovpw', 'cmovpew', 'cmovpow', 'cmovsw', 'cmovzw', 'cmpxchgw', 'movw', 'xaddw', 'xchgw', 'adcw', 'addw', 'cmpw', 'sbbw', 'subw', 'andw', 'orw', 'xorw', 'testw', 'bsfw', 'bsrw', 'btw', 'btcw', 'btrw', 'btsw', 'rclw', 'rcrw', 'rolw', 'rorw', 'salw', 'sarw', 'shlw', 'shrw', 'movsbw', 'movzbw', 'cmoval', 'cmovael', 'cmovbl', 'cmovbel', 'cmovcl', 'cmovel', 'cmovgl', 'cmovgel', 'cmovll', 'cmovlel', 'cmovnal', 'cmovnael', 'cmovnbl', 'cmovnbel', 'cmovncl', 'cmovnel', 'cmovngl', 'cmovngel', 'cmovnll', 'cmovnlel', 'cmovnol', 'cmovnpl', 'cmovnsl', 'cmovnzl', 'cmovol', 'cmovpl', 'cmovpel', 'cmovpol', 'cmovsl', 'cmovzl', 'cmpxchgl', 'movl', 'xaddl', 'xchgl', 'adcl', 'addl', 'cmpl', 'sbbl', 'subl', 'andl', 'orl', 'xorl', 'testl', 'bsfl', 'bsrl', 'btl', 'btcl', 'btrl', 'btsl', 'rcll', 'rcrl', 'roll', 'rorl', 'sall', 'sarl', 'shll', 'shrl', 'movsbl', 'movswl', 'movzbl', 'movzwl', 'cmovaq', 'cmovaeq', 'cmovbq', 'cmovbeq', 'cmovcq', 'cmoveq', 'cmovgq', 'cmovgeq', 'cmovlq', 'cmovleq', 'cmovnaq', 'cmovnaeq', 'cmovnbq', 'cmovnbeq', 'cmovncq', 'cmovneq', 'cmovngq', 'cmovngeq', 'cmovnlq', 'cmovnleq', 'cmovnoq', 'cmovnpq', 'cmovnsq', 'cmovnzq', 'cmovoq', 'cmovpq', 'cmovpeq', 'cmovpoq', 'cmovsq', 'cmovzq', 'cmpxchgq', 'movq', 'xaddq', 'xchgq', 'adcq', 'addq', 'cmpq', 'sbbq', 'subq', 'andq', 'orq', 'xorq', 'testq', 'bsfq', 'bsrq', 'btq', 'btcq', 'btrq', 'btsq', 'rclq', 'rcrq', 'rolq', 'rorq', 'salq', 'sarq', 'shlq', 'shrq', 'movsbq', 'movzbq', 'movswq', 'movzwq', 'movslq', 'cmova', 'cmovae', 'cmovb', 'cmovbe', 'cmovc', 'cmove', 'cmovg', 'cmovge', 'cmovl', 'cmovle', 'cmovna', 'cmovnae', 'cmovnb', 'cmovnbe', 'cmovnc', 'cmovne', 'cmovng', 'cmovnge', 'cmovnl', 'cmovnle', 'cmovno', 'cmovnp', 'cmovns', 'cmovnz', 'cmovo', 'cmovp', 'cmovpe', 'cmovpo', 'cmovs', 'cmovz', 'cmpxchg', 'pmovmskb', 'mov', 'xadd', 'xchg', 'adc', 'add', 'cmp', 'div', 'mul', 'sbb', 'sub', 'and', 'or', 'xor', 'rcl', 'rcr', 'rol', 'ror', 'sal', 'sar', 'shl', 'shr', 'lea', 'bsf', 'bsr'} (com.oracle.truffle.llvm.runtime.LLVMUnsupportedException)
~/.gem/truffleruby/3.0.3/gems/nio4r-2.5.8/ext/libev/ev.c:4107:in `ev_run'
    from ~/.gem/truffleruby/3.0.3/gems/nio4r-2.5.8/ext/nio4r/selector.c:475:in `NIO_Selector_select_synchronized'
    from ~/.rubies/truffleruby-dev/lib/truffle/truffle/cext.rb:1529:in `rb_ensure'
    from exception.c:98:in `rb_ensure'
    from ~/.gem/truffleruby/3.0.3/gems/nio4r-2.5.8/ext/nio4r/selector.c:301:in `NIO_Selector_synchronize'
    from ~/.gem/truffleruby/3.0.3/gems/nio4r-2.5.8/ext/nio4r/selector.c:410:in `NIO_Selector_select'
    from ~/.rubies/truffleruby-dev/lib/truffle/truffle/cext_ruby.rb:41:in `select'
    from ~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/lib/puma/reactor.rb:75:in `select_loop'
    from ~/.gem/truffleruby/3.0.3/gems/puma-5.6.4/lib/puma/reactor.rb:39:in `block in run'
bjfish commented 2 years ago

Thanks for reporting. This is tracked as internal issue GR-38645.

eregon commented 2 years ago

Fixed by @rudihorn in https://github.com/oracle/graal/commit/06c54c1111bf254b3d1f7ff2ad69d6554a5dc281, we'll update the import soon and this will be in 22.2.