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