Giter Club home page Giter Club logo

ruru's People

Contributors

adityamenon avatar brandondrew avatar d-unsed avatar danielpclark avatar dovahcrow avatar jwilm avatar malept avatar mjc-gh avatar simon0191 avatar steveklabnik avatar turboladen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ruru's Issues

How exactly do you use `protect` ?

I've been trying to guess at how to use it but I haven't been able to get anything working. I was able to implement a form of eval_protect but that was entirely different from this. Could you show me an example? Thanks!

Add exception handling to Ruru

handle_exceptions! {
    begin {
        // ...
    } rescue TypeError => e {
        // ...
    } rescue ArgumentError => e {
        // ...
    } rescue => e { // StandardError
        // ...
    } ensure {
        // ...
    }
}

Also there should be a way to call it without ensure (as well as ensure without rescue blocks). Possibly, separate macros are required.

new_instance can cause crash with SIGABRT in method_entry_get_without_cache()

I've written code that will pass all tests, but during benchmarking it will intermittently segfault. The code that rarely will segfault has this logic. It's Rust code called from Ruby

    1. get the directory contents
    1. convert strings to Value object
    1. create AnyObject from Value
    1. instantiate an instance of Pathname class with the Vec<AnyObject> single parameter from above
    1. append each of those to Array and return it to Ruby

It's important to note that there are no problems with the kinds of characters retrieved from the directory (even though characters such as a null byte is valid text for a file name). The segfault typically shows up in the 8000+ iterations benchmark.

I don't read segfaults well but I understand the concept of narrowing down potential problem areas by benchmarking the heck out of specific sections of ruru.

** Segfault output: **
[BUG] Segmentation fault at 0x00000000000018
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0037 p:---- s:0157 e:000156 CFUNC  :initialize
c:0036 p:---- s:0155 e:000154 CFUNC  :children_compat
c:0035 p:0049 s:0150 e:000149 BLOCK  /home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22
c:0034 p:0006 s:0148 e:000147 BLOCK  /home/danielpclark/dev/faster_path/test/benchmark_helper.rb:16 [FINISH]
c:0033 p:---- s:0146 e:000145 CFUNC  :times
c:0032 p:0022 s:0143 e:000142 BLOCK  /home/danielpclark/dev/faster_path/test/benchmark_helper.rb:15 [FINISH]
c:0031 p:---- s:0140 e:000139 CFUNC  :instance_exec
c:0030 p:0040 s:0136 e:000135 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:93 [FINISH]
c:0029 p:---- s:0131 e:000130 CFUNC  :each
c:0028 p:0046 s:0128 e:000127 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:90
c:0027 p:0026 s:0121 E:002428 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:134
c:0026 p:0009 s:0115 E:001238 METHOD /home/danielpclark/dev/faster_path/test/benchmark_helper.rb:13
c:0025 p:0011 s:0111 E:001800 METHOD /home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:20
c:0024 p:0029 s:0108 e:000107 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:107
c:0023 p:0006 s:0106 e:000105 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:204
c:0022 p:0009 s:0102 e:000101 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:104
c:0021 p:0020 s:0100 e:000099 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:255
c:0020 p:0009 s:0096 e:000095 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:103
c:0019 p:0037 s:0094 e:000093 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350
c:0018 p:0052 s:0087 E:000928 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:275
c:0017 p:0009 s:0081 E:000540 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:102
c:0016 p:0090 s:0078 e:000077 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters.rb:57
c:0015 p:0014 s:0072 e:000071 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:839
c:0014 p:0032 s:0066 e:000064 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:324
c:0013 p:0014 s:0059 e:000058 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:311 [FINISH]
c:0012 p:---- s:0056 e:000055 CFUNC  :each
c:0011 p:0010 s:0053 e:000052 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:310
c:0010 p:0037 s:0051 e:000050 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350
c:0009 p:0035 s:0044 E:000818 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:337
c:0008 p:0131 s:0038 E:000dc8 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:309
c:0007 p:0028 s:0030 e:000029 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:22
c:0006 p:0013 s:0025 e:000024 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159 [FINISH]
c:0005 p:---- s:0022 e:000021 CFUNC  :map
c:0004 p:0046 s:0019 e:000018 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159
c:0003 p:0158 s:0011 e:000010 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:136
c:0002 p:0071 s:0005 E:001a38 BLOCK  /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:63 [FINISH]
c:0001 p:0000 s:0002 E:002700 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:63:in `block in autorun'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:136:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159:in `__run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159:in `map'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159:in `block in __run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:22:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:309:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:337:in `with_info_handler'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:310:in `block in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:310:in `each'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:311:in `block (2 levels) in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:324:in `run_one_method'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:839:in `run_one_method'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters.rb:57:in `run_with_hooks'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:102:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:275:in `with_info_handler'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:103:in `block in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:255:in `time_it'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:104:in `block (2 levels) in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:204:in `capture_exceptions'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:107:in `block (3 levels) in run'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:20:in `bench_rust_children_compat'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:13:in `benchmark'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:134:in `assert_performance_constant'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:90:in `assert_performance'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:90:in `each'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:93:in `block in assert_performance'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:93:in `instance_exec'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:15:in `block in benchmark'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:15:in `times'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:16:in `block (2 levels) in benchmark'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22:in `block in bench_rust_children_compat'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22:in `children_compat'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22:in `initialize'

-- Machine register context ------------------------------------------------
 RIP: 0x00007f2222ebe370 RBP: 0x0000560be214f5d0 RSP: 0x00007ffca6050cc0
 RAX: 0x0000560be21bf760 RBX: 0x0000560be2ffc078 RCX: 0x0000000000000095
 RDX: 0x00007ffca6050d28 RDI: 0x0000000000000000 RSI: 0x000000000000009a
  R8: 0x0000000000000001  R9: 0x0000000000000001 R10: 0x0000000000000040
 R11: 0x0000560be214f5d0 R12: 0x0000000000000000 R13: 0x00000000000045e1
 R14: 0x000000000000009a R15: 0x0000000000000001 EFL: 0x0000000000010246

-- C level backtrace information -------------------------------------------
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_vm_bugreport+0x4e8) [0x7f2222ed8ac8] vm_dump.c:692
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_bug_context+0xd4) [0x7f2222d6a284] error.c:435
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(sigsegv+0x3e) [0x7f2222e46d8e] signal.c:890
/lib/x86_64-linux-gnu/libc.so.6 [0x7f2222959860]
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(method_entry_get+0x100) [0x7f2222ebe370] vm_method.c:787
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_respond_to+0x32) [0x7f2222ec8b42] vm_method.c:1919
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_check_funcall_default+0x48) [0x7f2222ec8db8] vm_eval.c:406
/usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so(path_initialize+0x41) [0x7f222122d961] pathname.c:35
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call0_body.constprop.120+0x263) [0x7f2222ed2db3] vm_eval.c:131
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_call0+0xc4) [0x7f2222ed33a4] vm_eval.c:61
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_class_new_instance+0x21) [0x7f2222dd3121] object.c:1856
/home/danielpclark/dev/faster_path/target/release/libfaster_path.so(_ZN4ruru5class5class5Class12new_instance17hab4791e86976965dE+0x42) [0x7f221fcceb22]
/home/danielpclark/dev/faster_path/target/release/libfaster_path.so(pub_children_compat+0x806) [0x7f221fccaaf6]
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_opt_send+0x166) [0x7f2222ed16b6] vm_insnhelper.c:1850
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1209) [0x7f2222eca149] insns.def:994
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield_1+0x54) [0x7f2222ed03d4] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(int_dotimes+0x40) [0x7f2222dc5550] numeric.c:3947
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(yield_under+0x14c) [0x7f2222ed083c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield+0x5c) [0x7f2222ed018c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_ary_each+0x3c) [0x7f2222d1cdec] array.c:1815
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield+0x5c) [0x7f2222ed018c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_ary_each+0x3c) [0x7f2222d1cdec] array.c:1815
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield+0x5c) [0x7f2222ed018c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_ary_collect+0x5c) [0x7f2222d2208c] array.c:2733
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_invoke_proc+0xc3) [0x7f2222ecfff3] vm.c:996
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_proc_call+0x42) [0x7f2222d7a652] proc.c:834
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_exec_end_proc+0x179) [0x7f2222d74689] eval_jump.c:108
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(ruby_finalize_0+0x83) [0x7f2222d747d3] eval.c:122
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(ruby_cleanup+0x1f3) [0x7f2222d74b73] eval.c:181
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(ruby_run_node+0x25) [0x7f2222d74fe5] eval.c:302
/usr/share/rvm/rubies/ruby-2.3.4/bin/ruby(main+0x4b) [0x560be12cb8fb] main.c:36

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

* Loaded script: /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/rake_test_loader.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
    5 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
    6 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/unicode_normalize.rb
    7 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/rbconfig.rb
    8 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/compatibility.rb
    9 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/defaults.rb
   10 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/deprecate.rb
   11 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/errors.rb
   12 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/version.rb
   13 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/requirement.rb
   14 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/platform.rb
   15 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/basic_specification.rb
   16 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/stub_specification.rb
   17 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/util/list.rb
   18 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
   19 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb
   20 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/exceptions.rb
   21 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/dependency.rb
   22 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_gem.rb
   23 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/monitor.rb
   24 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb
   25 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems.rb
   26 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/path_support.rb
   27 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/version.rb
   28 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/core_ext/name_error.rb
   29 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/levenshtein.rb
   30 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/jaro_winkler.rb
   31 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkable.rb
   32 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/delegate.rb
   33 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   34 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   35 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
   36 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
   37 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/null_checker.rb
   38 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/formatter.rb
   39 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean.rb
   40 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/version.rb
   41 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/compatibility_guard.rb
   42 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
   43 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/pathname.rb
   44 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/constants.rb
   45 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/util.rb
   46 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
   47 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/user_interaction.rb
   48 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
   49 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/config_file.rb
   50 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/rubygems_integration.rb
   51 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/current_ruby.rb
   52 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/shared_helpers.rb
   53 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fileutils.rb
   54 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendored_fileutils.rb
   55 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/errors.rb
   56 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/environment_preserver.rb
   57 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/plugin/api.rb
   58 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/plugin.rb
   59 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/rfc2396_parser.rb
   60 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/rfc3986_parser.rb
   61 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/common.rb
   62 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/generic.rb
   63 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/ftp.rb
   64 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/http.rb
   65 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/https.rb
   66 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/ldap.rb
   67 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/ldaps.rb
   68 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/mailto.rb
   69 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri.rb
   70 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
   71 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/digest.rb
   72 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/git.rb
   73 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/installed.rb
   74 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/specific_file.rb
   75 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/local.rb
   76 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/lock.rb
   77 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/vendor.rb
   78 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source.rb
   79 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/gem_helpers.rb
   80 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/match_platform.rb
   81 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/rubygems_ext.rb
   82 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/build_metadata.rb
   83 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler.rb
   84 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/settings.rb
   85 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/ext/builder.rb
   86 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/yaml_serializer.rb
   87 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/feature_flag.rb
   88 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source.rb
   89 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
   90 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/path.rb
   91 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/git.rb
   92 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/rubygems.rb
   93 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/lockfile_parser.rb
   94 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/set.rb
   95 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/definition.rb
   96 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/dependency.rb
   97 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ruby_dsl.rb
   98 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/dsl.rb
   99 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source_list.rb
  100 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/metadata.rb
  101 /home/danielpclark/dev/faster_path/lib/faster_path/version.rb
  102 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/index.rb
  103 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/gemspec.rb
  104 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/lazy_specification.rb
  105 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/tsort.rb
  106 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/forwardable.rb
  107 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/spec_set.rb
  108 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ui.rb
  109 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ui/silent.rb
  110 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ui/rg_proxy.rb
  111 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/text.rb
  112 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/util/licenses.rb
  113 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/remote_specification.rb
  114 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb
  115 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb
  116 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
  117 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb
  118 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb
  119 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
  120 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
  121 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
  122 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
  123 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb
  124 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb
  125 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb
  126 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
  127 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb
  128 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/state.rb
  129 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb
  130 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
  131 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
  132 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb
  133 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb
  134 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo.rb
  135 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendored_molinillo.rb
  136 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/resolver/spec_group.rb
  137 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/resolver.rb
  138 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/gem_version_promoter.rb
  139 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/runtime.rb
  140 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/dep_proxy.rb
  141 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/stub_specification.rb
  142 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/endpoint_specification.rb
  143 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ruby_version.rb
  144 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/setup.rb
  145 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/version.rb
  146 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/singleton.rb
  147 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/optparse.rb
  148 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/ostruct.rb
  149 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/ext/core.rb
  150 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/ext/string.rb
  151 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/win32.rb
  152 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/linked_list.rb
  153 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/cpu_counter.rb
  154 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/scope.rb
  155 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task_argument_error.rb
  156 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/rule_recursion_overflow_error.rb
  157 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task_manager.rb
  158 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/cloneable.rb
  159 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_utils.rb
  160 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_utils_ext.rb
  161 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_list.rb
  162 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/promise.rb
  163 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/thread_pool.rb
  164 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/private_reader.rb
  165 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/thread_history_display.rb
  166 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/trace_output.rb
  167 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/application.rb
  168 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/rake_module.rb
  169 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/pseudo_status.rb
  170 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task_arguments.rb
  171 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/invocation_chain.rb
  172 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/invocation_exception_mixin.rb
  173 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task.rb
  174 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/early_time.rb
  175 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_task.rb
  176 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_creation_task.rb
  177 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/multi_task.rb
  178 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/dsl_definition.rb
  179 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/default_loader.rb
  180 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/late_time.rb
  181 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/name_space.rb
  182 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/backtrace.rb
  183 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake.rb
  184 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
  185 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/platform.rb
  186 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/types.rb
  187 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/library.rb
  188 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/errno.rb
  189 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/pointer.rb
  190 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/memorypointer.rb
  191 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/struct_layout_builder.rb
  192 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/struct.rb
  193 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/union.rb
  194 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/managedstruct.rb
  195 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/callback.rb
  196 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/io.rb
  197 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/autopointer.rb
  198 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/variadic.rb
  199 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/enum.rb
  200 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/ffi.rb
  201 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi.rb
  202 /home/danielpclark/dev/faster_path/lib/faster_path/asset_resolution.rb
  203 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
  204 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fiddle/function.rb
  205 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fiddle/closure.rb
  206 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fiddle.rb
  207 /home/danielpclark/dev/faster_path/lib/faster_path.rb
  208 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/mutex_m.rb
  209 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/parallel.rb
  210 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/tmpdir.rb
  211 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/tempfile.rb
  212 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/assertions.rb
  213 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/unit.rb
  214 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb
  215 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb
  216 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/expectations.rb
  217 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/spec.rb
  218 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/mock.rb
  219 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/autorun.rb
  220 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/relative_position.rb
  221 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/extensible_backtrace_filter.rb
  222 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/version.rb
  223 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters.rb
  224 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/base_reporter.rb
  225 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ansi-1.5.0/lib/ansi/chart.rb
  226 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ansi-1.5.0/lib/ansi/constants.rb
  227 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ansi-1.5.0/lib/ansi/code.rb
  228 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/ansi.rb
  229 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/spec_reporter.rb
  230 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/color_pound_spec_reporter-0.0.9/lib/color_pound_spec_reporter/version.rb
  231 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/color_pound_spec_reporter-0.0.9/lib/color_pound_spec_reporter.rb
  232 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/minitest_reporter_plugin.rb
  233 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/pride_plugin.rb
  234 /home/danielpclark/dev/faster_path/test/test_helper.rb
  235 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb
  236 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/stop_watch-1.0.0/lib/stop_watch/version.rb
  237 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/stop_watch-1.0.0/lib/stop_watch.rb
  238 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/version.rb
  239 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/themes.rb
  240 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/English.rb
  241 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/observer.rb
  242 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
  243 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/rmagick_internal.rb
  244 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/rmagick.rb
  245 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
  246 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/deprecated.rb
  247 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/base.rb
  248 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/area.rb
  249 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bar_conversion.rb
  250 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bar.rb
  251 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bezier.rb
  252 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bullet.rb
  253 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/dot.rb
  254 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/line.rb
  255 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/net.rb
  256 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/pie.rb
  257 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/scatter.rb
  258 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/spider.rb
  259 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/stacked_mixin.rb
  260 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/stacked_area.rb
  261 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/stacked_bar.rb
  262 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/side_bar.rb
  263 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/side_stacked_bar.rb
  264 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/accumulator_bar.rb
  265 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/scene.rb
  266 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/legend.rb
  267 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/bar.rb
  268 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/pie.rb
  269 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/side_bar.rb
  270 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff.rb
  271 /home/danielpclark/dev/faster_path/test/benchmark_helper.rb
  272 /home/danielpclark/dev/faster_path/test/benches/absolute_benchmark.rb
  273 /home/danielpclark/dev/faster_path/test/benches/add_trailing_separator_benchmark.rb
  274 /home/danielpclark/dev/faster_path/test/benches/basename_benchmark.rb
  275 /home/danielpclark/dev/faster_path/test/benches/children_benchmark.rb
  276 /home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb
  277 /home/danielpclark/dev/faster_path/test/benches/chop_basename_benchmark.rb
  278 /home/danielpclark/dev/faster_path/test/benches/directory_benchmark.rb
  279 /home/danielpclark/dev/faster_path/test/benches/dirname_benchmark.rb
  280 /home/danielpclark/dev/faster_path/test/benches/entries_benchmark.rb
  281 /home/danielpclark/dev/faster_path/test/benches/entries_compat_benchmark.rb
  282 /home/danielpclark/dev/faster_path/test/benches/extname_benchmark.rb
  283 /home/danielpclark/dev/faster_path/test/benches/has_trailing_separator_benchmark.rb
  284 /home/danielpclark/dev/faster_path/test/benches/plus_benchmark.rb
  285 /home/danielpclark/dev/faster_path/test/benches/relative_benchmark.rb

* Process memory map:

560be12cb000-560be12cc000 r-xp 00000000 08:01 2508784                    /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
560be14cb000-560be14cc000 r--p 00000000 08:01 2508784                    /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
560be14cc000-560be14cd000 rw-p 00001000 08:01 2508784                    /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
560be214e000-560be325a000 rw-p 00000000 00:00 0                          [heap]
7f220c000000-7f220c021000 rw-p 00000000 00:00 0 
7f220c021000-7f2210000000 ---p 00000000 00:00 0 
7f2213fb8000-7f2213fb9000 ---p 00000000 00:00 0 
7f2213fb9000-7f22140b9000 rw-p 00000000 00:00 0 
7f2216344000-7f2217056000 r--s 00000000 08:01 136902                     /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.24.so
7f221705c000-7f2217222000 r--s 00000000 08:01 1848942                    /lib/x86_64-linux-gnu/libc-2.24.so
7f2217224000-7f2217ffa000 r--s 00000000 08:01 2508786                    /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f2218000000-7f2218021000 rw-p 00000000 00:00 0 
7f2218021000-7f221c000000 ---p 00000000 00:00 0 
7f221c0b9000-7f221c1ba000 rw-p 00000000 00:00 0 
7f221c1ba000-7f221c1bb000 ---p 00000000 00:00 0 
7f221c1bb000-7f221c3bc000 rw-p 00000000 00:00 0 
7f221c3bc000-7f221c3d0000 r-xp 00000000 08:01 2638813                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c3d0000-7f221c5d0000 ---p 00014000 08:01 2638813                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c5d0000-7f221c5d1000 r--p 00014000 08:01 2638813                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c5d1000-7f221c5d2000 rw-p 00015000 08:01 2638813                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c5d4000-7f221c5d9000 r-xp 00000000 08:01 139755                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c5d9000-7f221c7d8000 ---p 00005000 08:01 139755                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c7d8000-7f221c7d9000 r--p 00004000 08:01 139755                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c7d9000-7f221c7da000 rw-p 00005000 08:01 139755                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c7dc000-7f221c7de000 r-xp 00000000 08:01 139744                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c7de000-7f221c9de000 ---p 00002000 08:01 139744                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c9de000-7f221c9df000 r--p 00002000 08:01 139744                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c9df000-7f221c9e0000 rw-p 00003000 08:01 139744                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c9e4000-7f221ca56000 r-xp 00000000 08:01 1839739                    /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221ca56000-7f221cc55000 ---p 00072000 08:01 1839739                    /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221cc55000-7f221cc56000 r--p 00071000 08:01 1839739                    /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221cc56000-7f221cc57000 rw-p 00072000 08:01 1839739                    /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221cc5c000-7f221cc7d000 r-xp 00000000 08:01 141278                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221cc7d000-7f221ce7c000 ---p 00021000 08:01 141278                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221ce7c000-7f221ce7d000 r--p 00020000 08:01 141278                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221ce7d000-7f221ce7e000 rw-p 00021000 08:01 141278                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221ce84000-7f221ceb5000 r-xp 00000000 08:01 140791                     /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221ceb5000-7f221d0b4000 ---p 00031000 08:01 140791                     /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221d0b4000-7f221d0b5000 r--p 00030000 08:01 140791                     /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221d0b5000-7f221d0b6000 rw-p 00031000 08:01 140791                     /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221d0bc000-7f221d0e3000 r-xp 00000000 08:01 1849005                    /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d0e3000-7f221d2e3000 ---p 00027000 08:01 1849005                    /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d2e3000-7f221d2e5000 r--p 00027000 08:01 1849005                    /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d2e5000-7f221d2e6000 rw-p 00029000 08:01 1849005                    /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d2ec000-7f221d3fe000 r-xp 00000000 08:01 1840353                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d3fe000-7f221d5fd000 ---p 00112000 08:01 1840353                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d5fd000-7f221d5fe000 r--p 00111000 08:01 1840353                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d5fe000-7f221d5ff000 rw-p 00112000 08:01 1840353                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d5ff000-7f221d600000 rw-p 00000000 00:00 0 
7f221d604000-7f221d631000 r-xp 00000000 08:01 140306                     /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d631000-7f221d830000 ---p 0002d000 08:01 140306                     /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d830000-7f221d831000 r--p 0002c000 08:01 140306                     /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d831000-7f221d832000 rw-p 0002d000 08:01 140306                     /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d834000-7f221d83c000 r-xp 00000000 08:01 140564                     /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221d83c000-7f221da3c000 ---p 00008000 08:01 140564                     /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221da3c000-7f221da3d000 r--p 00008000 08:01 140564                     /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221da3d000-7f221da3e000 rw-p 00009000 08:01 140564                     /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221da44000-7f221da5d000 r-xp 00000000 08:01 1835252                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221da5d000-7f221dc5c000 ---p 00019000 08:01 1835252                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221dc5c000-7f221dc5d000 r--p 00018000 08:01 1835252                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221dc5d000-7f221dc5e000 rw-p 00019000 08:01 1835252                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221dc64000-7f221dc73000 r-xp 00000000 08:01 1839610                    /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221dc73000-7f221de72000 ---p 0000f000 08:01 1839610                    /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221de72000-7f221de73000 r--p 0000e000 08:01 1839610                    /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221de73000-7f221de74000 rw-p 0000f000 08:01 1839610                    /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221de74000-7f221dfa9000 r-xp 00000000 08:01 139740                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221dfa9000-7f221e1a8000 ---p 00135000 08:01 139740                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221e1a8000-7f221e1a9000 r--p 00134000 08:01 139740                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221e1a9000-7f221e1ad000 rw-p 00135000 08:01 139740                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221e1b4000-7f221e1c5000 r-xp 00000000 08:01 139757                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e1c5000-7f221e3c4000 ---p 00011000 08:01 139757                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e3c4000-7f221e3c5000 r--p 00010000 08:01 139757                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e3c5000-7f221e3c6000 rw-p 00011000 08:01 139757                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e3cc000-7f221e473000 r-xp 00000000 08:01 132633                     /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e473000-7f221e672000 ---p 000a7000 08:01 132633                     /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e672000-7f221e678000 r--p 000a6000 08:01 132633                     /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e678000-7f221e679000 rw-p 000ac000 08:01 132633                     /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e67c000-7f221e6b9000 r-xp 00000000 08:01 140159                     /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e6b9000-7f221e8b8000 ---p 0003d000 08:01 140159                     /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e8b8000-7f221e8ba000 r--p 0003c000 08:01 140159                     /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e8ba000-7f221e8bf000 rw-p 0003e000 08:01 140159                     /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e8c4000-7f221eaae000 r-xp 00000000 08:01 140143                     /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221eaae000-7f221ecad000 ---p 001ea000 08:01 140143                     /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221ecad000-7f221ecc1000 r--p 001e9000 08:01 140143                     /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221ecc1000-7f221ecc2000 rw-p 001fd000 08:01 140143                     /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221ecc4000-7f221ecdb000 r-xp 00000000 08:01 140560                     /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221ecdb000-7f221eeda000 ---p 00017000 08:01 140560                     /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221eeda000-7f221eedb000 r--p 00016000 08:01 140560                     /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221eedb000-7f221eedc000 rw-p 00017000 08:01 140560                     /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221eedc000-7f221ef2e000 r-xp 00000000 08:01 140538                     /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221ef2e000-7f221f12d000 ---p 00052000 08:01 140538                     /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221f12d000-7f221f12e000 r--p 00051000 08:01 140538                     /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221f12e000-7f221f132000 rw-p 00052000 08:01 140538                     /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221f132000-7f221f133000 rw-p 00000000 00:00 0 
7f221f134000-7f221f375000 r-xp 00000000 08:01 134270                     /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f375000-7f221f574000 ---p 00241000 08:01 134270                     /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f574000-7f221f588000 r--p 00240000 08:01 134270                     /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f588000-7f221f5c7000 rw-p 00254000 08:01 134270                     /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f5c7000-7f221f5e6000 rw-p 00000000 00:00 0 
7f221f5ec000-7f221f657000 r-xp 00000000 00:30 3433692                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f657000-7f221f857000 ---p 0006b000 00:30 3433692                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f857000-7f221f859000 r--p 0006b000 00:30 3433692                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f859000-7f221f85b000 rw-p 0006d000 00:30 3433692                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f85b000-7f221f85c000 rw-p 00000000 00:00 0 
7f221f85c000-7f221f872000 r-xp 00000000 08:01 1839651                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221f872000-7f221fa71000 ---p 00016000 08:01 1839651                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221fa71000-7f221fa72000 r--p 00015000 08:01 1839651                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221fa72000-7f221fa73000 rw-p 00016000 08:01 1839651                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221fa74000-7f221fa7b000 r-xp 00000000 08:01 1848959                    /lib/x86_64-linux-gnu/librt-2.24.so
7f221fa7b000-7f221fc7a000 ---p 00007000 08:01 1848959                    /lib/x86_64-linux-gnu/librt-2.24.so
7f221fc7a000-7f221fc7b000 r--p 00006000 08:01 1848959                    /lib/x86_64-linux-gnu/librt-2.24.so
7f221fc7b000-7f221fc7c000 rw-p 00007000 08:01 1848959                    /lib/x86_64-linux-gnu/librt-2.24.so
7f221fc7c000-7f221fd76000 r-xp 00000000 00:30 5270280                    /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221fd76000-7f221ff75000 ---p 000fa000 00:30 5270280                    /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221ff75000-7f221ff7e000 r--p 000f9000 00:30 5270280                    /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221ff7e000-7f221ff7f000 rw-p 00102000 00:30 5270280                    /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221ff84000-7f221ff8d000 r-xp 00000000 08:01 2638791                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f221ff8d000-7f222018c000 ---p 00009000 08:01 2638791                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f222018c000-7f222018d000 r--p 00008000 08:01 2638791                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f222018d000-7f222018e000 rw-p 00009000 08:01 2638791                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f2220194000-7f222019b000 r-xp 00000000 08:01 140141                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222019b000-7f222039a000 ---p 00007000 08:01 140141                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222039a000-7f222039b000 r--p 00006000 08:01 140141                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222039b000-7f222039c000 rw-p 00007000 08:01 140141                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222039c000-7f22203bf000 r-xp 00000000 00:30 1331270                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22203bf000-7f22205be000 ---p 00023000 00:30 1331270                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22205be000-7f22205bf000 r--p 00022000 00:30 1331270                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22205bf000-7f22205c0000 rw-p 00023000 00:30 1331270                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22205c4000-7f22207dd000 r-xp 00000000 08:01 1835036                    /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f22207dd000-7f22209dd000 ---p 00219000 08:01 1835036                    /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f22209dd000-7f22209f9000 r--p 00219000 08:01 1835036                    /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f22209f9000-7f2220a05000 rw-p 00235000 08:01 1835036                    /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f2220a05000-7f2220a08000 rw-p 00000000 00:00 0 
7f2220a0c000-7f2220a0d000 r-xp 00000000 08:01 3425468                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220a0d000-7f2220c0c000 ---p 00001000 08:01 3425468                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220c0c000-7f2220c0d000 r--p 00000000 08:01 3425468                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220c0d000-7f2220c0e000 rw-p 00001000 08:01 3425468                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220c14000-7f2220c18000 r-xp 00000000 08:01 2638812                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220c18000-7f2220e17000 ---p 00004000 08:01 2638812                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220e17000-7f2220e18000 r--p 00003000 08:01 2638812                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220e18000-7f2220e19000 rw-p 00004000 08:01 2638812                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220e1c000-7f2220e22000 r-xp 00000000 08:01 2638799                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2220e22000-7f2221021000 ---p 00006000 08:01 2638799                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2221021000-7f2221022000 r--p 00005000 08:01 2638799                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2221022000-7f2221023000 rw-p 00006000 08:01 2638799                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2221024000-7f2221028000 r-xp 00000000 00:30 3823617                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f2221028000-7f2221228000 ---p 00004000 00:30 3823617                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f2221228000-7f2221229000 r--p 00004000 00:30 3823617                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f2221229000-7f222122a000 rw-p 00005000 00:30 3823617                    /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f222122c000-7f2221233000 r-xp 00000000 08:01 2638789                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221233000-7f2221432000 ---p 00007000 08:01 2638789                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221432000-7f2221433000 r--p 00006000 08:01 2638789                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221433000-7f2221434000 rw-p 00007000 08:01 2638789                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221434000-7f222143c000 r-xp 00000000 08:01 2638807                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f222143c000-7f222163b000 ---p 00008000 08:01 2638807                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f222163b000-7f222163c000 r--p 00007000 08:01 2638807                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f222163c000-7f222163d000 rw-p 00008000 08:01 2638807                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f2221644000-7f2221646000 r-xp 00000000 08:01 3425420                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f2221646000-7f2221846000 ---p 00002000 08:01 3425420                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f2221846000-7f2221847000 r--p 00002000 08:01 3425420                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f2221847000-7f2221848000 rw-p 00003000 08:01 3425420                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f222184c000-7f222184e000 r-xp 00000000 08:01 3425427                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f222184e000-7f2221a4d000 ---p 00002000 08:01 3425427                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f2221a4d000-7f2221a4e000 r--p 00001000 08:01 3425427                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f2221a4e000-7f2221a4f000 rw-p 00002000 08:01 3425427                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f2221a54000-7f2221d2d000 r--p 00000000 08:01 163173                     /usr/lib/locale/locale-archive
7f2221d34000-7f2221e3c000 r-xp 00000000 08:01 1848946                    /lib/x86_64-linux-gnu/libm-2.24.so
7f2221e3c000-7f222203b000 ---p 00108000 08:01 1848946                    /lib/x86_64-linux-gnu/libm-2.24.so
7f222203b000-7f222203c000 r--p 00107000 08:01 1848946                    /lib/x86_64-linux-gnu/libm-2.24.so
7f222203c000-7f222203d000 rw-p 00108000 08:01 1848946                    /lib/x86_64-linux-gnu/libm-2.24.so
7f2222044000-7f222204d000 r-xp 00000000 08:01 1848944                    /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222204d000-7f222224c000 ---p 00009000 08:01 1848944                    /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222224c000-7f222224d000 r--p 00008000 08:01 1848944                    /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222224d000-7f222224e000 rw-p 00009000 08:01 1848944                    /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222224e000-7f222227c000 rw-p 00000000 00:00 0 
7f222227c000-7f222227f000 r-xp 00000000 08:01 1848945                    /lib/x86_64-linux-gnu/libdl-2.24.so
7f222227f000-7f222247e000 ---p 00003000 08:01 1848945                    /lib/x86_64-linux-gnu/libdl-2.24.so
7f222247e000-7f222247f000 r--p 00002000 08:01 1848945                    /lib/x86_64-linux-gnu/libdl-2.24.so
7f222247f000-7f2222480000 rw-p 00003000 08:01 1848945                    /lib/x86_64-linux-gnu/libdl-2.24.so
7f2222484000-7f2222503000 r-xp 00000000 08:01 140282                     /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222503000-7f2222702000 ---p 0007f000 08:01 140282                     /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222702000-7f2222703000 r--p 0007e000 08:01 140282                     /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222703000-7f2222704000 rw-p 0007f000 08:01 140282                     /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222704000-7f222271c000 r-xp 00000000 08:01 1848957                    /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222271c000-7f222291c000 ---p 00018000 08:01 1848957                    /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222291c000-7f222291d000 r--p 00018000 08:01 1848957                    /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222291d000-7f222291e000 rw-p 00019000 08:01 1848957                    /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222291e000-7f2222922000 rw-p 00000000 00:00 0 
7f2222924000-7f2222ae2000 r-xp 00000000 08:01 1848942                    /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ae2000-7f2222ce1000 ---p 001be000 08:01 1848942                    /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ce1000-7f2222ce5000 r--p 001bd000 08:01 1848942                    /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ce5000-7f2222ce7000 rw-p 001c1000 08:01 1848942                    /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ce7000-7f2222ceb000 rw-p 00000000 00:00 0 
7f2222cec000-7f2222fbf000 r-xp 00000000 08:01 2508786                    /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f2222fbf000-7f22231be000 ---p 002d3000 08:01 2508786                    /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f22231be000-7f22231c4000 r--p 002d2000 08:01 2508786                    /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f22231c4000-7f22231c7000 rw-p 002d8000 08:01 2508786                    /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f22231c7000-7f22231d8000 rw-p 00000000 00:00 0 
7f22231dc000-7f2223201000 r-xp 00000000 08:01 1836520                    /lib/x86_64-linux-gnu/ld-2.24.so
7f222326c000-7f22232ac000 r--s 00000000 08:01 2638789                    /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f22232ac000-7f22232cf000 r--s 00000000 08:01 2508784                    /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
7f22232d1000-7f22233d4000 rw-p 00000000 00:00 0 
7f22233f4000-7f22233fb000 r--s 00000000 08:01 414919                     /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7f22233fd000-7f22233fe000 ---p 00000000 00:00 0 
7f22233fe000-7f2223401000 rw-p 00000000 00:00 0 
7f2223401000-7f2223402000 r--p 00025000 08:01 1836520                    /lib/x86_64-linux-gnu/ld-2.24.so
7f2223402000-7f2223403000 rw-p 00026000 08:01 1836520                    /lib/x86_64-linux-gnu/ld-2.24.so
7f2223403000-7f2223404000 rw-p 00000000 00:00 0 
7f2223404000-7f2223405000 r-xp 00000000 00:00 0 
7f2223405000-7f222340a000 rw-p 00000000 00:00 0 
7ffca585a000-7ffca6059000 rw-p 00000000 00:00 0                          [stack]
7ffca6154000-7ffca6156000 r--p 00000000 00:00 0                          [vvar]
7ffca6156000-7ffca6158000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

Working Code

An important detail to add is I have a similar implementation which does the following:

    1. get the directory contents
    1. convert strings to a RString object
    1. append each of those to an Array and return it to Ruby

And this never segfaults for me. This helps narrow down the problem area.

Change class definition API

Change class!, methods! and unsafe_methods! macro to have a better API for defining Ruby classes (needs discussion and decision).

Linking error

I thought I'd try this out, but immediately ran into a linking error:

โ‡’  cargo build
   Compiling ruru v0.5.0
   Compiling libc v0.1.12
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/libc-0.1.12/rust/src/liblibc/lib.rs:81:21: 81:39 warning: lint raw_pointer_derive has been removed: using derive with raw pointers is ok
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/libc-0.1.12/rust/src/liblibc/lib.rs:81 #![allow(bad_style, raw_pointer_derive)]
                                                                                                                              ^~~~~~~~~~~~~~~~~~
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/ruru-0.5.0/src/types.rs:16:1: 16:85 warning: trait bounds are not (yet) enforced in type definitions [E0122]
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/ruru-0.5.0/src/types.rs:16 pub type Callback<I: Object, O: Object> = extern fn(Argc, *const AnyObject, I) -> O;
                                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/ruru-0.5.0/src/types.rs:16:1: 16:85 help: run `rustc --explain E0122` to see a detailed explanation
error: linking with `cc` failed: exit code: 1
note: "cc" "-m64" "-L" "/Users/craig.hills/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/craig.hills/code/bruw/target/debug/deps/ruru-89284decc76f4754.0.o" "-o" "/Users/craig.hills/code/bruw/target/debug/deps/libruru-89284decc76f4754.dylib" "/Users/craig.hills/code/bruw/target/debug/deps/ruru-89284decc76f4754.metadata.o" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/craig.hills/code/bruw/target/debug/deps" "-L" "/Users/craig.hills/code/bruw/target/debug/deps" "-L" "/usr/local/opt/rbenv/versions/2.3.0/lib" "-L" "/Users/craig.hills/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-Wl,-force_load,/var/folders/0j/s2tz5nh135325kr5czrkq_0m274bbw/T/rustc.sQqN26Zd1r6K/liblibc-dd3420cb049117bb.rlib" "-L" "/Users/craig.hills/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "-l" "std-4fda350b" "-l" "c" "-l" "m" "-l" "System" "-l" "pthread" "-l" "c" "-l" "m" "-dynamiclib" "-Wl,-dylib" "-l" "compiler-rt"
note: Undefined symbols for architecture x86_64:
  "_rb_funcallv", referenced from:
      binding::util::call_method::h19b8a2c489e1971cRia in ruru-89284decc76f4754.0.o
  "_rb_sym2id", referenced from:
      binding::symbol::sym_to_id::hfeed45964b43a6ffRha in ruru-89284decc76f4754.0.o
  "_rb_id2sym", referenced from:
      binding::symbol::id_to_sym::h4480ba545371b02cnha in ruru-89284decc76f4754.0.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: aborting due to previous error
Could not compile `ruru`.
โ‡’  rbenv version
2.3.0 (set by /usr/local/opt/rbenv/version)
โ‡’  rustc -V
rustc 1.8.0 (db2939409 2016-04-11)
โ‡’  cc --version
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Question regarding error handling

How are we supposed to handle returning errors? Since we can't throw exceptions from Rust, like we do with Ruby, and unwraping in library code is generally bad, I'm not really sure what we're supposed to do in this situation.

Steal helix' macro API

Would it make sense to adapt helix' macro API?

I've just come across ruru and saw that it uses macros to define types, but they are not quite as concise as the ones in helix (and you need to specify an unmangled function which helix for some reason doesn't). The class definition DSL seems okay but defining classes in a macro that makes the code look like Ruby might go a long way in convincing Ruby programmers to try this Rust thing :)

RString default encoding is ASCII-8Bit

I made a small example to show the "issue". It is available here: https://github.com/mikeycgto/ruru-rstring-encoding#example.

While this isn't incorrect it does feel a little odd since in modern Ruby and Rust both default to UTF-8 encoding.

Perhaps ruby-sys should expose rb_utf8_str_new as well? The RString struct could then maybe have a new_from_utf8 function which will ultimately call this Ruby C function. I can make the necessary PRs but I wanted some feedback first.

RString needs to be panic safe std::panic::catch_unwind

Ruby has this particular string in it's own test suite:

filename = "\xff".force_encoding("UTF-8") # invalid byte sequence as UTF-8

https://github.com/ruby/ruby/blob/b67ead14521fb74bcf8ec28f8c78245dfb536b70/test/ruby/test_dir_m17n.rb#L72

This will cause ruru to panic:

thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err`
value: Utf8Error { valid_up_to: 0, error_len: Some(1) }', /checkout/src/libcore/result.rs:906:4

I've tried wrapping it in a thread but that failed.

In Rust, panic is safe and per-thread. The boundaries between threads serve as a firewall for panic;

  • Programming Rust by Jim Blandy, Jason Orendorff

I then found Rust's std::panic::catch_unwind which according to the original RFC is meant to handle such panics from C method calls. The catch_unwind doc has this note:

Note that this function may not catch all panics in Rust. A panic in Rust is not always implemented via unwinding, but can be implemented by aborting the process as well. This function only catches unwinding panics, not those that abort the process.

I have thus far been unable to catch the panic from this and looking up the error Utf8Error it would seem that that is a side effect of the kind of methods used from libruby for RString and that error isn't written in ruru.

docker container?

Can you point at a docker container with a ready version of ruby?

Build native extensions as static libraries

RbConfig::CONFIG provides all the required information for linking with static libraries. But Cargo does not allow to use all the flags, for example -framework CoreFoundation on Mac OS X.

Investigate thermite + RbConfig::CONFIG + gcc as a final (optional) step while building an extension.

This allows to use MRI without --enable-shared option (emk/heroku-buildpack-rust#15)

Array::new() segfaults on cargo test

When I run cargo test on

extern crate ruru;

#[cfg(test)]
mod tests {
  use ruru::{Array};
    #[test]
    fn it_works() {
      let array = Array::new();
    }   
}

I get the following results

~/code/test_ruru:14:51>cargo test
   Compiling test_ruru v0.1.0 (file:///Users/william/code/test_ruru)
src/lib.rs:8:11: 8:16 warning: unused variable: `array`, #[warn(unused_variables)] on by default
src/lib.rs:8       let array = Array::new();
                       ^~~~~
     Running target/debug/test_ruru-a9b31b1da40514d8

running 1 test
error: Process didn't exit successfully: `/Users/william/code/test_ruru/target/debug/test_ruru-a9b31b1da40514d8` (signal: 11, SIGSEGV: invalid memory reference)

To learn more, run the command again with --verbose.

results of ruby -r rbconfig -e 'puts RbConfig::CONFIG["configure_args"]'

'--prefix=/Users/william/.rubies/ruby-2.3.0' '--with-opt-dir=/usr/local/opt/openssl:/usr/local/opt/readline:/usr/local/opt/libyaml:/usr/local/opt/gdbm' '--enable-shared'

Moving vs borrowing

Consider the following example:

let string = RString::new("Some string");
let mut array = Array::new();

// Moves `string` into `array` similarly to `vec.push()` in Rust
array.push(string);

// ... `string` cannot be used, because it's moved

vs

string = 'Some string'
array = []

# Takes a reference of the `string`
array.push(string)

# `string` can be used
string.concat(" mutated")

array.inspect # => ['Some string mutated']

It needs to be decided whether to take objects references (Ruby way) or by values (Rust way).

Implement Copy trait for primitive types

Implement Copy trait similarly to Rust primitive types.

Should be implemented for those types which have constant object_ids.

  • Boolean
  • Float
  • Integer
  • NilClass
  • Symbol

Need for unwraps everywhere?

I feel like I'm needing to unwrap() everything to pass to other functions.

Here is what I have so far

#[macro_use]
extern crate ruru;
extern crate inflector;

// // dash: kebab-case
use inflector::cases::kebabcase::to_kebab_case;
// // underscore: snake_case
use inflector::cases::snakecase::to_snake_case;
// // camel_lower: camelCase
use inflector::cases::camelcase::to_camel_case;
// // camel: ClassCase (PascalCase)
use inflector::cases::classcase::to_class_case;

use ruru::{Class, Object, RString, Hash, Array, Symbol, AnyObject, VM};
use ruru::types::ValueType;

class!(CaseTransform);

methods! (
    CaseTransform,
    itself,

    fn deepTransformKeys(hash: Hash, block: &Fn(String) -> String) -> Hash {
        let result = Hash::new();

        hash.unwrap().each(|key, value| {
            let newValue = if value.ty() == ValueType::Hash { deepTransformKeys(value, block).to_any_object() } else { value };
            let newKey = RString::new(block(key.unwrap().to_string()));
            result.store(newKey, newValue);
        });

        result
    }

    fn transformArray(value: Array, transformMethod: &Fn(AnyObject) -> AnyObject) -> Array {
        value.map(|item| transformMethod(item)).unwrap()
    }

    fn transformHash(value: Hash, transformMethod: &Fn(AnyObject) -> AnyObject) -> Hash {
        deepTransformKeys(value, |key| transformMethod(key))
    }

    fn transformSymbol(value: Symbol, transformMethod: &Fn(AnyObject) -> AnyObject) -> Symbol {
        let transformed = transformMethod(value);
        Symbol::new(transformed);
    }

    fn transform(
        value: AnyObject,
        objectTransform: &Fn(AnyObject) -> AnyObject,
        keyTransform: &Fn(String) -> String
    ) -> AnyObject {
        match value.unwrap().ty() {
            ValueType::Array => transformArray(value, objectTransform).to_any_object(),
            ValueType::Hash => transformHash(value, objectTransform).to_any_object(),
            ValueType::Symbol => transformSymbol(value, objectTransform).to_any_object(),
            ValueType::RString => keyTransform(value).to_any_object(),
            ValueType::Object => value
        }
    }

    fn toPascalCase(key: String) -> String { to_class_case(to_snake_case(key.unwrap())) }
    fn toCamelCase(key: String) -> String { to_camel_case(to_snake_case(key.unwrap())) }
    fn toDashedCase(key: String) -> String { to_kebab_case(to_snake_case(key.unwrap())) }
    fn toSnakeCase(key: String) -> String { to_snake_case(key.unwrap()) }

    fn camel(value: AnyObject) -> AnyObject { transform(value.unwrap().to_any_object(), &camel, &toPascalCase) }
    fn camelLower(value: AnyObject) -> AnyObject { transform(value.unwrap().to_any_object(), &camelLower, &toCamelCase) }
    fn dash(value: AnyObject) -> AnyObject { transform(value.unwrap().to_any_object(), &dash, &toDashedCase) }
    fn underscore(value: AnyObject) -> AnyObject { transform(value.unwrap(), &underscore, &toSnakeCase) }
    fn unaltered(value: AnyObject) -> AnyObject { value.unwrap().to_any_object() }
);

#[no_mangle]
pub extern fn initialize_case_transform() {
    Class::new("CaseTransform", None).define(|itself| {
        itself.def_self("camel", camel);
        itself.def_self("camel_lower", camelLower);
        itself.def_self("dash", dash);
        itself.def_self("underscore", underscore);
        itself.def_self("unaltered", unaltered);
    });
}

I may also be struggling with Rust as I'm still fairly new to it -- and I may be trying too hard to adapt the ruby implementation I had of this to Rust (hence all the AnyObject / to_any_object everywhere). :-\

Here is the full repo, if you're interested: https://github.com/NullVoxPopuli/case_transform/blob/8f017c642a254388d6ca6b4c2aaee8f10fea0d17/ext/case_transform/src/lib.rs

"This Week in Ruru" needs a summary at the top of each entry

Since the "This Week in Ruru" website doesn't have a public repository, I'm filing it here.

Each blog entry to "This Week in Ruru" should have a description of what Ruru is at the top so people who are directly linked to the post from, for example, Reddit, know the context of the changes/news described.

Bind/wrap st_* functions

I'd like to use some of the st_* functions because I'm porting an existing C extension at work. In particular, I want to use st_lookup so I can implement Hash.has_key. I have a branch that adds initial bindings for it at https://github.com/malept/ruby-sys/tree/st-functions. My progress has subsided partially because I don't think my bindings are quite correct (I think I tried to implement has_key and I got a weird segfault...I'd have to look again).

Optional values from at function

Hello,

My question is can hash at return a rust option or can i get a hint of the type from any object. Or match on the type AnyObject can become?

Question really about the Hash but could apply to Array. I am looking for a key that might not be there. Right now hash returns AnyObject. Not sure if its possible but the Option would help a lot! I am currently throwing my results in to a rust HashMap then converting it to a Hash before returning. If I can sort out the nil issue I can just use a Hash from the start.

Thanks! It was fun and easy! I look forward to really using ruru in a real project.

Becker

For reference my code https://github.com/sbeckeriv/greedy-color

How do I use it?

Is the "How do I use it?" section of the readme up to date? I'm interested in checking out the project, but wanted to see if the readme is up to date before digging in.

Ruru requires Ruby >= 2.2

I've tried building with 2.1.x but it doesn't have the rb_id2sym symbol (it's a macro in Ruby <= 2.1 IIRC).

There should be a note about this somewhere in the README.

Remove all `unwrap()`s

As a long-term project, I would like to get rid of the unwraps and convert to Result<T, E>-based handling.

Add NEWS file?

It would be great if a NEWS.md (or CHANGELOG.md if you prefer), so that it's clear to users of ruru what changed between versions. I suggest following the Keep a Changelog format.

Get strings by reference

  • RString::to_str(&self) -> &str
  • RString::to_str_unchecked(&self) -> &str

These methods are similar to to_string() and to_string_unchecked(). The difference is that they return immutable references to underlying Ruby strings.

The new methods do not allocate new Strings on heap, thus they should be faster when a user just needs to get underlying data from Ruby string.

Change Object::get_data()

Change Object::get_data() to return immutable &T, and then add Object::get_data_mut() to return &mut T.

Also get_data_mut should receive self as a mutable reference, because the underlying structure of the object may be mutated.

  • get_data<'a, T>(&'a self, wrapper: &'a DataTypeWrapper<T>) -> &T
  • get_data_mut<'a, T>(&'a mut self, wrapper: &'a DataTypeWrapper<T>) -> &mut T

C Namespace collisions

If you define a method called "gets" the code will compile, but will segfault whenever the method is called because the binding will collide with libc's gets, the latter overriding the former.

It happened to me, and it took me an hour or two before realizing what was going on.

So I had code like this:

class!(InputStream);
methods!(InputStream, itself,
     fn gets() -> AnyObject {
        NilClass::new().to_any_object()
     }
)
#[no_mangle]
pub extern fn init() {
    Class::new("InputStream", None).define(|itself| {
                itself.def("gets", gets);
    }
}

When I discovered what was going on (by using GDB to get backtraces) the workaround was clear, renaming gets to InputStream_gets did the trick. I did not see mention of this in the docs, so one solution could be to just add a warning to the docs. A more robust solution would be to prefix the C function names automatically, maybe with something like __ruru_.

Linking error (with libruby present)

I am experiencing the same issue as #1 but I have already built ruby with --enable-shared:

$ rbenv version
2.3.0 (set by /Users/wmoore/Projects/translation_middleware/.ruby-version)

$ ls ~/.rbenv/versions/2.3.0/lib
libruby.2.3.0-static.a libruby.2.3.dylib      pkgconfig
libruby.2.3.0.dylib    libruby.dylib          ruby

Error:

error: linking with `cc` failed: exit code: 1
note: "cc" "-m64" "-L" "/Users/wmoore/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/wmoore/Projects/translation_middleware/target/debug/translation_middleware.0.o" "-o" "/Users/wmoore/Projects/translation_middleware/target/debug/libtranslation_middleware.dylib" "/Users/wmoore/Projects/translation_middleware/target/debug/translation_middleware.metadata.o" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/wmoore/Projects/translation_middleware/target/debug" "-L" "/Users/wmoore/Projects/translation_middleware/target/debug/deps" "-L" "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib" "-L" "/Users/wmoore/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libruru-c125d47a5dbdbad9.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libruby_sys-9c98563f5869bd84.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liblibc-12d5d911cf5411c3.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libstd-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libcollections-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/librustc_unicode-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/librand-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liballoc-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liballoc_system-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liblibc-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libcore-4fda350b.rlib" "-l" "ruby" "-l" "System" "-l" "pthread" "-l" "c" "-l" "m" "-dynamiclib" "-Wl,-dylib" "-l" "compiler-rt"
note: Undefined symbols for architecture x86_64:
  "_rb_funcallv", referenced from:
      binding::util::call_method::hd3cb17cf82fa681azia in libruru-c125d47a5dbdbad9.rlib(ruru-c125d47a5dbdbad9.0.o)
  "_rb_sym2id", referenced from:
      binding::symbol::sym_to_id::ha5d004a08aad5d8byha in libruru-c125d47a5dbdbad9.rlib(ruru-c125d47a5dbdbad9.0.o)
  "_rb_id2sym", referenced from:
      binding::symbol::id_to_sym::h7a1479f68e6b60724ga in libruru-c125d47a5dbdbad9.rlib(ruru-c125d47a5dbdbad9.0.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: aborting due to previous error
Could not compile `translation_middleware`.

To learn more, run the command again with --verbose.

Using rustc 1.8.0 (db2939409 2016-04-11)

I note that in all the -L arguments to the compiler it includes "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib", which is no doubt the issue โ€” I want to it to find the current rbenv ruby. Do you have any suggestions on how to get it to pick up the right ruby?

What's the best way to reuse code or define helper methods inside `methods!`macro?

If I define some_helper_method inside methods! macro and try to call it inside other method defined inside methods! macro I get these errors:

     some_helper_method();
   | ^^^^^^^^^^^^^^^^^^^^^^ expected 3 parameters
src/lib.rs:7:1: 109:3 note: in this expansion of methods! (defined in <ruru macros>)
   |
   = note: the following parameter types were expected: i32, *const ruru::AnyObject, SomeClass

So... What's the best way to declare some helper methods to reuse code?

Attaching Rust state/data to Ruby instances

Is there a clean way to attach Rust state/data to a Ruby class?
Something like instance variables which are only visible to the Rust env?

The reason I'm asking is because I'd like to expose a Rust implementation of a Ruby class, but use Rust's more robust data structures and memory management for the internal heavy lifting.

Add modules to Ruru

Add basic support for Modules.

Also there may be some common functionality which is implemented in Class struct. Extract the logic to a trait in this case.

Change conversion methods to take objects by values

The following methods should take self by value, because technically they return the same Ruby
objects converted to another Rust type.

  • Object::to

    Object::to<T: Object>(&self) -> T

    changes to

    Object::convert_into<T: Object>(self) -> T
  • Object::try_convert_to

    Object::try_convert_to<T: VerifiedObject>(&self) -> Result<T>

    changes to

    Object::try_convert_into<T: VerifiedObject>(self) -> Result<T>
  • Object::to_any_object()

    Object::to_any_object(&self) -> AnyObject

    changes to

    Object::into_any_object(&self) -> AnyObject

For example:

let fixnum = some_object.try_convert_into::<Fixnum>();

some_object should be consumed by convert_into, because fixnum and some_object correspond to the same object in Ruby.

MS Windows support

Does Ruru support MS Windows?

I'm trying with RubyInstaller 2.3.0 and Rust nightly but keep getting link errors with cargo build --release.

At first the file x64-msvcrt-ruby230.lib is not found, but I figured it to mean that it's looking for either libx64-msvcrt-ruby230-static.a or libx64-msvcrt-ruby230.dll.a, although still no luck when renaming either to x64-msvcrt-ruby230.lib.

Unused variable warnings when using methods! macro on method with no args

I made a repository based on the String.blank? example, and I get some warnings when I compile. From https://travis-ci.org/malept/rusty_blank/jobs/128239145#L241-L247:

<ruru macros>:9:5: 9:14 warning: unused variable: `arguments`, #[warn(unused_variables)] on by default
<ruru macros>:9 let arguments = VM:: parse_arguments ( argc , argv ) ; let mut i = 0 ; $ (
                    ^~~~~~~~~
src/lib.rs:7:1: 14:3 note: in this expansion of methods! (defined in <ruru macros>)
<ruru macros>:9:60: 9:65 warning: unused variable: `i`, #[warn(unused_variables)] on by default
<ruru macros>:9 let arguments = VM:: parse_arguments ( argc , argv ) ; let mut i = 0 ; $ (
                                                                           ^~~~~

(There are also some unused_mut warnings after that, but I'm not sure what can be done about them.)

Add method for Class.allocate

Currently to do allocate I have to do this:

let mut pathname_instance = Class::from(
    Class::from_existing("Pathname").send("allocate", None).value()
);

I would much prefer

let mut pathname_instance = Class::from_existing("Pathname").allocate();

I've searched Ruby's C code and couldn't find anywhere where allocate is defined. So I'm at a loss on how to add it directly.

Segfault on RString with null byte

Rust:

class!( NullByte );
methods!(
    NullByte,
    itself,

    fn get() -> RString {
        RString::new( "\u{0}" )
    }
);

Class::new( "NullByte", None ).define( |itself| {
    itself.def_self( "get", get );
});

Ruby:

NullByte.get

Error:

thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: NulError(0, [0])', ../src/libcore/result.rs:799
stack backtrace:
   1:     0x7f75d426e61f - std::sys::backtrace::tracing::imp::write::h22f199c1dbb72ba2
   2:     0x7f75d427db4d - std::panicking::default_hook::{{closure}}::h9a389c462b6a22dd
   3:     0x7f75d427b0b2 - std::panicking::default_hook::h852b4223c1c00c59
   4:     0x7f75d427b6a8 - std::panicking::rust_panic_with_hook::hcd9d05f53fa0dafc
   5:     0x7f75d427b542 - std::panicking::begin_panic::hf6c488cee66e7f17
   6:     0x7f75d427b480 - std::panicking::begin_panic_fmt::hb0a7126ee57cdd27
   7:     0x7f75d427b401 - rust_begin_unwind
   8:     0x7f75d4293aaf - core::panicking::panic_fmt::h9af671b78898cdba
   9:     0x7f75d4231383 - core::result::unwrap_failed::h03cc84bf66ee82b5
  10:     0x7f75d423235e - ruru::class::string::RString::new::h2793ffe2d21bdbab
  11:     0x7f75d4231239 - get
  12:     0x7f75df5533b2 - vm_call_cfunc
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1638
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1733
  13:     0x7f75df562d2d - vm_call_method_each_type
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2022
  14:     0x7f75df5632a2 - vm_call_method
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2172
  15:     0x7f75df55c7d7 - vm_exec_core
                        at /home/zapotek/.rvm/src/ruby-2.3.1/insns.def:995
  16:     0x7f75df561285 - vm_exec
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm.c:1650
  17:     0x7f75df4082e8 - rb_load_internal0
                        at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:619
  18:     0x7f75df409dff - rb_require_internal
                        at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:998
  19:     0x7f75df40a128 - rb_require_safe
                        at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:1043
  20:     0x7f75df5533b2 - vm_call_cfunc
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1638
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1733
  21:     0x7f75df562d2d - vm_call_method_each_type
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2022
  22:     0x7f75df5632a2 - vm_call_method
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2172
  23:     0x7f75df55c7d7 - vm_exec_core
                        at /home/zapotek/.rvm/src/ruby-2.3.1/insns.def:995
  24:     0x7f75df561285 - vm_exec
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm.c:1650
  25:     0x7f75df4082e8 - rb_load_internal0
                        at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:619
  26:     0x7f75df409dff - rb_require_internal
                        at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:998
  27:     0x7f75df40a128 - rb_require_safe
                        at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:1043
  28:     0x7f75df5533b2 - vm_call_cfunc
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1638
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1733
  29:     0x7f75df562d2d - vm_call_method_each_type
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2022
  30:     0x7f75df5632a2 - vm_call_method
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2172
  31:     0x7f75df55c7d7 - vm_exec_core
                        at /home/zapotek/.rvm/src/ruby-2.3.1/insns.def:995
  32:     0x7f75df561285 - vm_exec
                        at /home/zapotek/.rvm/src/ruby-2.3.1/vm.c:1650
  33:     0x7f75df40251c - ruby_exec_internal
                        at /home/zapotek/.rvm/src/ruby-2.3.1/eval.c:245
  34:     0x7f75df40473c - ruby_exec_node
                        at /home/zapotek/.rvm/src/ruby-2.3.1/eval.c:310
  35:     0x7f75df40717d - ruby_run_node
                        at /home/zapotek/.rvm/src/ruby-2.3.1/eval.c:302
  36:           0x40088a - main
                        at /home/zapotek/.rvm/src/ruby-2.3.1/main.c:36
  37:     0x7f75defd482f - __libc_start_main
  38:           0x4008b8 - _start
  39:                0x0 - <unknown>
fatal runtime error: failed to initiate panic, error 5
Aborted (core dumped)

Both Ruby and Rust support null-bytes in strings, it'd be nice to allow them to cross boundaries.

Create Integer struct

Existing API of MRI which is used for both Fixnum and Integer (rb_int2inum, rb_num2int) remains the same in 2.4. Thus no changes in ruby-sys are required.

Duplicate the contents of Fixnum struct to Integer.

Add AppVeyor CI (Windows) support

As of ruby-sys 0.2.3, ruru-based extensions can be built on Windows. It would be nice to add CI support for Windows builds.

A starting point can be found at my rusty_blank project: https://github.com/malept/rusty_blank/blob/master/.appveyor.yml

Some notes about my config file:

  • You probably want to test against stable, beta, and nightly (I only needed stable there).
  • I intentionally omitted MSVC builds from my AppVeyor config because the popular RubyInstaller for Windows is built with the MinGW toolchain.
  • Ignore the artifact/deploy sections - that is for my project to distribute Rust+Ruby extensions.

Segfault with Thread::call_without_gvl

Hello,

I'm getting a segfault when trying to run some code without the GVL.

This is the unsafe_method!:

    fn without_gvl( data: RString ) -> NilClass {
        let str       = data.to_string_unchecked();

        println!( "1 - {}", str );

        let comp    = || { process( str ) };
        let unblock = || {};
        let _       = Thread::call_without_gvl( comp, Some( unblock ) );

        NilClass::new()
    }

I've tried cloning the data prior to passing it to comp and using slices but I can't seem to get around the issue.

The process method is simply:

fn process( data: String ) {
    println!( "{}", data );
}

The Ruby code is:

MyObject.without_gvl( 's' )

Segfault:

1 - s
s
*** Error in `ruby': double free or corruption (fasttop): 0x0000000002c56100 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7efc344c57e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x7fe0a)[0x7efc344cde0a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7efc344d198c]
/home/zapotek/workspace/project/lib/../ext/engine/target/release/libproject.so(_ZN4ruru7binding6thread19thread_call_callbox17h27239a4182525d2fE+0x27)[0x7efc29398397]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(rb_thread_call_without_gvl+0x45)[0x7efc34a14095]
/home/zapotek/workspace/project/lib/../ext/engine/target/release/libproject.so(without_gvl+0x149)[0x7efc293928a9]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1d5840)[0x7efc349ec840]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e51ee)[0x7efc349fc1ee]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e5763)[0x7efc349fc763]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1dec18)[0x7efc349f5c18]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e3776)[0x7efc349fa776]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x8a299)[0x7efc348a1299]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x8a956)[0x7efc348a1956]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1d5840)[0x7efc349ec840]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e51ee)[0x7efc349fc1ee]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e5763)[0x7efc349fc763]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1dec18)[0x7efc349f5c18]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e3776)[0x7efc349fa776]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x844ed)[0x7efc3489b4ed]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(ruby_exec_node+0x1d)[0x7efc3489d6ed]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(ruby_run_node+0x1e)[0x7efc348a012e]
ruby[0x40087b]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7efc3446e830]
ruby(_start+0x29)[0x4008a9]
======= Memory map: ========
00400000-00401000 r-xp 00000000 00:30 12600517                           /home/zapotek/.rvm/rubies/ruby-2.3.1/bin/ruby
00600000-00601000 r--p 00000000 00:30 12600517                           /home/zapotek/.rvm/rubies/ruby-2.3.1/bin/ruby
00601000-00602000 rw-p 00001000 00:30 12600517                           /home/zapotek/.rvm/rubies/ruby-2.3.1/bin/ruby
0076d000-0380c000 rw-p 00000000 00:00 0                                  [heap]
7efc24000000-7efc24021000 rw-p 00000000 00:00 0 
7efc24021000-7efc28000000 ---p 00000000 00:00 0 
7efc29250000-7efc295d4000 r-xp 00000000 00:30 11161149                   /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc295d4000-7efc297d3000 ---p 00384000 00:30 11161149                   /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc297d3000-7efc2988a000 r--p 00383000 00:30 11161149                   /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc2988a000-7efc2988c000 rw-p 0043a000 00:30 11161149                   /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc2988c000-7efc2988d000 r-xp 00000000 00:30 12602444                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc2988d000-7efc29a8c000 ---p 00001000 00:30 12602444                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc29a8c000-7efc29a8d000 r--p 00000000 00:30 12602444                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc29a8d000-7efc29a8e000 rw-p 00001000 00:30 12602444                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc29a8e000-7efc29aa5000 r-xp 00000000 08:21 6696923                    /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29aa5000-7efc29ca4000 ---p 00017000 08:21 6696923                    /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29ca4000-7efc29ca5000 r--p 00016000 08:21 6696923                    /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29ca5000-7efc29ca6000 rw-p 00017000 08:21 6696923                    /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29ca6000-7efc29caa000 r-xp 00000000 00:30 12602461                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29caa000-7efc29ea9000 ---p 00004000 00:30 12602461                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29ea9000-7efc29eaa000 r--p 00003000 00:30 12602461                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29eaa000-7efc29eab000 rw-p 00004000 00:30 12602461                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29eab000-7efc2a0d7000 r-xp 00000000 00:30 12850999                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a0d7000-7efc2a2d6000 ---p 0022c000 00:30 12850999                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a2d6000-7efc2a2de000 r--p 0022b000 00:30 12850999                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a2de000-7efc2a2e3000 rw-p 00233000 00:30 12850999                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a2e3000-7efc2a2e5000 rw-p 00000000 00:00 0 
7efc2a2e5000-7efc2a312000 r-xp 00000000 00:30 12727165                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a312000-7efc2a511000 ---p 0002d000 00:30 12727165                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a511000-7efc2a512000 r--p 0002c000 00:30 12727165                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a512000-7efc2a514000 rw-p 0002d000 00:30 12727165                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a514000-7efc2a529000 r-xp 00000000 00:30 12726949                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a529000-7efc2a728000 ---p 00015000 00:30 12726949                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a728000-7efc2a729000 r--p 00014000 00:30 12726949                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a729000-7efc2a72a000 rw-p 00015000 00:30 12726949                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a72a000-7efc2a732000 r-xp 00000000 00:30 12613473                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a732000-7efc2a932000 ---p 00008000 00:30 12613473                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a932000-7efc2a933000 r--p 00008000 00:30 12613473                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a933000-7efc2a934000 rw-p 00009000 00:30 12613473                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a934000-7efc2aa03000 r-xp 00000000 08:21 5649783                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2aa03000-7efc2ac03000 ---p 000cf000 08:21 5649783                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2ac03000-7efc2ac06000 r--p 000cf000 08:21 5649783                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2ac06000-7efc2ac08000 rw-p 000d2000 08:21 5649783                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2ac08000-7efc2ac09000 rw-p 00000000 00:00 0 
7efc2ac09000-7efc2ac4f000 r-xp 00000000 08:21 5649758                    /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ac4f000-7efc2ae4f000 ---p 00046000 08:21 5649758                    /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ae4f000-7efc2ae51000 r--p 00046000 08:21 5649758                    /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ae51000-7efc2ae53000 rw-p 00048000 08:21 5649758                    /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ae53000-7efc2ae54000 rw-p 00000000 00:00 0 
7efc2ae54000-7efc2ae62000 r-xp 00000000 08:21 5649727                    /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2ae62000-7efc2b061000 ---p 0000e000 08:21 5649727                    /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2b061000-7efc2b062000 r--p 0000d000 08:21 5649727                    /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2b062000-7efc2b063000 rw-p 0000e000 08:21 5649727                    /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2b063000-7efc2b08a000 r-xp 00000000 08:21 5649738                    /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b08a000-7efc2b28a000 ---p 00027000 08:21 5649738                    /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b28a000-7efc2b28b000 r--p 00027000 08:21 5649738                    /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b28b000-7efc2b28c000 rw-p 00028000 08:21 5649738                    /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b28c000-7efc2b2a1000 r-xp 00000000 08:21 5649292                    /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b2a1000-7efc2b4a0000 ---p 00015000 08:21 5649292                    /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b4a0000-7efc2b4a1000 r--p 00014000 08:21 5649292                    /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b4a1000-7efc2b4a2000 rw-p 00015000 08:21 5649292                    /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b4a2000-7efc2b4d2000 r-xp 00000000 08:21 5649719                    /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b4d2000-7efc2b6d2000 ---p 00030000 08:21 5649719                    /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b6d2000-7efc2b6d3000 r--p 00030000 08:21 5649719                    /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b6d3000-7efc2b6d4000 rw-p 00031000 08:21 5649719                    /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b6d4000-7efc2b6d5000 rw-p 00000000 00:00 0 
7efc2b6d5000-7efc2b6d8000 r-xp 00000000 08:21 9187269                    /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b6d8000-7efc2b8d7000 ---p 00003000 08:21 9187269                    /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b8d7000-7efc2b8d8000 r--p 00002000 08:21 9187269                    /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b8d8000-7efc2b8d9000 rw-p 00003000 08:21 9187269                    /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b8d9000-7efc2b978000 r-xp 00000000 08:21 5649878                    /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2b978000-7efc2bb77000 ---p 0009f000 08:21 5649878                    /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2bb77000-7efc2bb78000 r--p 0009e000 08:21 5649878                    /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2bb78000-7efc2bb7b000 rw-p 0009f000 08:21 5649878                    /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2bb7b000-7efc2bbff000 r-xp 00000000 08:21 5649773                    /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2bbff000-7efc2bdfe000 ---p 00084000 08:21 5649773                    /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2bdfe000-7efc2be01000 r--p 00083000 08:21 5649773                    /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2be01000-7efc2be04000 rw-p 00086000 08:21 5649773                    /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2be04000-7efc2be05000 rw-p 00000000 00:00 0 
7efc2be05000-7efc2be0d000 r-xp 00000000 08:21 5649815                    /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2be0d000-7efc2c00c000 ---p 00008000 08:21 5649815                    /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2c00c000-7efc2c00d000 r--p 00007000 08:21 5649815                    /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2c00d000-7efc2c00e000 rw-p 00008000 08:21 5649815                    /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2c00e000-7efc2c01f000 r-xp 00000000 08:21 5649409                    /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c01f000-7efc2c21f000 ---p 00011000 08:21 5649409                    /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c21f000-7efc2c220000 r--p 00011000 08:21 5649409                    /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c220000-7efc2c221000 rw-p 00012000 08:21 5649409                    /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c221000-7efc2c252000 r-xp 00000000 08:21 5647613                    /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c252000-7efc2c452000 ---p 00031000 08:21 5647613                    /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c452000-7efc2c453000 r--p 00031000 08:21 5647613                    /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c453000-7efc2c454000 rw-p 00032000 08:21 5647613                    /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c454000-7efc2c4ad000 r-xp 00000000 08:21 5652093                    /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c4ad000-7efc2c6ac000 ---p 00059000 08:21 5652093                    /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c6ac000-7efc2c6b6000 r--p 00058000 08:21 5652093                    /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c6b6000-7efc2c6b8000 rw-p 00062000 08:21 5652093                    /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c6b8000-7efc2c6f5000 r-xp 00000000 08:21 5649822                    /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c6f5000-7efc2c8f5000 ---p 0003d000 08:21 5649822                    /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c8f5000-7efc2c8f6000 r--p 0003d000 08:21 5649822                    /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c8f6000-7efc2c8f8000 rw-p 0003e000 08:21 5649822                    /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c8f8000-7efc2c8f9000 rw-p 00000000 00:00 0 
7efc2c8f9000-7efc2c912000 r-xp 00000000 08:21 5662184                    /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2c912000-7efc2cb12000 ---p 00019000 08:21 5662184                    /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2cb12000-7efc2cb13000 r--p 00019000 08:21 5662184                    /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2cb13000-7efc2cb14000 rw-p 0001a000 08:21 5662184                    /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2cb14000-7efc2cb2b000 r-xp 00000000 08:21 9188952                    /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cb2b000-7efc2cd2b000 ---p 00017000 08:21 9188952                    /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cd2b000-7efc2cd2c000 r--p 00017000 08:21 9188952                    /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cd2c000-7efc2cd2d000 rw-p 00018000 08:21 9188952                    /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cd2d000-7efc2cd2f000 rw-p 00000000 00:00 0 
7efc2cd2f000-7efc2cd63000 r-xp 00000000 08:21 5649094                    /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cd63000-7efc2cf62000 ---p 00034000 08:21 5649094                    /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cf62000-7efc2cf64000 r--p 00033000 08:21 5649094                    /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cf64000-7efc2cf65000 rw-p 00035000 08:21 5649094                    /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cf65000-7efc2cf97000 r-xp 00000000 08:21 5647284                    /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2cf97000-7efc2d196000 ---p 00032000 08:21 5647284                    /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2d196000-7efc2d197000 r--p 00031000 08:21 5647284                    /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2d197000-7efc2d198000 rw-p 00032000 08:21 5647284                    /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2d198000-7efc2d2bb000 r-xp 00000000 08:21 5651930                    /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d2bb000-7efc2d4ba000 ---p 00123000 08:21 5651930                    /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d4ba000-7efc2d4c5000 r--p 00122000 08:21 5651930                    /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d4c5000-7efc2d4c7000 rw-p 0012d000 08:21 5651930                    /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d4c7000-7efc2d4c8000 rw-p 00000000 00:00 0 
7efc2d4c8000-7efc2d515000 r-xp 00000000 08:21 5647521                    /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d515000-7efc2d714000 ---p 0004d000 08:21 5647521                    /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d714000-7efc2d716000 r--p 0004c000 08:21 5647521                    /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d716000-7efc2d717000 rw-p 0004e000 08:21 5647521                    /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d717000-7efc2d719000 rw-p 00000000 00:00 0 
7efc2d719000-7efc2d726000 r-xp 00000000 08:21 5647525                    /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d726000-7efc2d926000 ---p 0000d000 08:21 5647525                    /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d926000-7efc2d927000 r--p 0000d000 08:21 5647525                    /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d927000-7efc2d928000 rw-p 0000e000 08:21 5647525                    /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d928000-7efc2d943000 r-xp 00000000 08:21 5650429                    /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2d943000-7efc2db42000 ---p 0001b000 08:21 5650429                    /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2db42000-7efc2db43000 r--p 0001a000 08:21 5650429                    /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2db43000-7efc2db44000 rw-p 0001b000 08:21 5650429                    /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2db44000-7efc2db68000 r-xp 00000000 08:21 8792502                    /usr/local/lib/libnghttp2.so.14.12.4
7efc2db68000-7efc2dd67000 ---p 00024000 08:21 8792502                    /usr/local/lib/libnghttp2.so.14.12.4
7efc2dd67000-7efc2dd68000 r--p 00023000 08:21 8792502                    /usr/local/lib/libnghttp2.so.14.12.4
7efc2dd68000-7efc2dd6b000 rw-p 00024000 08:21 8792502                    /usr/local/lib/libnghttp2.so.14.12.4
7efc2dd6b000-7efc2ddda000 r-xp 00000000 08:21 8796226                    /usr/local/lib/libcurl.so.4.4.0
7efc2ddda000-7efc2dfda000 ---p 0006f000 08:21 8796226                    /usr/local/lib/libcurl.so.4.4.0
7efc2dfda000-7efc2dfdc000 r--p 0006f000 08:21 8796226                    /usr/local/lib/libcurl.so.4.4.0
7efc2dfdc000-7efc2dfdd000 rw-p 00071000 08:21 8796226                    /usr/local/lib/libcurl.so.4.4.0
7efc2dfdd000-7efc2dfff000 r-xp 00000000 00:30 12613168                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2dfff000-7efc2e1ff000 ---p 00022000 00:30 12613168                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2e1ff000-7efc2e200000 r--p 00022000 00:30 12613168                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2e200000-7efc2e201000 rw-p 00023000 00:30 12613168                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2e201000-7efc2e202000 r-xp 00000000 00:30 12602530                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e202000-7efc2e401000 ---p 00001000 00:30 12602530                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e401000-7efc2e402000 r--p 00000000 00:30 12602530                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e402000-7efc2e403000 rw-p 00001000 00:30 12602530                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e403000-7efc2e40e000 r-xp 00000000 08:21 9188944                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e40e000-7efc2e60d000 ---p 0000b000 08:21 9188944                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e60d000-7efc2e60e000 r--p 0000a000 08:21 9188944                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e60e000-7efc2e60f000 rw-p 0000b000 08:21 9188944                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e60f000-7efc2e615000 rw-p 00000000 00:00 0 
7efc2e615000-7efc2e62b000 r-xp 00000000 08:21 9187078                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7efc2e62b000-7efc2e82a000 ---p 00016000 08:21 9187078                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7efc2e82a000-7efc2e82b000 rw-p 00015000 08:21 9187078                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7efc2e82b000-7efc2e99d000 r-xp 00000000 08:21 5647563                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2e99d000-7efc2eb9d000 ---p 00172000 08:21 5647563                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2eb9d000-7efc2eba7000 r--p 00172000 08:21 5647563                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2eba7000-7efc2eba9000 rw-p 0017c000 08:21 5647563                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2eba9000-7efc2ebad000 rw-p 00000000 00:00 0 
7efc2ebad000-7efc2ecb0000 r-xp 00000000 00:30 12851989                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2ecb0000-7efc2eeaf000 ---p 00103000 00:30 12851989                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2eeaf000-7efc2eeb0000 r--p 00102000 00:30 12851989                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2eeb0000-7efc2eeb1000 rw-p 00103000 00:30 12851989                   /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2eeb1000-7efc2eeb2000 r-xp 00000000 00:30 12602525                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2eeb2000-7efc2f0b2000 ---p 00001000 00:30 12602525                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2f0b2000-7efc2f0b3000 r--p 00001000 00:30 12602525                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2f0b3000-7efc2f0b4000 rw-p 00002000 00:30 12602525                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2f0b4000-7efc2f0b5000 r-xp 00000000 00:30 12602471                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f0b5000-7efc2f2b5000 ---p 00001000 00:30 12602471                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f2b5000-7efc2f2b6000 r--p 00001000 00:30 12602471                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f2b6000-7efc2f2b7000 rw-p 00002000 00:30 12602471                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f2b7000-7efc2f2b8000 r-xp 00000000 00:30 12602532                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f2b8000-7efc2f4b8000 ---p 00001000 00:30 12602532                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f4b8000-7efc2f4b9000 r--p 00001000 00:30 12602532                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f4b9000-7efc2f4ba000 rw-p 00002000 00:30 12602532                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f4ba000-7efc2f4c0000 r-xp 00000000 00:30 12602442                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f4c0000-7efc2f6bf000 ---p 00006000 00:30 12602442                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f6bf000-7efc2f6c0000 r--p 00005000 00:30 12602442                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f6c0000-7efc2f6c1000 rw-p 00006000 00:30 12602442                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f6c1000-7efc2f6de000 r-xp 00000000 08:21 5649961                    /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f6de000-7efc2f8de000 ---p 0001d000 08:21 5649961                    /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f8de000-7efc2f8df000 r--p 0001d000 08:21 5649961                    /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f8df000-7efc2f8e0000 rw-p 0001e000 08:21 5649961                    /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f8e0000-7efc2f8e6000 r-xp 00000000 00:30 12602553                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/psych.so
7efc2f8e6000-7efc2fae5000 ---p 00006000 00:30 12602553                   /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/psych.soAborted (core dumped)

Methods calling methods within methods! macro fail because parameter requirements

Now that I know this I can implement my code so it will work around this issue, but it's not convenient and I don't see any info on this. Consider this more of a documentation request.

Here's the scenario:

methods!(
  FasterPathname,
  _itself,

  fn r_dirname() -> RString { pub_dirname(r_to_path()) }
  fn pub_dirname(pth: RString) -> RString {
    Boolean::new(
      Path::new(
        pth.ok().unwrap_or(RString::new("")).to_str()
      ).is_dir()
    )
  }
);

And the method r_to_path simple gets the instance variable @path. When I try to run the above code I get errors that both the pub_dirname method call and r_to_path method call need three parameters. When I throw in some random values it tells me that the signature for those parameters need to be:

i32, *-ptr, FasterPathname

Even with methods that take extra parameters it still says three and asks for this same signature. So I'm assuming the methods! macro isn't allowing methods to be calling each other from within the methods! macro. I'll be moving all of my code out of it externally to implement both of my public/private alternative implementations that respectively work with or without the instance variable @path.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.