digital-fabric / polyphony

Fine-grained concurrency for Ruby
https://www.rubydoc.info/gems/polyphony
MIT License
661 stars 17 forks source link

Incompatibility io_uring backend with Linux 6.x and musl libc #107

Closed floriandejonckheere closed 1 year ago

floriandejonckheere commented 1 year ago

Polyphony raises the following error on require when using a Linux 6.x host and a musl libc-based Docker image (Alpine Linux). This doesn't happen when either using Linux 5.15 host or a glibc-based Docker image.

root@dev:~# uname -a
Linux dev 6.1.0-9-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.27-1 (2023-05-08) x86_64 GNU/Linux

root@dev:~# docker run --rm -ti ruby:3.2-alpine sh

/ # apk add build-base
...

/ # gem install polyphony
Fetching polyphony-1.2.1.gem
Building native extensions. This could take a while...
Successfully installed polyphony-1.2.1
1 gem installed

/ # irb -r polyphony
/usr/local/lib/ruby/3.2.0/irb/init.rb:425: warning: LoadError: Error relocating /usr/local/bundle/gems/polyphony-1.2.1/lib/polyphony_ext.so: __sys_io_uring_enter: symbol not found - /usr/local/bundle/gems/polyphony-1.2.1/lib/polyphony_ext.so
irb(main):001:0>

Seems to be an incompatibility within the io_uring backend. The libev backend works fine.

noteflakes commented 1 year ago

Should be fixed. I'll try to get a release out this weekend.