MulticastSocket problem on FreeBSD

Kurt Miller kurt at intricatesoftware.com
Thu Jan 31 19:33:30 PST 2013


Hi Oliver,

On 01/31/13 13:26, Oliver Lehmann wrote:
> Hi,
> 
> I encountered a bug while migrating from FreeBSDs old "Diablo jre"
> to openjdk-jre version 6.
> 
> I'm running a software using multicast communication and it fails
> on FreeBSD when using openjdk6.
> 
> example code:
> 
> import java.io.IOException;
> import java.net.InetAddress;
> import java.net.MulticastSocket;
> import java.net.SocketException;
> import java.net.UnknownHostException;
> 
> 
> class Main {
>    static String hostname = new String("10.0.1.1");
> 
>    public static void main(String args[]) throws
>        SocketException, UnknownHostException, IOException{
>      InetAddress ia = InetAddress.getByName(hostname);
>      MulticastSocket ssdpSocket = new MulticastSocket();
> 
>      ssdpSocket.setInterface(ia);
> 
>      System.out.println("network interface: " +
>           ssdpSocket.getNetworkInterface());
>      System.out.println("interface: " + ssdpSocket.getInterface());
>    }
> }
> 
> 
> The output of the old "Diablo JRE" is:
> 
>    network interface: name:null index: -1 addresses:
>    /10.0.1.1;
> 
>    interface: /10.0.1.1
> 
> 
> The output of openJDK6 is:
> 
>    network interface: name:null
>    interface: /0.0.0.0
> 
> It always returns this information.
> For comparison - openjdk on Linux:
> 
>    network interface: name:eth0 (eth0)
>    interface: /10.0.1.54
> 
> Oracle 7 VM on Windows:
> 
>    network interface: name:eth3 (Realtek PCIe GBE Family Controller)
>    interface: /10.0.1.51

I can confirm this is a problem for bsd-port (openjdk7)
on OpenBSD too.

> For me this seems to be an implementation bug of... I don't know?
> PlainDatagramSocketImpl.c maybe?
> 
> I tried to debug this further, but did not succeeded to find out if
> either setInterface() failed to set it correctly, or somewhere in
> getInterface() an early return() happens. I tried to remotly debug
> this using Eclipse, but only saw the private variables of ssdpSocket
> which didn't indicated something obvious. Breakpoints inside
> java.net.MulticastSocket would have helped ;)
> 
> 




More information about the bsd-port-dev mailing list