Project

General

Profile

Bug #13286

Segfault when using rb_debug_inspector_open / rb_debug_inspector_frame_binding_get with Fiddle, but not when directly from C extension

Added by shreeve (Steve Shreeve) almost 2 years ago. Updated about 1 month ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
[ruby-core:<unknown>]

Description

System

$ uname -a
Linux clients 4.1.5-x86_64-linode61 #7 SMP Mon Aug 24 13:46:31 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

Program

When using the following C extension, there are no segfaults

$ cat of_caller.c
#include "ruby/ruby.h"
#include "ruby/debug.h"

static VALUE
callback(const rb_debug_inspector_t *dbg_context, void *data)
{
  long item = NUM2LONG(*((VALUE *)data));
  return rb_debug_inspector_frame_binding_get(dbg_context, item + 1);
}

static VALUE
of_caller(VALUE self, VALUE item)
{
  return rb_debug_inspector_open(callback, (void *) &item);
}

void
Init_bindings(VALUE self)
{
  VALUE cBinding = rb_define_class("Binding", rb_cObject);
  rb_define_singleton_method(cBinding, "of_caller", of_caller, 1);
  rb_define_method(cBinding, "of_caller", of_caller, 1);
}

But, when using this Fiddle version, there are intermittent Ruby crashes

$ cat of_caller.rb
require 'fiddle/import'

module Fiddle
  module Binding
    extend Fiddle::Importer
    dlload Fiddle.dlopen(nil)
    rb_debug_inspector_open              = extern "void* rb_debug_inspector_open(void*, void*)"
    rb_debug_inspector_frame_binding_get = extern "void* rb_debug_inspector_frame_binding_get(void*, long)"
    callback = bind("void* callback(void*, void*)") {|ctx, n| rb_debug_inspector_frame_binding_get.call(ctx, n+4)}
  end
end

class Binding
  def self.of_caller(n); ::Fiddle::Binding.rb_debug_inspector_open(::Fiddle::Binding['callback'], n).to_value; end
  def      of_caller(n); self.class.of_caller(n); end
end

The code used to test the C and Ruby versions

# below here is just to test it out...

outer = 40

class A
  def a
    a = 30
    B.new.b
  end
end

class B
  def b
    b = 20
    C.new.c
  end
end

class C
  def c
    c = 10
    puts binding.of_caller(0).eval('local_variables') # c
    puts binding.of_caller(1).eval('local_variables') # b
    puts binding.of_caller(2).eval('local_variables') # a
    puts binding.of_caller(3).eval('local_variables') # outer
    puts binding.of_caller(9).eval('local_variables') rescue puts($!)
  end
end

50.times { A.new.a }

Results

$ ruby ./of_caller.rb
c
b
a
outer
no such frame
c
b
a
outer
no such frame

... there are a total of 47 of these "c,b,a,out,no such" repeats ...

c
b
a
outer
./of_caller.rb:8: [BUG] Segmentation fault at 0x00000000000008
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0011 p:---- s:0052 e:000051 CFUNC  :call
c:0010 p:0021 s:0046 E:001110 METHOD ./of_caller.rb:8
c:0009 p:0037 s:0040 E:000b48 METHOD ./of_caller.rb:14
c:0008 p:0013 s:0035 E:000218 METHOD ./of_caller.rb:15
c:0007 p:0102 s:0030 E:000458 METHOD ./of_caller.rb:41
c:0006 p:0023 s:0024 E:000288 METHOD ./of_caller.rb:30
c:0005 p:0023 s:0019 E:0024d8 METHOD ./of_caller.rb:23
c:0004 p:0017 s:0014 E:0016a0 BLOCK  ./of_caller.rb:45 [FINISH]
c:0003 p:---- s:0011 e:000010 CFUNC  :times
c:0002 p:0073 s:0007 E:002688 EVAL   ./of_caller.rb:45 [FINISH]
c:0001 p:0000 s:0003 E:000e20 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
./of_caller.rb:45:in `<main>'
./of_caller.rb:45:in `times'
./of_caller.rb:45:in `block in <main>'
./of_caller.rb:23:in `a'
./of_caller.rb:30:in `b'
./of_caller.rb:41:in `c'
./of_caller.rb:15:in `of_caller'
./of_caller.rb:14:in `of_caller'
./of_caller.rb:8:in `rb_debug_inspector_open'
./of_caller.rb:8:in `call'

-- Machine register context ------------------------------------------------
 RIP: 0x00007f3c3764250e RBP: 0x000055fdc2a036f8 RSP: 0x00007ffd8ceb71e0
 RAX: 0x0000000000000008 RBX: 0x0000000000000008 RCX: 0x0000000000000000
 RDX: 0x000000000000001d RDI: 0x0000000000bc530c RSI: 0x000055fdc2af2bb6
  R8: 0x209604bcef02eb42  R9: 0x8a75da5f9c77ef5e R10: 0x00007f3c37645dcb
 R11: 0x00007f3c382a8870 R12: 0x000055fdc2a02f30 R13: 0x0000000000000003
 R14: 0x00007ffd8ceb72c0 R15: 0x000055fdc2d570f8 EFL: 0x0000000000010206

-- C level backtrace information -------------------------------------------
/opt/rubies/ruby-2.4.0/bin/ruby(rb_vm_bugreport+0x528) [0x55fdc07237e8] vm_dump.c:679
/opt/rubies/ruby-2.4.0/bin/ruby(rb_bug_context+0xd0) [0x55fdc0718980] error.c:426
/opt/rubies/ruby-2.4.0/bin/ruby(sigsegv+0x3e) [0x55fdc0614abe] signal.c:907
/lib/x86_64-linux-gnu/libpthread.so.0 [0x7f3c38c3a340]
/opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so(with_gvl_callback+0x3e) [0x7f3c3764250e] closure.c:73
/opt/rubies/ruby-2.4.0/bin/ruby(rb_thread_call_with_gvl+0x1db) [0x55fdc065120b] thread.c:1495
/opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so(callback+0x54) [0x7f3c37642b44] closure.c:195
/usr/lib/x86_64-linux-gnu/libffi.so.6(ffi_closure_unix64_inner+0x1fb) [0x7f3c3743c8cb]
/usr/lib/x86_64-linux-gnu/libffi.so.6(ffi_closure_unix64+0x46) [0x7f3c3743cc44]
/opt/rubies/ruby-2.4.0/bin/ruby(rb_debug_inspector_open+0x1ea) [0x55fdc06a036a] vm_backtrace.c:1186
/usr/lib/x86_64-linux-gnu/libffi.so.6(ffi_call_unix64+0x4c) [0x7f3c3743cadc]
/usr/lib/x86_64-linux-gnu/libffi.so.6(ffi_call+0x1fc) [0x7f3c3743c40c]
/opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so(nogvl_ffi_call+0x18) [0x7f3c37643bd8] function.c:160
/opt/rubies/ruby-2.4.0/bin/ruby(rb_thread_call_without_gvl+0x42) [0x55fdc06508e2] thread.c:1294
/opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so(function_call+0x305) [0x7f3c37643a05] function.c:219
/opt/rubies/ruby-2.4.0/bin/ruby(vm_call_cfunc+0xf1) [0x55fdc0685151] vm_insnhelper.c:1752
/opt/rubies/ruby-2.4.0/bin/ruby(vm_exec_core+0x2f90) [0x55fdc068dc70] insns.def:967
/opt/rubies/ruby-2.4.0/bin/ruby(vm_exec+0x87) [0x55fdc0691207] vm.c:1712
/opt/rubies/ruby-2.4.0/bin/ruby(rb_yield_1+0x592) [0x55fdc069af52] vm.c:969
/opt/rubies/ruby-2.4.0/bin/ruby(int_dotimes+0x3e) [0x55fdc057fd9e] numeric.c:4968
/opt/rubies/ruby-2.4.0/bin/ruby(vm_call_cfunc+0xf1) [0x55fdc0685151] vm_insnhelper.c:1752
/opt/rubies/ruby-2.4.0/bin/ruby(vm_call_method+0xe3) [0x55fdc0693263] vm_insnhelper.c:2291
/opt/rubies/ruby-2.4.0/bin/ruby(vm_exec_core+0x2f90) [0x55fdc068dc70] insns.def:967
/opt/rubies/ruby-2.4.0/bin/ruby(vm_exec+0x87) [0x55fdc0691207] vm.c:1712
/opt/rubies/ruby-2.4.0/bin/ruby(ruby_exec_internal+0xad) [0x55fdc05200ad] eval.c:244
/opt/rubies/ruby-2.4.0/bin/ruby(ruby_run_node+0x2d) [0x55fdc052378d] eval.c:308
/opt/rubies/ruby-2.4.0/bin/ruby(main+0x4b) [0x55fdc051fe6b] addr2line.c:177

-- Other runtime information -----------------------------------------------

* Loaded script: ./of_caller.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/encdb.so
    5 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/trans/transdb.so
    6 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/unicode_normalize.rb
    7 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/rbconfig.rb
    8 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/compatibility.rb
    9 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/defaults.rb
   10 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/deprecate.rb
   11 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/errors.rb
   12 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/version.rb
   13 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/requirement.rb
   14 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/platform.rb
   15 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/basic_specification.rb
   16 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/stub_specification.rb
   17 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/util/list.rb
   18 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/stringio.so
   19 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/specification.rb
   20 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/exceptions.rb
   21 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/dependency.rb
   22 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_gem.rb
   23 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/monitor.rb
   24 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb
   25 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems.rb
   26 /opt/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/path_support.rb
   27 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/version.rb
   28 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/core_ext/name_error.rb
   29 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/levenshtein.rb
   30 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/jaro_winkler.rb
   31 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/spell_checker.rb
   32 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/delegate.rb
   33 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   34 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   35 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
   36 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
   37 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/spell_checkers/null_checker.rb
   38 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean/formatter.rb
   39 /opt/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib/did_you_mean.rb
   40 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so
   41 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle/function.rb
   42 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle/closure.rb
   43 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle.rb
   44 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle/value.rb
   45 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle/pack.rb
   46 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle/struct.rb
   47 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle/cparser.rb
   48 /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/fiddle/import.rb

* Process memory map:

55fdc04fb000-55fdc07fb000 r-xp 00000000 08:00 4517097                    /opt/rubies/ruby-2.4.0/bin/ruby
55fdc09fb000-55fdc0a00000 r--p 00300000 08:00 4517097                    /opt/rubies/ruby-2.4.0/bin/ruby
55fdc0a00000-55fdc0a01000 rw-p 00305000 08:00 4517097                    /opt/rubies/ruby-2.4.0/bin/ruby
55fdc0a01000-55fdc0a13000 rw-p 00000000 00:00 0
55fdc2a02000-55fdc2e5c000 rw-p 00000000 00:00 0                          [heap]
7f3c36111000-7f3c362d3000 r--s 00000000 08:00 18047                      /lib/x86_64-linux-gnu/libc-2.19.so
7f3c362d3000-7f3c37221000 r--s 00000000 08:00 4517097                    /opt/rubies/ruby-2.4.0/bin/ruby
7f3c37221000-7f3c37237000 r-xp 00000000 08:00 20410                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f3c37237000-7f3c37436000 ---p 00016000 08:00 20410                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f3c37436000-7f3c37437000 rw-p 00015000 08:00 20410                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f3c37437000-7f3c3743e000 r-xp 00000000 08:00 6866                       /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1
7f3c3743e000-7f3c3763d000 ---p 00007000 08:00 6866                       /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1
7f3c3763d000-7f3c3763e000 r--p 00006000 08:00 6866                       /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1
7f3c3763e000-7f3c3763f000 rw-p 00007000 08:00 6866                       /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1
7f3c3763f000-7f3c37648000 r-xp 00000000 08:00 4524620                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so
7f3c37648000-7f3c37847000 ---p 00009000 08:00 4524620                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so
7f3c37847000-7f3c37848000 r--p 00008000 08:00 4524620                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so
7f3c37848000-7f3c37849000 rw-p 00009000 08:00 4524620                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so
7f3c37849000-7f3c37851000 r-xp 00000000 08:00 4524618                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/stringio.so
7f3c37851000-7f3c37a50000 ---p 00008000 08:00 4524618                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/stringio.so
7f3c37a50000-7f3c37a51000 r--p 00007000 08:00 4524618                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/stringio.so
7f3c37a51000-7f3c37a52000 rw-p 00008000 08:00 4524618                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/stringio.so
7f3c37a52000-7f3c37a54000 r-xp 00000000 08:00 4524562                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/trans/transdb.so
7f3c37a54000-7f3c37c54000 ---p 00002000 08:00 4524562                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/trans/transdb.so
7f3c37c54000-7f3c37c55000 r--p 00002000 08:00 4524562                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/trans/transdb.so
7f3c37c55000-7f3c37c56000 rw-p 00003000 08:00 4524562                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/trans/transdb.so
7f3c37c56000-7f3c37c58000 r-xp 00000000 08:00 4524572                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/encdb.so
7f3c37c58000-7f3c37e57000 ---p 00002000 08:00 4524572                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/encdb.so
7f3c37e57000-7f3c37e58000 r--p 00001000 08:00 4524572                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/encdb.so
7f3c37e58000-7f3c37e59000 rw-p 00002000 08:00 4524572                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/enc/encdb.so
7f3c37e59000-7f3c38122000 r--p 00000000 08:00 949                        /usr/lib/locale/locale-archive
7f3c38122000-7f3c382dd000 r-xp 00000000 08:00 18047                      /lib/x86_64-linux-gnu/libc-2.19.so
7f3c382dd000-7f3c384dc000 ---p 001bb000 08:00 18047                      /lib/x86_64-linux-gnu/libc-2.19.so
7f3c384dc000-7f3c384e0000 r--p 001ba000 08:00 18047                      /lib/x86_64-linux-gnu/libc-2.19.so
7f3c384e0000-7f3c384e2000 rw-p 001be000 08:00 18047                      /lib/x86_64-linux-gnu/libc-2.19.so
7f3c384e2000-7f3c384e7000 rw-p 00000000 00:00 0
7f3c384e7000-7f3c385ec000 r-xp 00000000 08:00 16793                      /lib/x86_64-linux-gnu/libm-2.19.so
7f3c385ec000-7f3c387eb000 ---p 00105000 08:00 16793                      /lib/x86_64-linux-gnu/libm-2.19.so
7f3c387eb000-7f3c387ec000 r--p 00104000 08:00 16793                      /lib/x86_64-linux-gnu/libm-2.19.so
7f3c387ec000-7f3c387ed000 rw-p 00105000 08:00 16793                      /lib/x86_64-linux-gnu/libm-2.19.so
7f3c387ed000-7f3c387f6000 r-xp 00000000 08:00 17782                      /lib/x86_64-linux-gnu/libcrypt-2.19.so
7f3c387f6000-7f3c389f6000 ---p 00009000 08:00 17782                      /lib/x86_64-linux-gnu/libcrypt-2.19.so
7f3c389f6000-7f3c389f7000 r--p 00009000 08:00 17782                      /lib/x86_64-linux-gnu/libcrypt-2.19.so
7f3c389f7000-7f3c389f8000 rw-p 0000a000 08:00 17782                      /lib/x86_64-linux-gnu/libcrypt-2.19.so
7f3c389f8000-7f3c38a26000 rw-p 00000000 00:00 0
7f3c38a26000-7f3c38a29000 r-xp 00000000 08:00 17270                      /lib/x86_64-linux-gnu/libdl-2.19.so
7f3c38a29000-7f3c38c28000 ---p 00003000 08:00 17270                      /lib/x86_64-linux-gnu/libdl-2.19.so
7f3c38c28000-7f3c38c29000 r--p 00002000 08:00 17270                      /lib/x86_64-linux-gnu/libdl-2.19.so
7f3c38c29000-7f3c38c2a000 rw-p 00003000 08:00 17270                      /lib/x86_64-linux-gnu/libdl-2.19.so
7f3c38c2a000-7f3c38c43000 r-xp 00000000 08:00 18048                      /lib/x86_64-linux-gnu/libpthread-2.19.so
7f3c38c43000-7f3c38e42000 ---p 00019000 08:00 18048                      /lib/x86_64-linux-gnu/libpthread-2.19.so
7f3c38e42000-7f3c38e43000 r--p 00018000 08:00 18048                      /lib/x86_64-linux-gnu/libpthread-2.19.so
7f3c38e43000-7f3c38e44000 rw-p 00019000 08:00 18048                      /lib/x86_64-linux-gnu/libpthread-2.19.so
7f3c38e44000-7f3c38e48000 rw-p 00000000 00:00 0
7f3c38e48000-7f3c38e6b000 r-xp 00000000 08:00 17951                      /lib/x86_64-linux-gnu/ld-2.19.so
7f3c38ea7000-7f3c38eaf000 r--s 00000000 08:00 6866                       /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1
7f3c38eaf000-7f3c38f01000 r--s 00000000 08:00 4524620                    /opt/rubies/ruby-2.4.0/lib/ruby/2.4.0/x86_64-linux/fiddle.so
7f3c38f01000-7f3c38f24000 r--s 00000000 08:00 18048                      /lib/x86_64-linux-gnu/libpthread-2.19.so
7f3c38f24000-7f3c38f55000 rw-p 00000000 00:00 0
7f3c38f55000-7f3c38f5c000 r--s 00000000 08:00 21069997                   /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7f3c38f5c000-7f3c39061000 rw-p 00000000 00:00 0
7f3c39062000-7f3c39063000 rw-p 00000000 00:00 0
7f3c39063000-7f3c39064000 r-xp 00000000 00:00 0
7f3c39064000-7f3c39065000 ---p 00000000 00:00 0
7f3c39065000-7f3c3906a000 rw-p 00000000 00:00 0                          [stack:30831]
7f3c3906a000-7f3c3906b000 r--p 00022000 08:00 17951                      /lib/x86_64-linux-gnu/ld-2.19.so
7f3c3906b000-7f3c3906c000 rw-p 00023000 08:00 17951                      /lib/x86_64-linux-gnu/ld-2.19.so
7f3c3906c000-7f3c3906d000 rw-p 00000000 00:00 0
7ffd8c6bb000-7ffd8ceba000 rw-p 00000000 00:00 0
7ffd8ceea000-7ffd8ceec000 r--p 00000000 00:00 0                          [vvar]
7ffd8ceec000-7ffd8ceee000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]


[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted

History

Updated by shyouhei (Shyouhei Urabe) almost 2 years ago

  • Assignee set to tenderlovemaking (Aaron Patterson)
  • Status changed from Open to Assigned

Updated by shreeve (Steve Shreeve) almost 2 years ago

Here's a link to a c-library extension that has been working great for us:

https://github.com/shreeve/bindings

Also available in: Atom PDF