[#11852] continuations in Ruby 1.9? — David Flanagan <david@...>
In a comment on my recent blog post
On 8/6/07, David Flanagan <david@davidflanagan.com> wrote:
[#11860] Is this really what we want? — James Edward Gray II <james@...>
I'm investigating some recent breakage in FasterCSV and have tracking
Hi,
[#11871] ruby-openssl: == incorrect for X509-Subjects — Hadmut Danisch <hadmut@...>
Hi,
[#11876] priorities of newly-created threads — David Flanagan <david@...>
Hi,
Hi,
[#11886] Core dump with simple web scraper when run via cron — Daniel Berger <Daniel.Berger@...>
Hi all,
[#11890] Ruby and Solaris door library — "Hiro Asari" <asari.ruby@...>
Hi, there. This is my first patch against ruby. I think I followed
Hiro Asari wrote:
On 8/13/07, Daniel Berger <djberg96@gmail.com> wrote:
> -----Original Message-----
On 8/15/07, Berger, Daniel <Daniel.Berger@qwest.com> wrote:
[#11893] UDP sockets raise exception on MIPS platform — Brian Candler <B.Candler@...>
I am running ruby-1.8.6 under OpenWrt (*), which is a small MIPS platform
[#11894] IO#seek and whence problem — Bertram Scharpf <lists@...>
[#11899] pack/unpack 64bit Integers — Hadmut Danisch <hadmut@...>
Hi,
On Wed, Aug 15, 2007 at 06:50:01AM +0900, Hadmut Danisch wrote:
On Wed, Aug 15, 2007 at 02:45:20PM +0900, Brian Candler wrote:
On Fri, Aug 17, 2007 at 05:17:09PM +0200, Hadmut Danisch wrote:
Dumb question of the day: are Kernel#proc and Kernel#lambda identical?
> Dumb question of the day: are Kernel#proc and Kernel#lambda identical?
[#11900] missing bison, gperf not detected, do I need ruby to build ruby? — "Gabor Szabo" <szabgab@...>
Hi,
On Wed, 15 Aug 2007, Gabor Szabo wrote:
> > It seems ./configure did not detect the fact that bison was missing from
[#11930] Bug in select? — "Robert Dober" <robert.dober@...>
Hi
[#11945] Smoke testing Ruby — "Gabor Szabo" <szabgab@...>
Hi,
On 8/21/07, Gabor Szabo <szabgab@gmail.com> wrote:
Ruby used to have the Triple-R project based on Rubicon: see
Hugh Sasse wrote:
[#11947] Splatting MatchData bug? — Jos Backus <jos@...>
$ /tmp/ruby-1.9/bin/ruby -v
[#11948] Fibers in Ruby 1.9? — David Flanagan <david@...>
I just noticed that my ruby1.9 build of August 17th includes a Fiber
David Flanagan wrote:
On 8/22/07, Daniel Berger <djberg96@gmail.com> wrote:
On Wed, 22 Aug 2007 20:50:12 +0900, "Francis Cianfrocca" <garbagecat10@gmail.com> wrote:
On 8/22/07, MenTaLguY <mental@rydia.net> wrote:
On Thu, 23 Aug 2007 00:57:01 +0900, "Francis Cianfrocca" <garbagecat10@gmail.com> wrote:
[#11960] coroutines with Fiber::Core — David Flanagan <david@...>
The following code works on Linux with today's snapshot of 1.9:
Hi,
[#11981] Inverse Square Root — "Dave Pederson" <dave.pederson@...>
Hello-
[#11988] String#length not working properly in Ruby 1.9 — "Vincent Isambart" <vincent.isambart@...>
I saw that Matz just merged his M17N implementation in the trunk.
Hi,
On Sat, 25 Aug 2007 10:54:20 +0200, Yukihiro Matsumoto
Hi,
On 8/25/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
On 8/25/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
[#12025] how to build ruby on vms — "toni" <toni@...>
Hi,
[#12040] Pragmas in Ruby 1.9 — David Flanagan <david@...>
Hi,
[#12042] Encodings of string literals; explicit codepoint escapes? — David Flanagan <david@...>
This message contains queries that probably only Matz can answer:
Hi,
Yukihiro Matsumoto wrote:
On 8/31/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Re: UDP sockets raise exception on MIPS platform
On Tue, Aug 14, 2007 at 06:07:01PM +0900, Brian Candler wrote:
> I am running ruby-1.8.6 under OpenWrt (*), which is a small MIPS platform
> (4MB flash, 16MB RAM) running linux-2.4.34 and uClibc.
>
> Everything seems to work fine apart from UDP sockets. As soon as you try to
> read using 'recvfrom', an exception is raised:
>
> root@OpenWrt:~# irb
> irb(main):001:0> require 'socket'
> => true
> irb(main):002:0> s = UDPSocket.new
> => #<UDPSocket:0x444000>
> irb(main):003:0> s.bind("0.0.0.0",1234)
> => 0
> irb(main):004:0> d = s.recvfrom(512)
> IOError: recv for buffered IO
> from (irb):4:in `recvfrom'
> from (irb):4
> irb(main):005:0>
>
> But strangely, TCP sockets work just fine.
>
> Now, the only place I can see this exception raised is here in
> etc/socket/socket.c:
>
> if (rb_read_pending(fptr->f)) {
> rb_raise(rb_eIOError, "recv for buffered IO");
> }
I have narrowed the problem down further to this line in io.c:
# define READ_DATA_PENDING(fp) (!feof(fp))
With a FILE* wrapping a UDP socket, feof() always returns zero. This can be
demonstrated with the following test program:
---- 8< ----
#include <errno.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
int main(void)
{
int s;
FILE *f1, *f2;
/* udp_init */
s = socket(AF_INET, SOCK_DGRAM, 0);
if (s < 0) { perror("socket"); exit(1); }
/* init_sock / rb_fdopen */
f1 = fdopen(s, "r");
if (!f1) { perror("fdopen r"); exit(1); }
f2 = fdopen(s, "w");
if (!f2) { perror("fdopen w"); exit(1); }
printf("feof(f1)=%d\n", (int)feof(f1));
printf("feof(f2)=%d\n", (int)feof(f2));
return 0;
}
---- 8< ----
When I run it either on the OpenWrt target or a normal i386 Linux system, I
get
feof(f1)=0
feof(f2)=0
Now, when building Ruby under OpenWrt, the READ_DATA_PENDING macro is
defined as !feof() as shown above - and as a result, whenever you try to
call recvfrom on a UDP socket, you get an exception raised here in
ext/socket/socket.c:
if (rb_read_pending(fptr->f)) {
rb_raise(rb_eIOError, "recv for buffered IO");
}
So my question is, what's the "right" way to fix this problem? Should I just
comment out these three lines when building under OpenWrt? Would there be
any undesired side-effects of this?
Thanks,
Brian.