clang Memory sanitizer (msan) and OpenJDK

Baesken, Matthias matthias.baesken at sap.com
Tue Apr 29 14:47:51 UTC 2025


I checked the link call for  javac .

/usr/bin/clang -fuse-ld=lld -fuse-ld=lld     -Wl,--exclude-libs,ALL -Wl,-z,noexecstack -m64 -fsanitize=memory   ....

Could it be that the  -Wl,--exclude-libs,ALL    “hides”  the  msan symbols like   __msan_param_tls    from exporting ?
But I guess we set this for a reason so removing it might cause other trouble ?

Best regards, Matthias


----------------------------------------------------
>>Maybe you can try patching out -fvisibility=hidden from the compile command line to see if that makes any difference.
>Sounds like a good idea to start with, I will try this!   Seems the visibility stuff plays a role here.

I removed  the  -fvisibility=hidden  from  make/autoconf/flags-cflags.m4   (3 places)  but the issue is still there.
When looking at our launchers in the msan – enabled build   (java, javac)  I see the  msan_param_tls   as  “b”      (local symbol)  .
But I think it is expected as “B”   (global/exported) .
In my simple working  standalone example, the  msan_param_tls   is “B” .
So there must be something in out build  that prevents the  “export”  of those msan  symbols (even when removing -fvisibility=hidden  ) .
Probably I should look in more details at our launcher builds and all the settings ...

Best regards, Matthias


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/build-dev/attachments/20250429/65a007c0/attachment-0001.htm>


More information about the build-dev mailing list