[#354233] Ruby & IRC — Rajinder Yadav <devguy.ca@...>

Hi I am thinking about playing around with IRC Internert Relay Chat

16 messages 2010/01/01

[#354265] "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...>

Hello,

35 messages 2010/01/02
[#354266] Re: "Dummy" IO object to push and pull data? — Ryan Davis <ryand-ruby@...> 2010/01/02

[#354273] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Ryan Davis wrote:

[#354303] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Shay Hawkins wrote:

[#354308] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Oh, and there is also IO.pipe, which is unidirectional under most Unix

[#354309] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Brian Candler wrote:

[#354311] Re: "Dummy" IO object to push and pull data? — Caleb Clausen <vikkous@...> 2010/01/03

On 1/2/10, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354352] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/03

Caleb Clausen wrote:

[#354354] Re: "Dummy" IO object to push and pull data? — Tony Arcieri <tony@...> 2010/01/03

On Sun, Jan 3, 2010 at 3:07 PM, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354358] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Tony Arcieri wrote:

[#354383] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/04

Shay Hawkins wrote:

[#354402] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Brian Candler wrote:

[#354381] Is ruby's regex slower? — Ruby Newbee <rubynewbee@...>

Hi,

33 messages 2010/01/04
[#354384] Re: Is ruby's regex slower? — Josh Cheek <josh.cheek@...> 2010/01/04

On Mon, Jan 4, 2010 at 2:54 AM, Ruby Newbee <rubynewbee@gmail.com> wrote:

[#354387] Re: Is ruby's regex slower? — Wybo Dekker <wybo@...> 2010/01/04

[#354433] Re: Is ruby's regex slower? — Roger Pack <rogerpack2005@...> 2010/01/04

[#354448] Re: Is ruby's regex slower? — Kornelius Kalnbach <murphy@...> 2010/01/05

Roger Pack wrote:

[#354453] Re: Is ruby's regex slower? — Marnen Laibow-Koser <marnen@...> 2010/01/05

Kornelius Kalnbach wrote:

[#354461] Re: Is ruby's regex slower? — Robert Klemme <shortcutter@...> 2010/01/05

On 01/05/2010 12:37 PM, Marnen Laibow-Koser wrote:

[#354519] group in the array — Kolya17 Kolya17 <lastdrv@...>

Hi!

15 messages 2010/01/06

[#354619] Non-blocking communication between Ruby processes — Iñaki Baz Castillo <ibc@...>

Hi, I run Unicorn which is a Rack http server using N forked worker process=

30 messages 2010/01/07
[#354622] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 02:18 PM, I=F1aki Baz Castillo wrote:

[#354625] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi=F3:

[#354640] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 03:07 PM, I=F1aki Baz Castillo wrote:

[#354643] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi=F3:

[#354645] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, I=F1aki Baz Castillo escribi=F3:

[#354656] Stopping String Escaping. — Phil Cooper-king <phil@...>

Hi,

14 messages 2010/01/07
[#354664] Re: Stopping String Escaping. — Brian Candler <b.candler@...> 2010/01/07

Phil Cooper-king wrote:

[#354746] Ruby editing style rules and recommendation? — Nathan Oyama <nate@...>

I asked a question 'Decimal in for loop?' and two members were kind

12 messages 2010/01/09

[#354781] The Ruby GUI debacle — Ruby Student <ruby.student@...>

Team,

40 messages 2010/01/10
[#354794] Re: The Ruby GUI debacle — James Britt <james.britt@...> 2010/01/10

Ruby Student wrote:

[#354803] Re: The Ruby GUI debacle — Ruby Student <ruby.student@...> 2010/01/11

James, I don't remember if the problems was with Netbeans or something

[#354825] Re: The Ruby GUI debacle — Florian Gilcher <flo@...> 2010/01/11

>=20

[#354874] bellhop 1.0.0 released — Gregory Brown <gregory.t.brown@...>

Hi folks,

12 messages 2010/01/11

[#354901] How to close a TCP socket? (TCPSocket#close doesn't close it) — Iñaki Baz Castillo <ibc@...>

Hi, perhaps I miss something but when I close a TCP connection using=20

8 messages 2010/01/12

[#354910] Is 'rescue' expensive ? — "R. Kumar" <sentinel.2001@...>

If i use something like:

12 messages 2010/01/12

[#354915] 3D with Ruby (Ogre ?) — Marc-antoine Kruzik <kadelfek@...>

Hello, I'm french, sorry for my mistakes.

24 messages 2010/01/12
[#354920] Re: 3D with Ruby (Ogre ?) — Brian Candler <b.candler@...> 2010/01/12

Marc-antoine Kruzik wrote:

[#354945] NOOB Question on Instance Variable — BlueHandTalking <jet@...>

I have a class photo. It belongs_to a project.

13 messages 2010/01/12

[#354974] WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...>

In my ruby code I am making a call out to a COM object that is

21 messages 2010/01/12
[#354979] Re: WIN32OLE memory leaks — Luis Lavena <luislavena@...> 2010/01/12

On Jan 12, 6:19=A0pm, Chuck Remes <cremes.devl...@mac.com> wrote:

[#355014] Re: WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...> 2010/01/13

[#355002] Ruby Regex — Sriram Varahan <sriram.varahan@...>

Hello,

15 messages 2010/01/13

[#355036] Recommended Reading (also: Arrays/Hashes) — Zach Bartels <no@...>

Hi all,

20 messages 2010/01/13

[#355085] How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...>

Hi, is there a reliable way under Ruby to know the OS architecture (32 or 6=

27 messages 2010/01/14
[#355136] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/14/2010 4:12 PM, I単aki Baz Castillo wrote:

[#355138] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:36 AM, Walton Hoops wrote:

[#355142] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, Walton Hoops escribi=C3=B3:

[#355143] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, I=C3=B1aki Baz Castillo escribi=C3=B3:

[#355159] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:59 AM, I単aki Baz Castillo wrote:

[#355102] Float Points error — "THAKUR PRASHANT SINGH" <Prashant_Singh.Thakur@...>

Hi,

13 messages 2010/01/15

[#355228] GPGME gem - cannot figure out how to decrypt data — Daniel Frank <ruby-talk-2597@...>

Hello,

11 messages 2010/01/17

[#355266] Can't install gems (Windows) — Sal <salbass575@...>

I am unable to install any gems now on my Windows 7 machine running

25 messages 2010/01/17

[#355281] basic question: passing a modifiable argument to a routine — lalawawa <usenet@...>

Arguments to subroutines seem to be passed by value in ruby

10 messages 2010/01/18

[#355392] Creating GUI applications with Ruby 1.9.1 — Alpha Blue <jdezenzio@...>

I'm wanting to port over a GUI app I created into ruby so that it

24 messages 2010/01/19

[#355461] Looking for object.inherits?(Classname) — Xeno Campanoli <xeno.campanoli@...>

I'm looking for a way to make sure an object being passed is in some class

13 messages 2010/01/20

[#355487] Best practices when writing destructive code — Adam Akhtar <adamtemporary@...>

Im going to be making and removing lots of directories using ruby and Im

10 messages 2010/01/20

[#355530] ruby bounties--list of bounties — Roger Pack <rogerdpack2@...>

Fifth time's a charm (durn spam filters)

34 messages 2010/01/21
[#355574] Re: [ANN] ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/21

On Thu, Jan 21, 2010 at 12:07 AM, Roger Pack <rogerdpack2@gmail.com> wrote:

[#355739] Re: ruby bounties--list of bounties — Roger Pack <rogerpack2005@...> 2010/01/24

[#355742] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/24

On Sat, Jan 23, 2010 at 11:49 PM, Roger Pack <rogerpack2005@gmail.com> wrote:

[#355766] Re: ruby bounties--list of bounties — Aaron Patterson <aaron@...> 2010/01/25

On Sun, Jan 24, 2010 at 09:15:56PM +0900, Charles Oliver Nutter wrote:

[#355784] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:29 AM, Aaron Patterson

[#355795] Re: ruby bounties--list of bounties — Mike Dalessio <mike.dalessio@...> 2010/01/25

On Mon, Jan 25, 2010 at 7:37 AM, Charles Oliver Nutter

[#355802] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:25 PM, Mike Dalessio <mike.dalessio@gmail.com> wrote:

[#355547] Unexpected Hash#first return under Ruby1.9 — Iñaki Baz Castillo <ibc@...>

Hi, Ruby 1.9 implements "first" method for Hash (as Hash are ordered now).

12 messages 2010/01/21

[#355563] Rails ADODB.Connection Error — gregarican <greg.kujawa@...>

I know this isn't exclusively a Rails list, so I apologize in advance.

12 messages 2010/01/21

[#355600] Ruby c extensions on windows — Philliam Auriemma <phil.auriemma@...>

Hey guys,

15 messages 2010/01/22

[#355638] Argh?! :) kEND, $end and kELSE in a simple program — Jet Koten <jetkoten@...>

Hi,

15 messages 2010/01/22

[#355667] How to use WIN32OLE to Save As PDF — Joe Peck <joep@...>

Hi,

12 messages 2010/01/22

[#355797] Nested hash with arrays for default value — Glen Holcomb <damnbigman@...>

I'm trying to find a "nice" way to make a nested hash with an empty array a=

12 messages 2010/01/25
[#355803] Re: Nested hash with arrays for default value — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:48 PM, Glen Holcomb <damnbigman@gmail.com> wrote:

[#355891] Open Source Subversion Hosting — Intransition <transfire@...>

Looking for Rubyist's recommendations for free open-source Subversion

21 messages 2010/01/26
[#355892] Re: Open Source Subversion Hosting — Marnen Laibow-Koser <marnen@...> 2010/01/26

Thomas Sawyer wrote:

[#355939] can't update and install gem — Johny ben <joh13ny@...>

os:win xp

11 messages 2010/01/27

[#355962] Why does `source .bashrc` complain "command not found"? — Adam Akhtar <adamtemporary@...>

Is it just me or is this something that just cant be done?

10 messages 2010/01/27

[#356010] Use Non-Java Version of Gem — Bryan Richardson <btrichardson@...>

Hello all,

12 messages 2010/01/27

[#356042] gsub not working to replace a 'Chinese' Charater. — Ryan Smith <sunraise2005@...>

gsub not works for me when replace 'DBCS'(double byte character set)

12 messages 2010/01/28

[#356076] rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...>

rdoc_osx_dictionary version 1.0.1 has been released!

19 messages 2010/01/28
[#356082] Re: rdoc_osx_dictionary 1.0.1 Released — hi there <johnsonqu@...> 2010/01/29

If installed gems share the same class name, eg. mime-types mimetype-fu

[#356084] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356120] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356122] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356153] "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Joe Wangkauf <tmo1138@...>

16 messages 2010/01/30
[#356154] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Xavier Noria <fxn@...> 2010/01/30

On Sat, Jan 30, 2010 at 6:05 PM, Joe Wangkauf

[#356158] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Josh Cheek <josh.cheek@...> 2010/01/30

I wonder how many people _don't_ use rubygems. What creates more work,

[#356162] Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...>

Both bits of code process the same result which is finding .rb file

26 messages 2010/01/30
[#356177] Re: Refining the use of file joins or file expand_path — pharrington <xenogenesis@...> 2010/01/31

On Jan 30, 9:24=A0pm, Alpha Blue <jdezen...@gmail.com> wrote:

[#356179] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

pharrington wrote:

[#356182] Re: Refining the use of file joins or file expand_path — Ryan Davis <ryand-ruby@...> 2010/01/31

[#356183] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

Ryan Davis wrote:

[#356190] Inheritance related problem — "R. Kumar" <sentinel.2001@...>

Note: this is *not* a ruby bug. its a general query.

20 messages 2010/01/31

Re: Interfacing with Ruby garbage collector - when returning value from C extension to Ruby

From: Caleb Clausen <vikkous@...>
Date: 2010-01-05 21:22:17 UTC
List: ruby-talk #354494
On 1/4/10, Benjie Chen <benjie@lablife.org> wrote:
> On Mon, Jan 4, 2010 at 7:23 PM, Caleb Clausen <vikkous@gmail.com> wrote:
>> Or maybe the token.text is being freed between when the token is
>> created and when it's assigned to a ruby variable? There are no
>> ruby-land references to it or the token which refers to it during that
>> brief time, so if the garbage collector happens to be invoked there...
>> but presumably there is a reference to token somewhere on the c call
>> stack, so that shouldn't be an issue.
>
> Hmm, can you elaborate on where the reference in C is created to
> prevent GC? If you look at the code, it has
>
>    RToken *token = ALLOC(RToken);
>    token->text = rb_str_new2(tk->text);
>    return Data_Wrap_Struct(cToken, &frt_token_mark, &frt_token_free, token);

So, Data_Wrap_Struct returns a VALUE, that is, something that ruby's
GC is responsible for freeing when it dies. That VALUE contains a
c-level pointer to your token struct. So, when the wrapping VALUE
dies, that token struct also needs to be freed. Which is what
frt_token_free does. So far, so good.

But, when the GC is scanning thru memory looking for objects to mark
(as being not eligible to free, because they're already referenced
somewhere), if it sees that the wrapping VALUE is live, it calls
frt_token_mark. Which lets the GC know about the c-level reference to
another VALUE, the token.text. The GC would otherwise miss this
reference, since it does not scan or manage objects created via ALLOC.
The mark callback passed to Data_Wrap_Struct helps the GC know about
such references. And frt_token_mark is doing the right thing; manually
marking token.text for the gc.

Ah-hah, but, what happens if the GC happens to get invoked during the
call to Data_Wrap_Struct? There's no ruby-level reference to the token
struct; that's ok, the GC won't try to free it. There's no ruby-level
reference to the VALUE wrapping the token struct, that's what
Data_Wrap_Struct is trying to create. Still ok so far, but...

!!  There's no reference to the token.text  !!
!!  Which is a VALUE, managed by the GC  !!
!!  So, GC thinks its ok to free token.text  !!

Normally, there should be a reference to that token.text VALUE
somewhere on the c call stack, (which is part of the roots used by the
GC), but in this case its being assigned directly into a struct
member, which is not stored on the stack. And GC does not know to scan
the token struct, because it doesn't follow pointers to c objects, and
doesn't yet have a wrapper VALUE that tells it what to do.

Try rewriting those 3 lines as:

    RToken *token = ALLOC(RToken);
    volatile VALUE text = rb_str_new2(tk->text);
    token->text = text;
    return Data_Wrap_Struct(cToken, &frt_token_mark, &frt_token_free, token);

That should ensure that the reference to text remains on the c call
stack. The volatile may be overkill, but you can't be too careful....

I think this may be your problem. I've had similar issues with ferret,
which I never managed to track down. (I wonder how many other places
in ferret have the same problem...?)

> My question is, where is the reference to the Ruby token object
> created to keep GC from reaping it?

Hopefully, the explanation above will be informative to you. If not,
ask again and I'll try to clarify.

> 1. token is a ptr to an allocated memory from ALLOC. Does ALLOC create
> memory pts that keeps reference? I don't believe so, because RToken is
> just a struct, and there's no fancy C++ copy constructors to bump
> references on assignment.

There's no reference counting in ruby; it's a mark-sweep garbage collector.

> 2. Does Data_Wrap_Struct automatically creates a Ruby object with 1
> reference? Or a new, un-assigned Ruby object w/ reference 0 and
> waiting to be assigned to a Ruby variable or a temporary? In the
> latter case, then we'd have an issue, because if GC runs before any
> assignment, GC would get rid of the token and token->text memory.

The reference to the VALUE returned by Data_Wrap_Struct kept on the c
call stack should keep it from being garbage collected.

> Note that I am assuming in Ruby, if I do t = token, then a reference
> to token is created on the assignment and that keeps token->text alive
> as well.

Yes.


> Actually, I believe a better solution to the problem I described is
> before returning a VALUE from a C proc to Ruby land, keeps a reference
> of it somewhere in Ruby. So the code looks like
>
> VALUE v;
> ...
> v = Data_Wrap_Struct (...);
> rb_ivar_set (..., &v);
> return v;
>
> So that what you returned, v, is not removed by GC before it's
> assigned or referenced in Ruby land.
>
> Does this sound like the right approach?

This is still hacky; you shouldn't need to create any more references
in ruby-level variables. If the diagnosis I gave above is correct this
won't solve the problem for you anyway, since it's the token.text that
seems to be vulnerable to a premature free, not token itself.

In This Thread