ruby-numo / numo-narray

Ruby/Numo::NArray - New NArray class library
http://ruby-numo.github.io/narray/
BSD 3-Clause "New" or "Revised" License
413 stars 41 forks source link

Weird bug - Segfault on flipped matrices > 6x6 #172

Closed sasha-id closed 3 years ago

sasha-id commented 3 years ago

Works fine:

m = Numo::Bit.zeros(6,6)
m = m.flipud
m[true, 1] = 1

Segfault:

m = Numo::Bit.zeros(7,7)
m = m.flipud
m[true, 1] = 1
(irb):3: [BUG] Segmentation fault at 0x0000000000000000
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin17]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.
Don't forget to include the above Crash Report log file in bug reports.

-- Control frame information -----------------------------------------------
c:0049 p:---- s:0290 e:000289 CFUNC  :[]=
c:0048 p:0011 s:0283 e:000281 EVAL   (irb):3 [FINISH]
c:0047 p:---- s:0279 e:000278 CFUNC  :eval
c:0046 p:0020 s:0271 e:000270 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/workspace.rb:114
c:0045 p:0059 s:0263 e:000261 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/context.rb:439
c:0044 p:0033 s:0254 e:000253 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:540
c:0043 p:0024 s:0251 e:000250 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:695
c:0042 p:0007 s:0245 e:000244 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:537
c:0041 p:0114 s:0240 E:001dd8 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:150 [FINISH]
c:0040 p:---- s:0236 e:000235 CFUNC  :loop
c:0039 p:0005 s:0232 E:0005a0 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:135 [FINISH]
c:0038 p:---- s:0229 e:000228 CFUNC  :catch
c:0037 p:0010 s:0224 E:0003d0 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:134
c:0036 p:0046 s:0220 E:001438 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:536
c:0035 p:0004 s:0215 E:000480 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:471 [FINISH]
c:0034 p:---- s:0212 e:000211 CFUNC  :catch
c:0033 p:0057 s:0207 E:000f38 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:470
c:0032 p:0104 s:0202 E:001900 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:399
c:0031 p:0177 s:0196 E:001690 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands/console/console_command.rb:70
c:0030 p:0009 s:0192 E:002688 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands/console/console_command.rb:19
c:0029 p:0058 s:0187 E:0017d0 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands/console/console_command.rb:102
c:0028 p:0054 s:0183 E:000c10 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/thor-1.0.1/lib/thor/command.rb:27
c:0027 p:0040 s:0175 E:000358 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/thor-1.0.1/lib/thor/invocation.rb:127
c:0026 p:0235 s:0168 E:001478 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/thor-1.0.1/lib/thor.rb:392
c:0025 p:0045 s:0155 E:0016c8 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/command/base.rb:69
c:0024 p:0122 s:0148 E:001fc8 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/command.rb:46
c:0023 p:0063 s:0137 E:002000 TOP    /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands.rb:18 [FINISH]
c:0022 p:---- s:0132 e:000131 CFUNC  :require
c:0021 p:0012 s:0127 E:002050 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.
c:0020 p:0070 s:0124 E:0020e0 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/loaded_features_index.rb
c:0019 p:0025 s:0112 E:002030 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.
c:0018 p:0065 s:0106 E:002120 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.
c:0017 p:0052 s:0098 E:002150 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.0/lib/zeitwerk/kernel.rb:34
c:0016 p:0083 s:0092 E:002178 TOP    /Users/sash/apps/stocks/bin/rails:11 [FINISH]
c:0015 p:---- s:0088 e:000087 CFUNC  :load
c:0014 p:0035 s:0082 E:0010f0 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.
c:0013 p:0049 s:0072 E:000b10 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/commands/rails.rb:6
c:0012 p:0014 s:0068 E:0004e0 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/command_wrapper.rb:38
c:0011 p:0209 s:0064 E:0013c0 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:220 [FINISH]
c:0010 p:---- s:0061 e:000060 CFUNC  :fork
c:0009 p:0275 s:0057 E:001518 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:180
c:0008 p:0059 s:0042 E:001060 BLOCK  /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:145 [FINISH]
c:0007 p:---- s:0039 e:000038 CFUNC  :loop
c:0006 p:0016 s:0035 E:001520 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139
c:0005 p:0168 s:0031 E:000538 TOP    /Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19 [FINISH]
c:0004 p:---- s:0027 e:000026 CFUNC  :require
c:0003 p:0111 s:0022 E:000060 METHOD /Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72
c:0002 p:0005 s:0006 E:0014e0 EVAL   -e:1 [FINISH]
c:0001 p:0000 s:0003 E:001d50 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
-e:1:in `<main>'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `loop'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:145:in `block in run'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:180:in `serve'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:180:in `fork'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:220:in `block in serve'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/command_wrapper.rb:38:in `call'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/commands/rails.rb:6:in `call'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/Users/sash/apps/stocks/bin/rails:11:in `<main>'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.0/lib/zeitwerk/kernel.rb:34:in `require'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands.rb:18:in `<main>'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/command.rb:46:in `invoke'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/command/base.rb:69:in `perform'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands/console/console_command.rb:102:in `perform'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands/console/console_command.rb:19:in `start'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/commands/console/console_command.rb:70:in `start'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:399:in `start'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:470:in `run'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:470:in `catch'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:471:in `block in run'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:536:in `eval_input'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `each_top_level_statement'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `catch'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `block in each_top_level_statement'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `loop'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `block (2 levels) in each_top_level_statement'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:537:in `block in eval_input'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:695:in `signal_status'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb.rb:540:in `block (2 levels) in eval_input'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/context.rb:439:in `evaluate'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/workspace.rb:114:in `evaluate'
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/2.7.0/irb/workspace.rb:114:in `eval'
(irb):3:in `irb_binding'
(irb):3:in `[]='

-- Machine register context ------------------------------------------------
 rax: 0x0000000000000001 rbx: 0xfffffffffffffff6 rcx: 0x000000000000001d
 rdx: 0x0000000000000000 rdi: 0x07ffffffffffffff rsi: 0x00000000dfffffff
 rbp: 0x00007ffee55b41f0 rsp: 0x00007ffee55b41c8  r8: 0xfffffffffffffff9
  r9: 0x0000000000000000 r10: 0x0000000000000000 r11: 0x00007fd012050364
 r12: 0x00007ffee55b4470 r13: 0x00007fd00f5becd0 r14: 0x0000000000000004
 r15: 0x0000000000000000 rip: 0x00000001119e36e0 rfl: 0x0000000000010a07

-- C level backtrace information -------------------------------------------
/Users/sash/.rbenv/versions/2.7.1/lib/libruby.2.7.dylib(rb_vm_bugreport+0x96) [0x10a8b47d6]
/Users/sash/.rbenv/versions/2.7.1/lib/libruby.2.7.dylib(0x10a6e072c) [0x10a6e072c]
/Users/sash/.rbenv/versions/2.7.1/lib/libruby.2.7.dylib(0x10a81324b) [0x10a81324b]
/usr/lib/system/libsystem_platform.dylib(_sigtramp+0x1a) [0x7fff5909ff5a]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(iter_bit_store_bit+0x1c0) [0x1119e36e0]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(0x1119dc4f0) [0x1119dc4f0]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(0x1119db22a) [0x1119db22a]
/Users/sash/.rbenv/versions/2.7.1/lib/libruby.2.7.dylib(0x10a6ecbf4) [0x10a6ecbf4]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(0x1119d8be4) [0x1119d8be4]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(0x1119d8942) [0x1119d8942]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(0x1119e14b4) [0x1119e14b4]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(0x1119e15e0) [0x1119e15e0]
/Users/sash/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/numo-narray-0.9.1.8/lib/numo/narray.bundle(0x1119e1d66) [0x1119e1d66]
/Users/sash/.rbenv/versions/2.7.1/lib/libruby.2.7.dylib(0x10a8a5682) [0x10a8a5682]
/Users/sash/.rbenv/versions/2.7.1/lib/libruby.2.7.dylib(0x10a88b33e) [0x10a88b33e]
/Users/sash/.rbenv/versions/2.7.1/lib/libruby.2.7.dylib(0x10a8a04f7) [0x10a8a04f7]
kojix2 commented 3 years ago

I have reproduced this problem on my computer.