RFR: 8346383: Cannot use DllMain in libdt_socket for static builds [v2]
Magnus Ihse Bursie
ihse at openjdk.org
Mon Jan 13 13:31:44 UTC 2025
> 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. "
Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision:
Update copyright years to 2025
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/22789/files
- new: https://git.openjdk.org/jdk/pull/22789/files/ea53ff03..7edefdd9
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=22789&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=22789&range=00-01
Stats: 4 lines in 4 files changed: 0 ins; 0 del; 4 mod
Patch: https://git.openjdk.org/jdk/pull/22789.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22789/head:pull/22789
PR: https://git.openjdk.org/jdk/pull/22789
More information about the serviceability-dev
mailing list