Issue Type: Bug Bug
Affects Versions: JRuby 1.7.2
Assignee: Unassigned
Components: Core Classes/Modules
Created: 15/Jan/13 5:08 PM
Description:

recvfrom causes NullPointerException; recv hangs indefinitely only while using multicast sockets.

irb(main):003:0>   MULTICAST_ADDR = '239.255.255.250'
=> "239.255.255.250"
irb(main):004:0>   LOCATOR_PORT = 24067
=> 29067
irb(main):007:0> require 'socket'
=> true
irb(main):008:0> require 'ipaddr'
=> true
irb(main):009:0>     membership = IPAddr.new(MULTICAST_ADDR).hton + IPAddr.new("0.0.0.0").hton
=> "\xEF\xFF\xFF\xFA\x00\x00\x00\x00"
irb(main):010:0>     sock = UDPSocket.open
=> #<UDPSocket:fd 51>
irb(main):011:0>     sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1)
=> 0
irb(main):012:0> 
irb(main):013:0*     begin
irb(main):014:1*       sock.bind(Socket::INADDR_ANY, LOCATOR_PORT)
irb(main):015:1>     rescue Errno::EADDRINUSE
irb(main):016:1>       raise Error, "Unable to listen on port #{LOCATOR_PORT},"
irb(main):018:1>     end
=> 0
irb(main):019:0> 
irb(main):020:0*     sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, membership)
=> 0
irb(main):021:0> sock.recvfrom(100)
Java::JavaLang::NullPointerException: 
	from org.jruby.ext.socket.RubyUDPSocket.doReceiveMulticast(RubyUDPSocket.java:483)
	from org.jruby.ext.socket.RubyUDPSocket.doReceiveTuple(RubyUDPSocket.java:407)
	from org.jruby.ext.socket.RubyUDPSocket.recvfrom(RubyUDPSocket.java:350)
	from org.jruby.ext.socket.RubyIPSocket$INVOKER$i$recvfrom.call(RubyIPSocket$INVOKER$i$recvfrom.gen)
	from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
	from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
	from org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
	from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	from org.jruby.ast.RootNode.interpret(RootNode.java:129)
	from org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:96)
	from org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:175)
	from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1103)
	from org.jruby.RubyKernel.eval19(RubyKernel.java:1066)
	from org.jruby.RubyKernel$INVOKER$s$0$3$eval19.call(RubyKernel$INVOKER$s$0$3$eval19.gen)
	from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:178)
	from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:70)
... 115 levels...
	from org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	from org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
	from org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
	from org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:188)
	from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
	from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
	from home.developer.$_dot_rvm.rubies.jruby_minus_1_dot_7_dot_2.bin.irb.__file__(/home/developer/.rvm/rubies/jruby-1.7.2/bin/irb:13)
	from home.developer.$_dot_rvm.rubies.jruby_minus_1_dot_7_dot_2.bin.irb.load(/home/developer/.rvm/rubies/jruby-1.7.2/bin/irb)
	from org.jruby.Ruby.runScript(Ruby.java:810)
	from org.jruby.Ruby.runScript(Ruby.java:803)
	from org.jruby.Ruby.runNormally(Ruby.java:674)
	from org.jruby.Ruby.runFromMain(Ruby.java:523)
	from org.jruby.Main.doRunFromMain(Main.java:390)
	from org.jruby.Main.internalRun(Main.java:279)
	from org.jruby.Main.run(Main.java:221)
	from org.jruby.Main.main(Main.java:201)irb(main):022:0>
Environment: jruby 1.7.2 (1.9.3p327) 2013-01-04 302c706 on OpenJDK 64-Bit Server VM 1.7.0_09-b30 [linux-amd64]
Project: JRuby
Priority: Major Major
Reporter: Sujin Philip
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira
--------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

Reply via email to