red-data-tools/GR.rb

libffi.so.6: cannot open shared object file (Load Error)

jewel-snake opened this issue · 6 comments

I've been using GR for my ruby project, and after system update, I caught an error:

Traceback (most recent call last):
        2: from -e:1:in `<main>'
        1: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- gr/plot (LoadError)
        23: from -e:1:in `<main>'
        22: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:156:in `require'
        21: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require'
        20: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `require'
        19: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr/plot.rb:3:in `<top (required)>'
        18: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        17: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        16: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr.rb:42:in `<top (required)>'
        15: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr.rb:65:in `<module:GR>'
        14: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr.rb:65:in `require_relative'
        13: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr_commons/gr_commons.rb:9:in `<top (required)>'
        12: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr_commons/gr_commons.rb:9:in `require_relative'
        11: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr_commons/gr_common_utils.rb:3:in `<top (required)>'
        10: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         9: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         8: from /home/kun/.rvm/gems/ruby-2.7.0/gems/ruby-gr-0.0.15/lib/gr_commons/fiddley.rb:3:in `<top (required)>'
         7: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         6: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         5: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/fiddle/import.rb:2:in `<top (required)>'
         4: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         3: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         2: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/fiddle.rb:2:in `<top (required)>'
         1: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': libffi.so.6: cannot open shared object file: No such file or directory - /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/fiddle.so (LoadError)

I checked all my PATH variables and reinstalled GR but the error didn't go.
Whenever I require 'gr/plot' I got this.

Hi! @jewel-snake

1: from /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': libffi.so.6: cannot open shared object file: No such file or directory - /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/fiddle.so (LoadError)

I think the last two lines of the error message are about Fiddle.
Fiddle is a standard Ruby library used to call C functions. Fiddle uses libffi internally.
The error message suggests that Ruby failed to load the shared object file libffi.so here. libffi.so is a Ruby C extension, so I think it is usually created when Ruby is installed.

So please check if you can load fiddle.

irb -r fiddle

If you get the same error message, please check if you have already installed libffi-dev or libffi-devel package. Perhaps you may need to recompile ruby or just type gem install fiddle to generate libffi.so.

If you still cannot solve the problem, please let me know more details...

@kojix2 , thank you for support, but the problem is still here.
the
irb -r fiddle returned same error as before:
/home/kun/.rvm/gems/ruby-2.7.0/gems/irb-1.2.3/lib/irb/init.rb:290: warning: LoadError: libffi.so.6: cannot open shared object file: No such file or directory - /home/kun/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/fiddle.so
I've tried to execute gem install fiddle, unfortunately the result is the same.

I found temporal solution. I've downgraded libffi version from 3.3.3 to 3.2.1 and now everything is working again), but downgrading packages after every system update isn't very convenient, is it?
If you want i can provide some further information about my system to deal with the issue.
P.S. it broke vs code, which needs libffi too, so it is not soulution(

kou commented

Could you re-report this to https://github.com/ruby/fiddle/issues ?

Thanks @jewel-snake

The problem is about Fiddle. So you should report this problem to Fiddle developers who can investigate and fix Fiddle code. Fiddle is used elsewhere, so it's likely that some people are having the same trouble. You can help them by reporting this issue. This is troublesome, but the first person to find the issue has the right to do. I think this is what @kou wanted to say.

When it comes to reporting, please make a following list to let them know your environment.

  • the operating system and version
  • Ruby version
  • using rvm/rbenv,
  • and libffi version, etc.