Fix the concurrent execution JVM crash of StringBuilder::append(int/long)

XMLWordPrintable

    • Type: Bug
    • Resolution: Duplicate
    • Priority: P3
    • None
    • Affects Version/s: 25
    • Component/s: core-libs
    • None

      The following code can reproduce the problem, writing out of bounds causes JVM Crash

         StringBuilder buf = new StringBuilder();
          buf.append('δΈ­');

          final CountDownLatch latch = new CountDownLatch(10);
          Runnable r = () -> {
              for (int i = 0; i < 10000; i++) {
                  buf.setLength(0);
                  buf.trimToSize();
                  buf.append(123456789);
              }
              latch.countDown();
          };
          Thread[] threads = new Thread[10];
          for (int i = 0; i < threads.length; i++) {
              threads[i] = new Thread(r);
          }
          for (Thread t : threads) {
              t.start();
          }
          latch.await();
      }

            Assignee:
            Shaojin Wen
            Reporter:
            Shaojin Wen
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: