On Wed, 16 Jun 2021 22:10:56 GMT, Mark Sheppard <[email protected]> wrote:
>> JDK-8265369 [macos-aarch64] java/net/MulticastSocket/Promiscuous.java failed
>> with "SocketException: Cannot allocate memory"
>>
>> The test java/net/MulticastSocket/Promiscuous.java has been observed to fail
>> on a regular basis on macosx-aarch.
>> This is typically under heavy test load on a test machine. Analysis of the
>> problem have
>> shown that the setsockopt for joining a multicast group will intermittently
>> fail with ENOMEM.
>>
>> While analysis of test environment shows significant memory usage and some
>> memory pressure, it is
>> not excessive and as such it is deemed transition or temporary condition,
>> such that a retry of the
>> setsockopt system call, has been seen to mitigate the issue. This adds to
>> the stability of the
>> Promiscuous.java test and reduces test failure noise.
>>
>> The proposed fix is in
>> open/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c
>> in the mcast_join_leave function. That is, if setsockopt to join an mcast
>> group fails, and the errno == ENOMEM,
>> then re-invoke the setsockopt system call for joining a mcast group.
>> The change has been applied as a conditional compilation.
>> Additionally this change result in the Promiscuous.java test being removed
>> from the
>> ProblemList.txt.
>>
>> Please oblige and review the changes for a fix of the issue JDK-8265369
>
> Mark Sheppard has updated the pull request incrementally with one additional
> commit since the last revision:
>
> JDK-8265369 [macos-aarch64] java/net/MulticastSocket/Promiscuous.java
> failed with "SocketException: Cannot allocate memory"
> amendments as per suggestion from Chris Hegarty
src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c line 1843:
> 1841: int res;
> 1842: #endif
> 1843:
res will need to be declared unconditionally, no? ( since it is used on all
platforms )
src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c line 2122:
> 2120: if (join) {
> 2121: NET_ThrowCurrent(env, "setsockopt "
> S_ADD_MEMBERSHIP " failed");
> 2122: } else {
Accidental indentation here? ( four spaces added in front of NET_ThrowCurrent )
-------------
PR: https://git.openjdk.java.net/jdk17/pull/44