From: nagachika00@... Date: 2017-08-05T06:35:07+00:00 Subject: [ruby-core:82255] [Ruby trunk Bug#13772] Memory leak recycling stacks for threads in 2.4.1 Issue #13772 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 2.2: DONTNEED, 2.3: DONTNEED, 2.4: REQUIRED to 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ruby_2_4 r59516 merged revision(s) 59462,59474. ---------------------------------------- Bug #13772: Memory leak recycling stacks for threads in 2.4.1 https://bugs.ruby-lang.org/issues/13772#change-66035 * Author: sam.saffron (Sam Saffron) * Status: Closed * Priority: Normal * Assignee: ko1 (Koichi Sasada) * Target version: * ruby -v: 2.4.1 * Backport: 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ---------------------------------------- Per: https://github.com/rest-client/rest-client/issues/611 gem install rest-client ``` 100000.times.each_slice(32) do |slice| slice.map { Thread.new { RestClient.get('echo.jsontest.com/key/value/one/two') } }.each(&:join) GC.start(full_mark: true, immediate_sweep: true) slots = GC.stat[:heap_live_slots] puts "slots #{slots} #{i+=1} threads #{Thread.list.count}" end ``` Causes unbound memory growth on 2.4.1, this was not the case in earlier versions of Ruby or Ruby master. When running through heaptrack and massif-visualizer it looks like all unreclaimed allocations come from thread_recycle_stack Ruby heaps do not grow during tests, all the growth is around unmanaged memory. I feel getting this sorted is urgent, we have seen similar leaks at Discourse. -- https://bugs.ruby-lang.org/ Unsubscribe: