Issue #13612 has been updated by rovf (Ronald Fischer).

File segf_test_improved.rb added

I just made a minor change, which shows better where the error occurs (segf_test_improved.rb). The program needs to be operated in the same way as segf_test.rb which I described before. 

Two things are notable:

1. Like in the backtrace which I provided initially, the program crashes at the statement 
      filter_method_symb = FIND_CHAIN_FOR_POS_FILTER_PIPELINE.next
   (the "puts 'before'" before the line is shown, the "puts 'after'" is not shown.

2. When I run this improved test script, it aborts already (reproduceably) in the iteration 4937.

What puzzles me most, is how sensitive this bug is related to program layout. For example, if I insert just one empty line before the first 'class' definition, the bug disappears! This is insane!!!!


----------------------------------------
Bug #13612: Segmentation Fault
https://bugs.ruby-lang.org/issues/13612#change-65181

* Author: rovf (Ronald Fischer)
* Status: Feedback
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-cygwin]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
I got a segmentation fault, fllowed by the message "You may have encountered a bug in the Ruby interpreter or extension libraries.". See attachment.

The exception occured in this piece of code:

```ruby
  class EXPERT

    FIND_CHAIN_FOR_POS_FILTER_PIPELINE =
      [
        :no_filter,
        :filter_by_etkz_e,
        :filter_chain_in_chain,
      ].each

    def find_chain_for_pos(sw_lines_for_module, wsc_sw_lines)

      FIND_CHAIN_FOR_POS_FILTER_PIPELINE.rewind

      begin

        while NVP.multiple_grpids?(sw_lines_for_module)

          filter_method_symb = FIND_CHAIN_FOR_POS_FILTER_PIPELINE.next # <----- This is line 30, where the exception reportedly occured.

          sw_lines_for_module = NVP.send(filter_method_symb, br, sw_lines_for_module)

        end

      rescue StopIteration

        LOG.trace "Could not find unique GRPID"

      end

    end
  end
```

The segmentation fault occurs only after this method has been executed repeatedly several hundred times.


---Files--------------------------------
ruby_segf.txt (18.5 KB)
segf_test.rb (1.49 KB)
segf_test_improved.rb (1.54 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>