On Thu, 8 May 2025 13:58:54 GMT, Alan Bateman <al...@openjdk.org> wrote:

> > You might be correct. We'll see what @AlanBateman and others have to say 
> > about it.
> 
> I'm still puzzled as to why the DLLs have been moved from the JDK bin 
> directory to some other location, and renamed so they don't have the ".dll" 
> suffix. There most be some other product in the picture that we can't see. 
> The quoted text from the Windows LoadLibrary documentation, where it appends 
> the ".dll" suffix when not provided, is very useful as it helps us understand 
> why it fails.

Yes, the mystery product is my code. :) It makes a JDK image with a tree of 
symlinks to a data directory. The regular files in the data directory do not 
have file extensions.

> 
> As regards dropping the canonicalization then it would require thinking about 
> the lock map used for mapping the library names to locks. It would need 
> checking if it would break concurrent loading when using different names / 
> file paths to the same DLL.

I can see that removing the canonicalization could break the lock map. (Though 
I see the current deduplication and locking scheme doesn't handle hardlinks. 
Probably it would have to be keyed by `FileKey` to do that.)

> There may be a route that involves adding a method to ClassLoaderHelper to 
> post-process the path and the Windows version could add the "." when it 
> doesn't have the ".dll" suffix.

I tried out this approach, and it solves my problem. I've now pushed the 
implementation.

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

PR Comment: https://git.openjdk.org/jdk/pull/24694#issuecomment-2863795234

Reply via email to