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

StringJoiner does not handle too large strings correctly

    Details

    • Subcomponent:
    • CPU:
      x86_64
    • OS:
      windows_10

      Description

      A DESCRIPTION OF THE PROBLEM :
      StringJoiner does not handle or detect when too large strings are joined or built. This can result in NegativeArraySizeException and possibly other incorrect behavior.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the code provided below.
      Requirements:
      - String.COMPACT_STRINGS = true (probably the default)
      - JVM arg -Xmx3G

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      RuntimeException or OutOfMemoryError is thrown during building because result would be too large.
      ACTUAL -
      NegativeArraySizeException is thrown.

      ---------- BEGIN SOURCE ----------
      // To not get OutOfMemoryError because JVM cannot create that large arrays
      int missingToMaxInt = 10;

      // Requires String.COMPACT_STRINGS = true and -Xmx3G
      new StringJoiner("")
          .add("a".repeat(Integer.MAX_VALUE - missingToMaxInt))
          .add("a".repeat(missingToMaxInt + 1))
          .toString();
      ---------- END SOURCE ----------

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                smarks Stuart Marks
                Reporter:
                webbuggrp Webbug Group
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated: