Project

General

Profile

Bug #10942

Suspected memory leak

Added by quezacoatl (Johan Lundahl) over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
[ruby-core:68436]

Description

There seems to be memory leaking when calling Aws::SQS::Client#receive_message in Ruby 2.2.0 and 2.2.1. I am not very good at memory/object allocation profiling in Ruby, but I know for sure that there must be some issue, because my SQS workers run out of memory every day.

See gist https://gist.github.com/quezacoatl/7657854f371edcb5d8e6 to reproduce. I've added output.txt for my output for different Ruby versions. Ruby 2.1.2 works fine. I'm sorry that I cannot pinpoint the exact issue. Perhaps somebody with better profiling skills can do this?


Files

#1

Updated by eugene (Eugene Pimenov) over 5 years ago

I reduced the test case to

require 'stringio'
require 'securerandom'

loop do
  for i in 1..100
    StringIO.new << SecureRandom.hex
  end
  GC.start
end

Can reproduce on trunk.

#3

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED

Thank you, it's very helpful.

#4

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r50334.


string.c: clear NOFREE flag at embedding

  • string.c (STR_SET_EMBED): clear NOFREE flag at embedding as embedded strings no longer refer static strings. [ruby-core:68436] [Bug #10942]
#5

Updated by nagachika (Tomoyuki Chikanaga) over 5 years ago

  • Backport changed from 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE

Backported into ruby_2_2 branch at r50550.
I've changed :limit option for assert_no_memory_leak from 1.5 to 2.0. Without the change added test sometimes fails on my environment.

Also available in: Atom PDF