RFR: 8335237: ubsan: vtableStubs.hpp is_vtable_stub exclude from ubsan checks

Matthias Baesken mbaesken at openjdk.org
Thu Jun 27 09:34:25 UTC 2024


[JDK-8331725](https://bugs.openjdk.org/browse/JDK-8331725) shows an ubsan (undefined behavior) issue in vtableStubs.hpp is_vtable_stub() .

/open_jdk/jdk_test/jdk/src/hotspot/share/code/vtableStubs.hpp:176:60: runtime error: load of value 204, which is not a valid value for type 'bool'
    #0 0x110a6ad7e in VtableStubs::entry_point(unsigned char*) vtableStubs.cpp:280
    #1 0x10f4cc8e6 in CompiledIC::is_megamorphic() const compiledIC.cpp:293
    #2 0x10f4cc95d in CompiledIC::update(CallInfo*, Klass*) compiledIC.cpp:268
    #3 0x110592eed in SharedRuntime::resolve_helper(bool, bool, JavaThread*) sharedRuntime.cpp:1366
    #4 0x11058c0b3 in SharedRuntime::resolve_virtual_call_C(JavaThread*) sharedRuntime.cpp:1514
    #5 0x12cd2e55a (<unknown module>)
    #6 0x12580e03b (<unknown module>)
    #7 0x12cc1f321 (<unknown module>)
    #8 0x12cc1f321 (<unknown module>)

>From the comments of the issue it seems while the coding could be improved, the problem is not very severe ('The reason bad bool values are seen is because there is no VtableStub object at that location. The reason this works is that we use the data at this location to generate a hash code, do a hash table lookup and then check the actual address for equality. Generating a bogus hash is harmless, ... ')
so as long as nothing better was found, we can exclude the method from ubsan checking.

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

Commit messages:
 - JDK-8335237

Changes: https://git.openjdk.org/jdk/pull/19925/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19925&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8335237
  Stats: 3 lines in 1 file changed: 2 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/19925.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19925/head:pull/19925

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


More information about the hotspot-compiler-dev mailing list