RFR: 8349241: Fix the concurrent execution JVM crash of StringBuilder::append(int/long) [v6]

Shaojin Wen swen at openjdk.org
Tue Feb 4 22:35:51 UTC 2025


> The following code can reproduce the problem, writing out of bounds causes JVM Crash
> 
> 
>          StringBuilder buf = new StringBuilder();
>         buf.append('中');
> 
>         Thread[] threads = new Thread[40];
>         final CountDownLatch latch = new CountDownLatch(threads.length);
>         Runnable r = () -> {
>             for (int i = 0; i < 1000000; i++) {
>                 buf.setLength(0);
>                 buf.trimToSize();
>                 buf.append(123456789123456789L);
>             }
>             latch.countDown();
>         };
> 
>         for (int i = 0; i < threads.length; i++) {
>             threads[i] = new Thread(r);
>         }
>         for (Thread t : threads) {
>             t.start();
>         }
>         latch.await();
> 
> 
> This problem can be avoided by using the value of ensureCapacityInternal directly.

Shaojin Wen has updated the pull request incrementally with one additional commit since the last revision:

  from @RogerRiggs

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/23427/files
  - new: https://git.openjdk.org/jdk/pull/23427/files/955e8538..5f8a8d53

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=23427&range=05
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=23427&range=04-05

  Stats: 7 lines in 1 file changed: 1 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jdk/pull/23427.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23427/head:pull/23427

PR: https://git.openjdk.org/jdk/pull/23427


More information about the core-libs-dev mailing list