[#8136] Confused exception handling in Continuation Context — "Robert Dober" <robert.dober@...>

Hi all

13 messages 2006/07/06

[#8248] One-Click Installer: MinGW? or VC2005? — "Curt Hibbs" <ml.chibbs@...>

I just posted this to ruby-talk. But I would also like to discuss this

33 messages 2006/07/18
[#8264] Re: One-Click Installer: MinGW? or VC2005? — Charlie Savage <cfis@...> 2006/07/19

From my experience using both tool chains on Windows (for the ruby-prof

[#8266] Re: One-Click Installer: MinGW? or VC2005? — "Curt Hibbs" <ml.chibbs@...> 2006/07/19

Tim, I'm going to top reply since your post was so long. I'm interested in

[#8267] Re: One-Click Installer: MinGW? or VC2005? — Charlie Savage <cfis@...> 2006/07/19

> Tim, I'm going to top reply since your post was so long. I'm interested in

[#8271] my sandboxing extension!! — why the lucky stiff <ruby-core@...>

I have (what feels like) very exciting news. I finally sat down to code up my

17 messages 2006/07/19

[#8430] Re: doc patch: weakref. — "Berger, Daniel" <Daniel.Berger@...>

> -----Original Message-----

19 messages 2006/07/28
[#8434] Re: doc patch: weakref. — Yukihiro Matsumoto <matz@...> 2006/07/29

Hi,

[#8436] Re: doc patch: weakref. — Daniel Berger <djberg96@...> 2006/07/29

Yukihiro Matsumoto wrote:

[#8437] Re: doc patch: weakref. — Mauricio Fernandez <mfp@...> 2006/07/29

On Sat, Jul 29, 2006 at 07:37:24PM +0900, Daniel Berger wrote:

[#8441] Inconsistency in scoping during module_eval? — "Charles O Nutter" <headius@...>

I have the following code:

18 messages 2006/07/30
[#8442] Re: Inconsistency in scoping during module_eval? — nobu@... 2006/07/30

Hi,

[#8443] Re: Inconsistency in scoping during module_eval? — "Charles O Nutter" <headius@...> 2006/07/30

Why does this:

[#8445] Re: Inconsistency in scoping during module_eval? — Yukihiro Matsumoto <matz@...> 2006/07/30

Hi,

[#8454] Re: Inconsistency in scoping during module_eval? — "Charles O Nutter" <headius@...> 2006/07/31

So to clarify...

Re: PTY on Solaris multi-processor systems

From: Hugh Sasse <hgs@...>
Date: 2006-07-19 16:25:34 UTC
List: ruby-core #8291
On Thu, 20 Jul 2006, Reto Schuettel wrote:

> Hi
> 
> Yet another problem/bug I'd like to report.
> 
> On solaris (Solaris 8 tested) multi-processor systems the pty library
> doesn't work properly:


<quote>
require 'test/unit'
require 'pty'

class PTYTester < Test::Unit::TestCase

   def test_sysread
     # execute a command which produces some output and sleep for one second 
     # (to avoid triggering the PTY::ChildExited exception)
     so, si, pid = PTY.spawn("hostname; sleep 1") 
    
     # read some bytes...
     assert_raise(EOFError) do
       puts so.sysread(1)
     end
     # --> throws EOFError 
    
     # well.. lets try again, read again (in same process.. )
     assert_nothing_raised do 
       puts so.sysread(1)
     end
     # --> able to read the first byte
     # When the process gets bound to a single cpu the above code
     # works as expected. 

     # bind the current process to the first cpu 
     assert_nothing_raised do
       system("pbind -b 0 #{$$}")
       so, si, pid = PTY.spawn("hostname; sleep 1") 
       puts so.sysread(1)
     end
     # --> works

   end

   # This snipped starts and stops many processes. To keep on going I ignore
   # any PTY::ChildExited Exceptions[1]. As you can see I kill the process
   # immediately, but usually this would be a normal program termination.
   def test_many_procs_do_no_close
    STDOUT.sync = true
    
    fhs = []
    
   
    assert_raise(Errno::ESRCH) do
      100.times do |i|
        begin
          print "."
          so, si, pid = PTY.spawn("hostname; sleep 1")
        
          sleep 0.1
          Process.kill("TERM", pid)
        rescue PTY::ChildExited => e
          # ignore the exits
        end
      end
    end
   end

   def test_many_procs_and_close
    STDOUT.sync = true
    
    fhs = []
    
   
    assert_raise(Errno::ESRCH) do
      100.times do |i|
        so = nil
        si = nil
        begin
          print "."
          so, si, pid = PTY.spawn("hostname; sleep 1")
        
          sleep 0.1
          Process.kill("TERM", pid)
        rescue PTY::ChildExited => e
          # ignore the exits
        ensure
          si.close if si; si = nil
          so.close if so; so = nil
        end
      end
    end
   end
end

if __FILE__ == $0
  require 'test/unit/ui/console/testrunner'
  Test::Unit::UI::Console::TestRunner.run(PTYTester)
end
</quote>

gives me

brains hgs 323 %> /apps/hgs/RUBY-STABLE-SNAPSHOT-BRAINS/bin/ruby PTY_tests.rb
Loaded suite PTYTester
Started
......................................................................................F................................................................................................FE
Finished in 37.889819 seconds.

  1) Failure:
test_many_procs_and_close(PTYTester) [PTY_tests.rb:66]:
<Errno::ESRCH> exception expected but none was thrown.

  2) Failure:
test_many_procs_do_no_close(PTYTester) [PTY_tests.rb:45]:
<Errno::ESRCH> exception expected but none was thrown.

  3) Error:
test_sysread(PTYTester):
PTY::ChildExited: pty - exited: 20066
    PTY_tests.rb:49:in `test_sysread'

3 tests, 2 assertions, 2 failures, 1 errors
brains hgs 324 %>


on Solaris9.

        Hugh

In This Thread