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) almost 10 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) almost 10 years ago
Did you had use jemalloc compile ruby?
Updated by newmen (Gleb Averchuk) almost 10 years ago
wind winy wrote:
Did you had use jemalloc compile ruby?
I've installed Ruby using RVM
Updated by ko1 (Koichi Sasada) almost 10 years ago
Do you have easy reproducible code which we can try?
Updated by newmen (Gleb Averchuk) almost 10 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) almost 10 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 6 years ago
- Status changed from Open to Closed