[#38647] [Ruby 1.9 - Bug #5130][Open] Thread.pass sticks on OpenBSD — Yui NARUSE <naruse@...>

16 messages 2011/08/01

[#38653] [Ruby 1.9 - Bug #5135][Open] Ruby 1.9.3-preview1 tests fails in Fedora Rawhide — Vit Ondruch <v.ondruch@...>

31 messages 2011/08/01

[#38666] [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Yehuda Katz <wycats@...>

61 messages 2011/08/01
[#38667] Re: [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Aaron Patterson <aaron@...> 2011/08/01

On Tue, Aug 02, 2011 at 07:35:15AM +0900, Yehuda Katz wrote:

[#38669] Re: [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Urabe Shyouhei <shyouhei@...> 2011/08/01

(08/02/2011 07:46 AM), Aaron Patterson wrote:

[#38671] Re: [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Eric Wong <normalperson@...> 2011/08/01

Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:

[#38695] [Ruby 1.9 - Bug #5144][Open] Remove GPL file from repository — Vit Ondruch <v.ondruch@...>

17 messages 2011/08/02

[#38706] [Ruby 1.9 - Bug #5147][Open] mkmf should not require static library when ruby is built with --enable-shared — Vit Ondruch <v.ondruch@...>

9 messages 2011/08/02

[#38894] Why Ruby has versioned paths? — V咜 Ondruch <v.ondruch@...>

Hello, could somebody please elaborate about reasons why Ruby uses versioned

9 messages 2011/08/10

[#38972] [Ruby 1.9 - Bug #5193][Open] ruby_thread_data_type linker errors fixed with RUBY_EXTERN — Charlie Savage <cfis@...>

28 messages 2011/08/16

[#38980] :symbol.is_a?(String) — Magnus Holm <judofyr@...>

http://viewsourcecode.org/why/redhanded/inspect/SymbolIs_aString.html

8 messages 2011/08/16

[#39025] [Ruby 1.9 - Feature #5206][Open] ruby -K should warn — Eric Hodel <drbrain@...7.net>

14 messages 2011/08/19

[#39062] Releasing r33028 as Ruby 1.9.3 RC1 — Yugui <yugui@...>

Hi,

17 messages 2011/08/23

[#39093] [Ruby 1.9 - Bug #5227][Open] Float#round fails on corner cases — Marc-Andre Lafortune <ruby-core@...>

14 messages 2011/08/24
[#39115] [Ruby 1.9 - Bug #5227][Assigned] Float#round fails on corner cases — Yui NARUSE <naruse@...> 2011/08/26

[#39126] Re: [Ruby 1.9 - Bug #5227][Assigned] Float#round fails on corner cases — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2011/08/26

Hi

[#39120] [Ruby 1.9 - Bug #5233][Open] OpenSSL::SSL::SSLSocket has problems with encodings other than "ascii" — Niklas Baumstark <niklas.baumstark@...>

9 messages 2011/08/26

[#39142] [Ruby 1.9 - Bug #5239][Open] bootstraptest/runner.rb: assert_normal_exit logic broken on Debian/GNU kFreeBSD — Lucas Nussbaum <lucas@...>

11 messages 2011/08/27

[#39162] [Ruby 1.9 - Bug #5244][Open] Continuation causes Bus Error on Debian sparc — Lucas Nussbaum <lucas@...>

29 messages 2011/08/28

[ruby-core:38714] Re: Issue of Passenger and ruby-trunk

From: SASADA Koichi <ko1@...>
Date: 2011-08-02 12:43:51 UTC
List: ruby-core #38714
Hi,

As I described on [ruby-core:37759], please use
"rb_reserved_fd_p(int fd)".  If you have any inconvenience, please teach us.

Thanks,
Koichi


(2011/08/02 20:46), Hongli Lai wrote:
> Hi Koichi. Thanks for informing us about this problem. Does Ruby 1.9.3
> provide some kind of API for obtaining all file descriptors that we
> must not close?
> 
> - Hongli
> 
> 2011/7/2 SASADA Koichi <ko1@atdot.net>:
>> Hi,
>>
>> This is issue about Passenger.  I've also sent it to ruby-core mailing list.
>>
>> I can't find the contacts to developers of Passenger.  So I sent you
>> this e-mail.  Please inform them about it.
>>
>> Regards,
>> Koichi
>>
>> -------- Original Message --------
>> Subject: [ruby-core:37727] Issue of Passenger and ruby-trunk
>> Date: Sat, 2 Jul 2011 10:17:57 +0900
>> From: SASADA Koichi <ko1@atdot.net>
>> Reply-To: ruby-core@ruby-lang.org
>> To: ruby-core@ruby-lang.org
>>
>> Hi,
>>
>> We received a bug report ([ruby-dev:44011] [Ruby 1.9 - Bug #4958], in
>> Japanese) that says Passenger (*1) doesn't work with current trunk.  I
>> surveyed it and found out the reason.
>>
>> *1: http://www.modrails.com/
>>
>> In short, Passenger close most of file descriptors (fd) by
>> NativeSupport.close_all_file_descriptors().  However, current Ruby uses
>> 2 fds for to communicate between [signal handler] <-> [timer thread] <->
>> [ruby thread].  I can run Passenger on commented out
>> "NativeSupport.close_all_file_descriptors" line.
>>
>>
>> Details:
>>
>> (1) Ruby-side:
>>
>> To avoid timer thread frequent invocation, we modified them totally.
>> And we decided to use pipe to communicate between [signal handler] <->
>> [timer thread] <-> [ruby thread].  We named this pipe "communication
>> pipe".  Ruby opens pipe at first.  Ruby also open pipe after fork().
>>
>> (2) Passenger-side:
>>
>> I assume that Passenger fork ruby process if request reached.  At first,
>> forked process close all file descriptors to avoid file descriptor leak.
>>  The method NativeSupport.close_all_file_descriptors(left_fds) forcibly
>> closes all file descriptors except left_fds.
>>
>> quoted from passenger-3.0.5/lib/phusion_passenger/abstract_server.rb:
>>> # During Passenger's early days, we used to close file descriptors based
>>> # on a white list of file descriptors. That proved to be way too fragile:
>>> # too many file descriptors are being left open even though they shouldn't
>>> # be. So now we close file descriptors based on a black list.
>>> #
>>> # Note that STDIN, STDOUT and STDERR may be temporarily set to
>>> # different file descriptors than 0, 1 and 2, e.g. in unit tests.
>>> # We don't want to close these either.
>>> file_descriptors_to_leave_open = [0, 1, 2,
>>>       b.fileno, server_socket.fileno,
>>>       fileno_of(STDIN), fileno_of(STDOUT), fileno_of(STDERR)
>>> ].compact.uniq
>>> NativeSupport.close_all_file_descriptors(file_descriptors_to_leave_open)
>>
>> (3) Problem
>>
>> NativeSupport.close_all_file_descriptors(file_descriptors_to_leave_open)
>> closes communication pipe.  It causes critical problem to run ruby.
>>
>> For exmaple, in report [ruby-dev:44011] [Ruby 1.9 - Bug #4958], the
>> following [BUG] was reported.
>>
>>> /var/log/httpd/error_log:
>>> -------
>>> [ASYNC BUG] thread_timer: select
>>> EBADF
>>>
>>> ruby 1.9.3dev (2011-07-01 trunk 32348) [x86_64-linux]
>>>
>>> [NOTE]
>>> You may have encountered a bug in the Ruby interpreter or extension libraries.
>>> Bug reports are welcome.
>>> For details: http://www.ruby-lang.org/bugreport.html
>>> -----
>>
>> I confirmed that I commented out the line
>> NativeSupport.close_all_file_descriptors, then Passenger run normally.
>>
>>
>> (4) Solution
>>
>> How to solve it?  May I provide some C API or Ruby API to get pipe fds?
>>
>> --
>> // SASADA Koichi at atdot dot net
>>
>>
> 
> 
> 


-- 
// SASADA Koichi at atdot dot net

In This Thread

Prev Next