[#31647] [Backport #3666] Backport of r26311 (Bug #2587) — Luis Lavena <redmine@...>

Backport #3666: Backport of r26311 (Bug #2587)

13 messages 2010/08/07

[#31666] [Bug #3677] unable to run certain gem binaries' in windows 7 — Roger Pack <redmine@...>

Bug #3677: unable to run certain gem binaries' in windows 7

10 messages 2010/08/10

[#31676] [Backport #3680] Splatting calls to_ary instead of to_a in some cases — Tomas Matousek <redmine@...>

Backport #3680: Splatting calls to_ary instead of to_a in some cases

10 messages 2010/08/11

[#31681] [Bug #3683] getgrnam on computer with NIS group (+)? — Rocky Bernstein <redmine@...>

Bug #3683: getgrnam on computer with NIS group (+)?

13 messages 2010/08/11

[#31843] Garbage Collection Question — Asher <asher@...>

This question is no doubt a function of my own lack of understanding, but I think that asking it will at least help some other folks see what's going on with the internals during garbage collection.

17 messages 2010/08/25
[#31861] Re: Garbage Collection Question — Roger Pack <rogerdpack2@...> 2010/08/26

> The question in short: when an object goes out of scope and has no

[#31862] Re: Garbage Collection Question — Asher <asher@...> 2010/08/26

Right - so how does a pointer ever get off the stack?

[#31873] Re: Garbage Collection Question — Kurt Stephens <ks@...> 2010/08/27

On 8/26/10 11:51 AM, Asher wrote:

[#31894] Re: Garbage Collection Question — Asher <asher@...> 2010/08/27

I very much appreciate the response, and this is helpful in describing the narrative, but it's still a few steps behind my question - but it may very well have clarified some points that help us get there.

[#31896] Re: Garbage Collection Question — Evan Phoenix <evan@...> 2010/08/27

You have introduced something called a "root node" without defining it. What do you mean by this?

[#31885] Avoiding $LOAD_PATH pollution — Eric Hodel <drbrain@...7.net>

Last year Nobu asked me to propose an API for adding an object to

21 messages 2010/08/27

[#31947] not use system for default encoding — Roger Pack <rogerdpack2@...>

It strikes me as a bit "scary" to use system locale settings to

19 messages 2010/08/30

[#31971] Change Ruby's License to BSDL + Ruby's dual license — "NARUSE, Yui" <naruse@...>

Ruby's License will change to BSDL + Ruby's dual license

16 messages 2010/08/31

[ruby-core:31835] [Bug #3739] IO sets streams attached to pseudo-terminal devices to buffered

From: Scott Thompson <redmine@...>
Date: 2010-08-23 20:19:13 UTC
List: ruby-core #31835
Bug #3739: IO sets streams attached to pseudo-terminal devices to buffered
http://redmine.ruby-lang.org/issues/show/3739

Author: Scott Thompson
Status: Open, Priority: Normal
Category: core
ruby -v: ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0] 

In embedding ruby into an application I opened a pseduo-terminal using the system call "openpty". 

I passed the file descriptor for one end of the pseudo terminal to IO::for_fd to create a Ruby IO object.

In the implementation of rb_io_fdopen, the source code allocates a stream (FILE *) for that descriptor and sets the stream to fully buffered using setvbuf.

For a terminal stream, however, I would prefer to have the stream be line buffered (setlinebuf or setvbuf with the constant _IOLBF).  Otherwise a large number of lines of text must pass through the buffer before they are passed to the other side of the pseudo terminal connection.

Setting my Ruby IO object to "sync" (i.e. my_io_object.sync = true) does not work.  It apparently removes a set of buffers maintained by the Ruby environment in addition to those maintained by the system. Calling "flush" on the IO object also fails to push the text through because, like sync, flush refers to buffers kept by the Ruby runtime and not the system buffers.  

The requirement that I call some kind of "flush" or "sync" routine would also be inconvenient for me because I do not necessarily control the code that I am running in the interpreted environment.

The IO object that for_fd is returning does respond properly to the "tty?" and "istty" methods.  Perhaps if you create an IO object and istty is true then rb_fdopen should use setvbuf to set the stream to be line buffered.

(NOTE I am NOT forking a subprocess or spawning another ruby process.  I am also NOT using the pseudo terminal to replace stdout, stderr, or stdin)

FWIW, I found this issue alluded to in the Ruby Forums a number of years back in regards to the popen3 call:

http://www.ruby-forum.com/topic/152548


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

In This Thread

Prev Next