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

Loom: Failures with -XX:+VerifyStack

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P3
    • 19
    • 19
    • hotspot
    • b26

    Description

      Found this oddity when debugging x86_32 port, but x86_64 seems to suffer from a similar issue. Run, for example:

      $ CONF=linux-x86_64-server-fastdebug make images run-test TEST=jdk/internal/vm/Continuation/Basic.java TEST_VM_OPTS="-XX:+VerifyStack"

      ```
      test Basic.test1(): success
      test Basic.testException1(): success
      overlapping storage
       0x00007fcbc5d07400: 0x00000000d070eb88 param 60 object for #2
       0x00007fcbc5d07400: 0x00000000d070eb88 saved fp for #3
      ```

      See how "param 60" and "saved fp" are at the same stack slot.

      ```
       0x00007fcbc5d07460: 0x00007fcbe8b63204 #3 nmethod 0x00007fcbe8cbef10 for method J jdk.internal.vm.Continuation.enterSpecial(Ljdk/internal/vm/Continuation;ZZ)V
                                              unextended_sp for #4
                                              sp for #4
       0x00007fcbc5d07458: 0x00007fcbe8b63204 return address for #4
       0x00007fcbc5d07450: 0x00007fcbc5d074c8 saved fp for #4
       0x00007fcbc5d07448: 0x00007fcbe8cc55e3
       0x00007fcbc5d07440: 0x0000000000000000 parent held monitor count
       0x00007fcbc5d07444: 0xe8cc55e300000000 pin_count
       0x00007fcbc5d07438: 0x00007fcbc5d07568 parent fastpath
       0x00007fcbc5d07434: 0xc5d075680000002f argsize
       0x00007fcbc5d07430: 0x0000002f00000000 flags
       0x00007fcbc5d07428: 0x0000000000000000 chunk
       0x00007fcbc5d07420: 0x00000000d01baa38 continuation
       0x00007fcbc5d07418: 0x0000000000000000 parent
       0x00007fcbc5d07410: 0x00007fcb00001234 continuation entry
                                              unextended_sp for #3
                                              sp for #3
       0x00007fcbc5d07408: 0x0000000000000001 return address for #3
       0x00007fcbc5d07400: 0x00000000d070eb88 param 60 object for #2
                                              saved fp for #3
       0x00007fcbc5d073f8: 0x00000000d070eb78 param 59 object for #2
       0x00007fcbc5d073f0: 0x00000000d070eb68 param 58 object for #2
       0x00007fcbc5d073e8: 0x00000000d070eb58 param 57 object for #2
       0x00007fcbc5d073e0: 0x00000000d070eb48 param 56 object for #2
       0x00007fcbc5d073d8: 0x00000000d070eb38 param 55 object for #2
       0x00007fcbc5d073d0: 0x00000000d070eb28 param 54 object for #2
       0x00007fcbc5d073c8: 0x00000000d070eb18 param 53 object for #2
       0x00007fcbc5d073c0: 0x00000000d070eb08 param 52 object for #2
       0x00007fcbc5d073b8: 0x00000000d070eaf8 param 51 object for #2
       0x00007fcbc5d073b0: 0x00000000d070eae8 param 50 object for #2
       0x00007fcbc5d073a8: 0x00000000d070ead8 param 49 object for #2
       0x00007fcbc5d073a0: 0x00000000d070eac8 param 48 object for #2
       0x00007fcbc5d07398: 0x00000000d070eab8 param 47 object for #2
       0x00007fcbc5d07390: 0x00000000d070eaa8 param 46 object for #2
       0x00007fcbc5d07388: 0x00000000d070ea98 param 45 object for #2
       0x00007fcbc5d07380: 0x00000000d070ea88 param 44 object for #2
       0x00007fcbc5d07378: 0x00000000d070ea78 param 43 object for #2
       0x00007fcbc5d07370: 0x00000000d070ea68 param 42 object for #2
       0x00007fcbc5d07368: 0x00000000d070ea58 param 41 object for #2
       0x00007fcbc5d07360: 0x4034000000000000 param 40 double for #2
       0x00007fcbc5d07358: 0x4033000000000000 param 39 double for #2
       0x00007fcbc5d07350: 0x4032000000000000 param 38 double for #2
       0x00007fcbc5d07348: 0x4031000000000000 param 37 double for #2
       0x00007fcbc5d07340: 0x0000000041800000 param 36 float for #2
       0x00007fcbc5d07338: 0x0000000041700000 param 35 float for #2
       0x00007fcbc5d07330: 0x0000000041600000 param 34 float for #2
       0x00007fcbc5d07328: 0x402a000000000000 param 33 double for #2
       0x00007fcbc5d07320: 0x4028000000000000 param 32 double for #2
       0x00007fcbc5d07318: 0x4026000000000000 param 31 double for #2
       0x00007fcbc5d07310: 0x4024000000000000 param 30 double for #2
       0x00007fcbc5d07308: 0x4022000000000000 param 29 double for #2
       0x00007fcbc5d07300: 0x0000000000000014 param 20 int for #2
       0x00007fcbc5d072f8: 0x0000000000000013 param 19 int for #2
       0x00007fcbc5d072f0: 0x0000000000000012 param 18 int for #2
       0x00007fcbc5d072e8: 0x0000000000000011 param 17 int for #2
       0x00007fcbc5d072e0: 0x0000000000000010 param 16 int for #2
       0x00007fcbc5d072d8: 0x000000000000000f param 15 int for #2
       0x00007fcbc5d072d0: 0x000000000000000e param 14 int for #2
       0x00007fcbc5d072c8: 0x000000000000000d param 13 int for #2
       0x00007fcbc5d072c0: 0x000000000000000c param 12 int for #2
       0x00007fcbc5d072b8: 0x000000000000000b param 11 int for #2
       0x00007fcbc5d072b0: 0x000000000000000a param 10 int for #2
       0x00007fcbc5d072a8: 0x0000000000000009 param 9 int for #2
       0x00007fcbc5d072a0: 0x0000000000000008 param 8 int for #2
       0x00007fcbc5d07298: 0x0000000000000007 param 7 int for #2
       0x00007fcbc5d07290: 0x0000000000000002 #2 nmethod 0x00007fcbe8ccce10 for method J Basic.barMany(JIIIIIIIIIIIIIIIIIIIIDDDDDFFDDDDDDFFFDDDDLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String;
      ```

      The failure comes from the stack rooted at `UncommonTrapBlob`, which points to something going haywire after deopt?

      ```
      ...
       0x00007f8bbaeaab40: 0x00007f8bb0709ea8 #1 <UncommonTrapBlob>
                                              unextended_sp for #2
                                              sp for #2
       0x00007f8bbaeaab38: 0x00007f8bd85005a4 return address for #2
       0x00007f8bbaeaab30: 0x00000000ffba04d8 stack 1 for #2 (scope 0)
                                              saved fp for #2
                                              narrow oop for #2
                                              sp for #1
       0x00007f8bbaeaab28: 0x00007f8bd7da3241 return address for #1
       0x00007f8bbaeaab20: 0x00000000ffba04d8 saved fp for #1
      ```

      Attachments

        Issue Links

          Activity

            People

              rpressler Ron Pressler
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: