1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Add debug prints to inspect TC_JSONGenerate#test_gc's timeout issue.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2012-04-15 07:37:45 +00:00
parent 57fb219905
commit 164ced04de
3 changed files with 17 additions and 15 deletions

View file

@ -68,6 +68,7 @@ static void fbuffer_inc_capa(FBuffer *fb, unsigned long requested)
if (!fb->ptr) {
fb->ptr = ALLOC_N(char, fb->initial_length);
fb->capa = fb->initial_length;
fb->len = 0;
}
for (required = fb->capa; requested > required - fb->len; required <<= 1);

View file

@ -762,6 +762,7 @@ static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_S
{
VALUE tmp = rb_funcall(obj, i_to_s, 0);
fbuffer_append_str(buffer, tmp);
RB_GC_GUARD(tmp);
}
static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)

View file

@ -214,25 +214,25 @@ EOT
assert_equal 128, s.buffer_initial_length
end
require'timeout'
def test_gc
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
bignum_too_long_to_embed_as_string = 1234567890123456789012345
expect = nil
stress = nil
timeout(1) do
expect = bignum_too_long_to_embed_as_string.to_s
end
timeout(30) do
GC.start
stress, GC.stress = GC.stress, true
end
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
expect = bignum_too_long_to_embed_as_string.to_s
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
GC.start
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
stress, GC.stress = GC.stress, true
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
timeout(30) do
10.times do |i|
tmp = bignum_too_long_to_embed_as_string.to_json
assert_equal expect, tmp
end
10.times do |i|
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
tmp = bignum_too_long_to_embed_as_string.to_json
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
assert_equal expect, tmp
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
end
$stdout.puts 'debug: %s:%d:' % [__FILE__, __LINE__]
ensure
GC.stress = stress
end if GC.respond_to?(:stress=)