[#25936] [Bug:1.9] [rubygems] $LOAD_PATH includes bin directory — Nobuyoshi Nakada <nobu@...>

Hi,

10 messages 2009/10/05

[#25943] Disabling tainting — Tony Arcieri <tony@...>

Would it make sense to have a flag passed to the interpreter on startup that

16 messages 2009/10/05

[#26028] [Bug #2189] Math.atanh(1) & Math.atanh(-1) should not raise an error — Marc-Andre Lafortune <redmine@...>

Bug #2189: Math.atanh(1) & Math.atanh(-1) should not raise an error

14 messages 2009/10/10

[#26222] [Bug #2250] IO::for_fd() objects' finalization dangerously closes underlying fds — Mike Pomraning <redmine@...>

Bug #2250: IO::for_fd() objects' finalization dangerously closes underlying fds

11 messages 2009/10/22

[#26244] [Bug #2258] Kernel#require inside rb_require() inside rb_protect() inside SysV context fails — Suraj Kurapati <redmine@...>

Bug #2258: Kernel#require inside rb_require() inside rb_protect() inside SysV context fails

24 messages 2009/10/22

[#26361] [Feature #2294] [PATCH] ruby_bind_stack() to embed Ruby in coroutine — Suraj Kurapati <redmine@...>

Feature #2294: [PATCH] ruby_bind_stack() to embed Ruby in coroutine

42 messages 2009/10/27

[#26371] [Bug #2295] segmentation faults — tomer doron <redmine@...>

Bug #2295: segmentation faults

16 messages 2009/10/27

[ruby-core:26336] [Bug #2283] Ruby 1.9.1p243 spinning with 100% CPU; perhaps rb_str_slice_bang-related

From: Mark Aiken <redmine@...>
Date: 2009-10-26 21:14:46 UTC
List: ruby-core #26336
Bug #2283: Ruby 1.9.1p243 spinning with 100% CPU; perhaps rb_str_slice_bang-related
http://redmine.ruby-lang.org/issues/show/2283

Author: Mark Aiken
Status: Open, Priority: Normal
ruby -v: 1.9.1p243

I have a loop like this in some server code; the intent is to prune back a not-necessarily-ASCII string, character by character, until it fits into a certain number of *bytes*, without severing any multibyte characters rudely in the middle:

cur_length = mystring.bytesize

while cur_length > MAX_SIZE
  mystring.slice!(-1)
  cur_length = mystring.bytesize
end

Our server periodically seizes up with the Ruby workers grabbing 100% of CPU and becoming unresponsive. I attached gdb and dumped some backtraces of what the process is doing when it gets into this state; two such traces are attached. rb_str_slice_bang shows up frequently (but not always) in the backtraces; I have included a trace where it does *not* appear.

From the fact that rb_str_slice_bang usually appears, and given the type of request being processed by our server when this occurs, I suspect this string-trimming loop is causing the runaway process somehow. From the backtraces it looks like the process is furiously allocating new strings, then garbage-collecting them. The runaway processes do *NOT* bloat up in terms of memory consumption, though.

Is there anything intrinsically wrong with trying to trim the string in this way? Is this a known Ruby 1.9.1 issue? How can I help track it down?


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next