On Tue, 17 Dec 2024 10:51:52 GMT, Magnus Ihse Bursie <i...@openjdk.org> wrote:

> To be able to properly support static builds on Windows in 
> [JDK-8346377](https://bugs.openjdk.org/browse/JDK-8346377), we cannot use 
> `DllMain`, for two reasons:
> 
> 1) This is not called for statically linked libraries, and
> 2) There are multiple `DllMain` definitions throughout the JDK native 
> libraries, causing name collisions.
> 
> While it could have been possible to keep the `DllMain` function for 
> non-static builds and just use an alternative solution for static builds, I 
> think it is preferable to have a single solution that works as well for both 
> static and dynamic builds.
> 
> On top of this, the existing solution was contrary to [Microsoft 
> recommendations](https://learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-wsacleanup),
>  which state: "The WSACleanup function typically leads to protocol-specific 
> helper DLLs being unloaded. As a result, the WSACleanup function should not 
> be called from the DllMain function in a application DLL. This can 
> potentially cause deadlocks. "

Well, apparently `atexit` hooks are also [called from the DLL entry 
point](https://learn.microsoft.com/en-us/cpp/build/run-time-library-behavior?view=msvc-170),
 so your change shouldn't change the behavior too much.

Most of the networking tests are under `TEST=jdk_net` (subset of tier2).

-------------

PR Comment: https://git.openjdk.org/jdk/pull/22788#issuecomment-2548555165

Reply via email to