Inexplicable Parameter-Passing Phenomena w/MinGW GCJ

Mohan Embar gnustuff@thisiscool.com
Wed Sep 10 14:38:00 GMT 2003


Hi Andrew,

> > When the above skt.getTimeout() call (which happens AFTER the
> > skt.setSoTimeout() call and should therefore have no effect on it)
> > is commented out, no message boxes appear.
> > 
> > I know I need to troubleshoot this and document this much further, but what
> > I'm looking for is any sort of "aha" here. Keep in mind that this is a
> > statically linked libgcj.
>
>Well, I can't believe that the right method is being called.  You must
>have a version mismatch between .class and .java and .o.  What makes
>you thisnk skt.getTimeout() really is called?

Good gravy. You're right. The call in impl.setOption() in DatagramSocket:

---------------------------------------8<----------------------------------
  public synchronized void setSoTimeout(int timeout) throws SocketException
  {
    if (timeout < 0)
      throw new IllegalArgumentException("Invalid timeout: " + timeout);

    impl.setOption(SocketOptions.SO_TIMEOUT, new Integer(timeout));
  }
---------------------------------------8<----------------------------------

...ends up calling getOption() in natPlainDatagramSocketImplWin32.cc:
and impl.getOption() ends up calling setOption with a totally bogus
second parameter.

I'm pretty sure that everything is in sync. I even did a clean get and build
of everything from CVS last night. Do you have any advice as to how
the wrong CNI-native method could get invoked? Or any tips at all?
I'll continue to troubleshoot this more on my end.

-- Mohan
http://www.thisiscool.com/
http://www.animalsong.org/






More information about the Java mailing list