Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8335237

ubsan: vtableStubs.hpp is_vtable_stub exclude from ubsan checks

    XMLWordPrintable

Details

    • b05
    • generic
    • generic

    Backports

      Description

        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.

        Attachments

          Issue Links

            Activity

              People

                mbaesken Matthias Baesken
                mbaesken Matthias Baesken
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: