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

Fix frame::sender_for_compiled_frame frame size assert

    XMLWordPrintable

Details

    • Enhancement
    • Resolution: Fixed
    • P4
    • 20
    • 11, 17, 19, 20
    • hotspot
    • None
    • b15

    Description

      The condition and assert messages are contradicting each other here:

      ```
      frame frame::sender_for_compiled_frame(RegisterMap* map) const {
        ...
        assert(_cb->frame_size() >= 0, "must have non-zero frame size");
        intptr_t* sender_sp = unextended_sp() + _cb->frame_size();
      ```

      I found this in x86_32 Loom port, where a entry generator bug caused zero-sized frames. I believe the assert message is correct, and the condition is not: sender SP should be different from (unextended) SP. In fact, if allowed to proceed, the tests can then fail the later assert, assuming `sp() == unextended_sp()`:

      ```
        assert(sender_sp != sp(), "must have changed");
      ```

      This code predates OpenJDK history, and assert was copy-pasted in this form to many arches.

      Attachments

        Issue Links

          Activity

            People

              shade Aleksey Shipilev
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: