RFR: 7131399: Poll system call appears to be broken on Mac OS [macosx] (original) (raw)
Michael McMahon michael.x.mcmahon at oracle.com
Tue Jan 24 02:41:43 PST 2012
- Previous message: [jdk7u-osx] Request for approval for CR 7126979: (props) JCK test java_lang/System/GetProperties.java failing [macosx]
- Next message: RFR: 7131399: Poll system call appears to be broken on Mac OS [macosx]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 24/01/12 10:23, Chris Hegarty wrote:
I'm OK with this as it, but here are a few comments:
The logic around the initial setting of the timeout seems a little unnecessary (and the additional pointer), but not wrong. Chris,
The setting of the timeval could be combined ok, but I wanted to avoid calling gettimeofday() in the case where timeout == 0
The comments should also be updated. Yes, I'll do that. It still refers to poll() instead of select() now. I'll add a comment about the bug too. Given this problem should the build be setting USESELECT? I thought about that, and decided against it for two reasons.
it's only used by PlainSocketImpl in the networking code, and that usage doesn't seem to be affected by this problem. poll() is potentially a little more efficient than select() also
USE_SELECT is referenced in other places in other native code (in AWT) and I don't want to affect those usages. Granted that raises a question as to whether they are affected by this bug. But, I don't believe they are since, as far as I can see UDP sockets aren't used there.
- Michael
-Chris.
On 01/23/12 10:32 PM, Michael McMahon wrote: On 23/01/12 21:30, Alan Bateman wrote:
On 23/01/2012 17:09, Michael McMahon wrote:
Can I get the following change reviewed please?
http://cr.openjdk.java.net/~michaelm/7131399/webrev.1/ The problem is that poll(2) doesn't seem to work in a specific edge case tested by JCK, namely, when a zero length UDP message is sent on a DatagramSocket. The problem is only detected on timed reads, ie. normal blocking reads work fine. The fix is to make the NETTimeout() function use select() instead of poll(). Thanks, Michael. The first argument to select is s+1, shouldn't is be 1? -alan No, I don't think so. fdsets are bit masks and you have to specify the highest numbered bit in the mask (+1). - Michael.
- Previous message: [jdk7u-osx] Request for approval for CR 7126979: (props) JCK test java_lang/System/GetProperties.java failing [macosx]
- Next message: RFR: 7131399: Poll system call appears to be broken on Mac OS [macosx]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]