Puts sometimes gives:in `write': Interrupted system call (Errno::EINTR)

I sometimes get the error message:
./parallel.rb:465:in `write’: Interrupted system call (Errno::EINTR)
which is actually from a line

465 puts “deassign: job is #{job.inspect}” if @debug

where job is likely to be fairly large.

ruby 1.6.7 (2002-03-01) [sparc-solaris2.9]

It’s rather irritating as it kills my program dead. If I wrap puts

class IO
alias :old_puts :puts
def puts(*args)
m = Mutex.new
m.synchronise {
old_puts args
}
end
end

Is that likely to help? Anything else I can do without breaking up
my data first, and having to reassemble it?

    Hugh

Hi,

···

In message “puts sometimes gives:in `write’: Interrupted system call (Errno::EINTR)” on 03/03/06, Hugh Sasse Staff Elec Eng hgs@dmu.ac.uk writes:

I sometimes get the error message:
./parallel.rb:465:in `write’: Interrupted system call (Errno::EINTR)
which is actually from a line

465 puts “deassign: job is #{job.inspect}” if @debug

where job is likely to be fairly large.

I think I fixed this one in somewhere during 1.7 development. Try
1.8.0 snapshot, if possible.

						matz.

Hi,

I sometimes get the error message:
./parallel.rb:465:in `write’: Interrupted system call (Errno::EINTR)

I think I fixed this one in somewhere during 1.7 development. Try
1.8.0 snapshot, if possible.

Excellent! [Your doing your ‘8 hours ahead trick’ again :-)]

  					matz.
    Thank you
···

On Fri, 7 Mar 2003, Yukihiro Matsumoto wrote:

In message “puts sometimes gives:in `write’: Interrupted system call (Errno::EINTR)” > on 03/03/06, Hugh Sasse Staff Elec Eng hgs@dmu.ac.uk writes:

Sort of further to this, I run my automated build and test on the
latest snapshot, and the results, as well as the script that created
them, are below. HTH

Next job, try my code with this ruby

    Hugh

#!/bin/sh

CC=/opt/sfw/bin/gcc
export CC
HERE=/home/hgs/ruby
RUBYBUILD=$HERE/ruby-snapshot
RUBYHOME=/home/hgs/RUBY-SNAPSHOT
RUBY=$RUBYHOME/bin/ruby
export RUBY
STABLERUBY=/usr/local/bin/ruby
RUBYUNITHOME=$HERE/rubyunit-0.5.6
RUBICON=$HERE/Rubicon/rubicon
EDIT=$HERE/sedscript.rb

cat $HERE/build_ruby.sh > $HERE/test_results.tmp
echo ‘---------’ >> $HERE/test_results.tmp

/bin/rm -rf $RUBYHOME || ( echo “Unable to remove $RUBYHOME” && exit 3 )
mkdir $RUBYHOME || ( echo “Unable to create $RUBYHOME” && exit 3 )

cd $RUBYBUILD
./configure --prefix=$RUBYHOME
gmake clean
gmake
gmake test | tail -1 >> $HERE/test_results.tmp
echo ‘---------’ >> $HERE/test_results.tmp
gmake install

cd $RUBYUNITHOME
$RUBY install.rb

cd $RUBICON
echo ‘---------’ >> $HERE/test_results.tmp
cat $EDIT >> $HERE/test_results.tmp
echo ‘---------’ >> $HERE/test_results.tmp
$CC -v >> $HERE/test_results.tmp 2>&1
$RUBY -v >> $HERE/test_results.tmp
uname -a >> $HERE/test_results.tmp
echo ‘---------’ >> $HERE/test_results.tmp
gmake -f GNUmakefile >> $HERE/test_results.tmp
$STABLERUBY $EDIT $HERE/test_results.tmp > $HERE/test_results

exit

···

On Fri, 7 Mar 2003, Hugh Sasse Staff Elec Eng wrote:

On Fri, 7 Mar 2003, Yukihiro Matsumoto wrote:

I think I fixed this one in somewhere during 1.7 development. Try
1.8.0 snapshot, if possible.

Excellent! [Your doing your ‘8 hours ahead trick’ again :-)]


test succeeded


#!/usr/local/bin/ruby

Ruby replacement for the sed script I could not get to work.

filter = false
filtering_finished = false
ARGF.readlines.each { |line|
unless filtering_finished
if line =~ /^All Tests/
filter = true
elsif line =~ /^\s+All \d+ files/
filter = false
filtering_finished = true
end
end
if filter
if line =~ /FAIL|====|All/
print line
end
else
print line
end
}

Reading specs from /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.9/2.95.3/specs
gcc version 2.95.3 20010315 (release)
ruby 1.8.0 (2003-03-07) [sparc-solaris2.9]
SunOS neelix 5.9 Generic sun4u sparc SUNW,Ultra-250

/home/hgs/RUBY-SNAPSHOT/bin/ruby AllTests.rb

========================================================================
All Tests Test Results V0.3.5

            Array   FAIL     65      470          1
       Assignment   FAIL      4       42          2
      BlocksProcs   FAIL      3       26          1
              Dir   FAIL     21       78          2
             File   FAIL     33      301          2
               IO   FAIL     53     1236          2
        LoopStuff   FAIL     15       56          1
             Math   FAIL      2       59                   1
           Module   FAIL     25       92          1
             Time   FAIL     41     1687          5

========================================================================
All 72 files FAIL 922 42935 17 1

                         Failure Report

========================================================================

TestArray:

./builtin/ArrayBase.rb:71:in `test_MINUS'(TestArray)
....Expected: "<[1]> "
....But was:  "<[1, 1, 1, 1]>"

        ------------------------------------------------------------

TestAssignment:

./language/TestAssignment.rb:35:in `testBasicAssignment'(TestAssignment)
./language/TestAssignment.rb:28:in `greater_or_equal'
./language/TestAssignment.rb:28:in `testBasicAssignment'
....Expected: "<[]> "
....But was:  "<[nil]>"
./language/TestAssignment.rb:135:in `testMultipleAssignment'(TestAssignment)
./language/TestAssignment.rb:134:in `greater_or_equal'
./language/TestAssignment.rb:134:in `testMultipleAssignment'
....Expected: "<[]> "
....But was:  "<[nil]>"

        ------------------------------------------------------------

TestBlocksProcs:

./language/TestBlocksProcs.rb:64:in `testYield'(TestBlocksProcs)
./language/TestBlocksProcs.rb:64:in `f'
./language/TestBlocksProcs.rb:64:in `testYield'
....Expected: "<[]> "
....But was:  "<[nil]>"

        ------------------------------------------------------------

TestDir:

....Expected: "<[]> "
....But was:  "<[\"builtin/_test/_file1\", \"builtin/_test/_file2\"]>"
....Expected: "<[]> "
....But was:  "<[\"builtin/_test/_file1\", \"builtin/_test/_file2\"]>"

        ------------------------------------------------------------

TestFile:

./builtin/TestFile.rb:38:in `test_s_basename'(TestFile)
....Expected: "<> "
....But was:  "<tmp>"
./builtin/TestFile.rb:88:in `test_s_dirname'(TestFile)
....Expected: "</tmp> "
....But was:  "</>"

        ------------------------------------------------------------

TestIO:

./builtin/TestIO.rb:654:in `test_pos='(TestIO)
./builtin/TestIO.rb:653:in `each'
./builtin/TestIO.rb:653:in `test_pos='
./builtin/TestIO.rb:649:in `open'
./builtin/TestIO.rb:649:in `test_pos='
....Expected: "<0> "
....But was:  "<95>"
./builtin/TestIO.rb:254:in `test_s_select'(TestIO)
./builtin/TestIO.rb:252:in `open'
./builtin/TestIO.rb:252:in `test_s_select'
....Expected: "<[[\#<File:_test/_10lines>], [\#<IO:0xff950>, \#<IO:0xff938>], []]> "
....But was:  "<[[\#<File:_test/_10lines>], [\#<IO:0xff950>, \#<IO:0xff938>], [\#<File:_test/_10lines>, \#<IO:0xff950>]]>"

        ------------------------------------------------------------

TestLoopStuff:

./language/TestLoopStuff.rb:272:in `testClassFullOfIterators'(TestLoopStuff)
....Expected: "<1> "
....But was:  "<[1]>"

        ------------------------------------------------------------

TestModule:

./builtin/TestModule.rb:199:in `test_instance_methods'(TestModule)
....Expected: "<[\"aClass\"]> "
....But was:  "<[\"aClass2\", \"aClass\"]>"

        ------------------------------------------------------------

TestTime:

./builtin/TestTime.rb:203:in `test_gmtime'(TestTime)
....The condition is <false:FalseClass>
./builtin/TestTime.rb:266:in `test_localtime'(TestTime)
....The condition is <false:FalseClass>
./builtin/TestTime.rb:417:in `test_s_gm'(TestTime)
....The condition is <false:FalseClass>
./builtin/TestTime.rb:436:in `test_s_local'(TestTime)
....The condition is <false:FalseClass>
./builtin/TestTime.rb:458:in `test_s_mktime'(TestTime)
....The condition is <false:FalseClass>

========================================================================

                          Error Report

========================================================================

TestMath:

./builtin/TestMath.rb:118:in `log'(TestMath)
./builtin/TestMath.rb:118:in `test_fns'
....Result too large - "log"

========================================================================