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

String regex bug

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 6u10
    • core-libs

      FULL PRODUCT VERSION :
      java version "1.6.0_20"
      Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
      Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

      ADDITIONAL OS VERSION INFORMATION :
      window and linux

      EXTRA RELEVANT SYSTEM CONFIGURATION :
      Linux minisystem 2.6.16.54-0.2.3

      A DESCRIPTION OF THE PROBLEM :
      public static void main(String[] args) throws Throwable {
              StringBuilder sb = new StringBuilder(10240);
              sb.append(22220001);
              int count = 1000;
              for(int i = 1; i < count ; i++){
                  sb.append(',').append(22220001 + i);
              }
              System.out.println(sb.toString().matches("\\d+(,\\d+)*"));
          }

      print:

      Exception in thread "main" java.lang.StackOverflowError
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
           ..........



      if count = 500 print: true

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      public static void main(String[] args) throws Throwable {
              StringBuilder sb = new StringBuilder(10240);
              sb.append(22220001);
              for(int i = 1; i < 1000; i++){
                  sb.append(',').append(22220001 + i);
              }
              System.out.println(sb.toString().matches("\\d+(,\\d+)*"));
          }

      out :


      Exception in thread "main" java.lang.StackOverflowError
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      print: true
      ACTUAL -
      Exception in thread "main" java.lang.StackOverflowError
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
              at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
              at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
              at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
              at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
              at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)

      REPRODUCIBILITY :
      This bug can be reproduced always.

            sherman Xueming Shen
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: