Issue #6127 has been updated by naruse (Yui NARUSE).


dlampa (Donovan Lampa) wrote:
> Apologies for the hiatus also apologies if I've misunderstood the meaning of the Feedback status.

In general, "Feedback" means that an action of other than assignee is required.
In this ticket, I need a patch for backport which covers r33711, r33713-r33721, r33724, r33727,
r33728, r33752, and r33753.
----------------------------------------
Backport #6127: IO#ioctl range error in 1.9.3
https://bugs.ruby-lang.org/issues/6127#change-26970

Author: dlampa (Donovan Lampa)
Status: Feedback
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category: 
Target version: 


In 32-bit implementations of 1.9.3 passing an (apparently) unsigned value (BIOCIMMEDIATE = 0x80044270) to ioctl throws range error:

ruby-1.9.3-p125 :001 > a,b = IO.pipe
 => [#<IO:fd 5>, #<IO:fd 6>]
ruby-1.9.3-p125 :002 > a.ioctl(0x80044270, "\x01")
RangeError: bignum too big to convert into `long'
  from (irb):2:in `ioctl'
  from (irb):2
  from /Users/dlampa/.rvm/rubies/ruby-1.9.3-p125/bin/irb:16:in `<main>'
ruby-1.9.3-p125 :001 > 0x80044270.class
 => Bignum

When in 32-bit 1.9.1 and 1.9.2 it does not:

ruby-1.9.1-p243 :001 > a,b = IO.pipe
 => [#<IO:0x202fefc>, #<IO:0x202fec4>]
ruby-1.9.1-p243 :002 > a.ioctl(0x80044270, "\x01")
Errno::ENOTTY: Inappropriate ioctl for device
  from (irb):2:in `ioctl'
  from (irb):2
  from /Users/dlampa/.rvm/rubies/ruby-1.9.1-p243/bin/irb:16:in `<main>'
ruby-1.9.1-p243 :001 > 0x80044270.class
 => Bignum

OS is [x86_64-darwin10.8.0] however ruby was compiled as 32-bit through rvm using:
rvm_archflags="-arch i386" CFLAGS="-arch i386" LDFLAGS="-arch i386" rvm install [ruby-version] --patch osx-arch-fix

The patch is installed in ~/.rvm/patches/ruby/1.9.3/ and is as follows:

--- a/Makefile.in       2010-11-11 15:54:26.000000000 -0600
+++ b/Makefile.in       2010-11-11 15:55:24.000000000 -0600
@@ -55,7 +55,7 @@ XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
 EXTLIBS = 
 LIBS = @LIBS@ $(EXTLIBS)
 MISSING = @LIBOBJS@ @ALLOCA@
-LDSHARED = @LIBRUBY_LDSHARED@
+LDSHARED = @LIBRUBY_LDSHARED@ $(LDFLAGS)
 DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS) @ARCH_FLAG@
 SOLIBS = @SOLIBS@
 MAINLIBS = @MAINLIBS@

this issue appears to be related (http://bugs.ruby-lang.org/issues/5429), but I don't speak Japanese.


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