RFR: 8346378: Cannot use DllMain in libnet for static builds

Magnus Ihse Bursie ihse at openjdk.org
Tue Dec 17 13:19:47 UTC 2024


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. "

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

Commit messages:
 - 8346378: Cannot use DllMain in libnet for static builds

Changes: https://git.openjdk.org/jdk/pull/22788/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22788&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8346378
  Stats: 38 lines in 4 files changed: 16 ins; 9 del; 13 mod
  Patch: https://git.openjdk.org/jdk/pull/22788.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22788/head:pull/22788

PR: https://git.openjdk.org/jdk/pull/22788


More information about the net-dev mailing list