[#1207] warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...>

This message was posted to ruby-talk, but I didn't get responce from

22 messages 2003/07/01
[#1208] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/01

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1209] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/02

ts wrote:

[#1210] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/02

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1211] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1212] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/04

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1213] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1214] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/04

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1215] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1237] FTP.new with block — Gavin Sinclair <gsinclair@...>

Hi,

22 messages 2003/07/19
[#1238] Re: [Patch] FTP.new with block — ts <decoux@...> 2003/07/19

>>>>> "G" == Gavin Sinclair <gsinclair@soyabean.com.au> writes:

[#1240] Re: [Patch] FTP.new with block — Mathieu Bouchard <matju@...> 2003/07/19

[#1297] Fix for Bug 1058 — Markus Walser <walser@...>

Hi,

16 messages 2003/07/25

Re: warning in ruby extension eats memory

From: Eugene Scripnik <Eugene.Scripnik@...>
Date: 2003-07-04 12:01:28 UTC
List: ruby-core #1213
ts wrote:
>>>>>>"E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:
> 
> 
> E> I've rebuilt ruby with debug information and here is complete backtrace:
> E> Program received signal SIGINT, Interrupt.
> E> rb_call0 (klass=134690664, recv=134688144, id=6817, oid=2, argc=1,
> E>      argv=0xbe60d360, body=0x80731f0, nosuper=1) at eval.c:4869
> E> 4869                if (trace_func) {
> E> (gdb) bt
> E> #0  rb_call0 (klass=134690664, recv=134688144, id=6817, oid=2, argc=1,
> E>      argv=0xbe60d360, body=0x80731f0, nosuper=1) at eval.c:4869
> E> #1  0x28093949 in rb_call (klass=134690664, recv=134688144, mid=6817, 
> E> argc=1,
> E>      argv=0xbe60d360, scope=1) at eval.c:5100
> E> #2  0x28093bb7 in rb_funcall (recv=134688144, mid=6817, n=1) at ruby.h:625
> E> #3  0x280a927c in io_write (io=134688144, str=135352400) at io.c:419
> 
>  Really I don't see. When it crash can you do ?

(gdb) up 3
#3  0x280a927c in io_write (io=134688144, str=135352400) at io.c:419
419             return rb_funcall(io, id_write, 1, str);
(gdb) p *(struct RFile *)io
$1 = {basic = {flags = 0, klass = 134690664}, fptr = 0x804afa0}
(gdb) p rb_deferr
$2 = 134688144
(gdb) p *(struct RFile *)rb_deferr
$3 = {basic = {flags = 0, klass = 134690664}, fptr = 0x804afa0}
(gdb) p str
$4 = 135352400
(gdb) p *(struct RString *)str
$5 = {basic = {flags = 7, klass = 134719624}, len = 72,
   ptr = 0x80ac180 "test.rb:6: warning: this warning makes ruby mad when 
used wit
h test/unit", aux = {capa = 72, shared = 72}}

As far as I understand from source, ruby checks type of io and if it is 
not real io it calls method "write" on it.
Another strange thing is flags. It is 0 which is equal to T_NONE.
Maybe rb_deferr collected in this phase (from my previous post):

#108443 0x280a92ae in rb_io_write () from /usr/local/lib/libruby.so.18
#108444 0x280accb7 in rb_write_deferr2 () from /usr/local/lib/libruby.so.18
#108445 0x280acce9 in rb_write_deferr () from /usr/local/lib/libruby.so.18
#108446 0x2808775e in warn_print () from /usr/local/lib/libruby.so.18
#108447 0x280877b3 in rb_warn () from /usr/local/lib/libruby.so.18
#108448 0x2823580f in test_free () from ./mytest.so
#108449 0x280a5137 in rb_gc_call_finalizer_at_exit ()

    from /usr/local/lib/libruby.so.18
#108450 0x2808af03 in ruby_finalize () from /usr/local/lib/libruby.so.18
#108451 0x2808b010 in ruby_cleanup () from /usr/local/lib/libruby.so.18
#108452 0x2808b11f in ruby_stop () from /usr/local/lib/libruby.so.18

-- 
Eugene Scripnik
IT Group
Software Architect
Tel./Fax +380 (372) 58-43-10
email: Eugene.Scripnik@itgrp.net
http://www.itgrp.net/


In This Thread