Bug #12278
closedSometimes I have segmentation fault with procs reducer
Description
Hello,
Sometimes I have segmentation fault for code like:
# /Users/newmen/projects/versatile-diamond/analyzer/lib/modules/procs_reducer.rb:35
8 # Combines passed procs to one function
9 # @param [Array] procs which will be combined
10 # @yield returns heart of combination result
11 # @return [Proc] the general function which contains calls of all other nested
12 def reduce_procs(procs, &deepest_block)
13 procs.reverse.reduce(deepest_block) do |acc, block|
14 -> { block[&acc] }
15 end
16 end
17
18 # Calls combined procs as one function
19 # @param [Array] procs which will be combined
20 # @yield returns heart of combination result
21 # @return [Object]
22 def call_procs(procs, &block)
23 reduce_procs(procs, &block).call
24 end
25
26 # Collects procs which nests each other, after than calls combined procedure
27 # @param [Proc] deepest_block the block for the deepest call
28 # @yield [Symbol, Array, Hash] nests the some method call
29 # @return [Object] the result of deepest block call
30 def inlay_procs(deepest_block, &block)
31 procs = []
32 nest = -> method_name, *args, **kwargs do
33 procs <<
34 if kwargs.empty?
35 -> &prc { send(method_name, *args, &prc) }
36 else
37 -> &prc { send(method_name, *args, **kwargs, &prc) }
38 end
39 end
40
41 block[nest]
42 call_procs(procs, &deepest_block)
43 end
Console report and crash log files are attached.
Both attached source files were written about 2 years ago.
Files
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
Seems a GC bug of a Proc
created by Symbol#to_proc
.
I suspect that it is a fixed bug, but can't find the ticket now.
Updated by windwiny (wind winy) over 8 years ago
Did you had use jemalloc compile ruby?
Updated by newmen (Gleb Averchuk) over 8 years ago
wind winy wrote:
Did you had use jemalloc compile ruby?
I've installed Ruby using RVM
Updated by ko1 (Koichi Sasada) over 8 years ago
Do you have easy reproducible code which we can try?
Updated by newmen (Gleb Averchuk) over 8 years ago
- Subject changed from Sometimes I have segmentation fault with props reducer to Sometimes I have segmentation fault with procs reducer
Updated by newmen (Gleb Averchuk) over 8 years ago
Koichi Sasada wrote:
Do you have easy reproducible code which we can try?
The error has occurred suddenly everytime. Almost always, I got it during RSpec tests run.
Before, I was not able to write a simple example for provoke an error. Also, I have noted that on 2.2.4 the error does not occur, and since then I use it. But now, following your request, I will continue to use 2.3.0 intentionally to catch the error and extract the simple reproducing code. I'll let you know if I will find it.
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Status changed from Open to Closed