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

JOptionPane message string with 5000+ newlines produces StackOverflowError

    XMLWordPrintable

Details

    • b06
    • x86
    • os_x

    Description

      ADDITIONAL SYSTEM INFORMATION :
      scrappy:Documents jimdouglas$ sw_vers
      ProductName: Mac OS X
      ProductVersion: 10.14.4
      BuildVersion: 18E226
      scrappy:Documents jimdouglas$ java -version
      java version "1.8.0_202"
      Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
      Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
      scrappy:Documents jimdouglas$

      A DESCRIPTION OF THE PROBLEM :
      BasicOptionPaneUI.addMessageComponents() uses recursion to split message strings at newlines, generating a StackOverflowError when the message string contains an unusually large number of newlines (approximately 5000+).

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      scrappy:Documents jimdouglas$ cat OptionPane.java
      public class OptionPane
      {
          public static void main(String[] argv) throws Exception
          {
              String message = java.nio.CharBuffer.allocate(5000).toString().replace('\0','\n');
              javax.swing.JOptionPane.showMessageDialog(null, message);
          }
      }
      scrappy:Documents jimdouglas$ java -version
      java version "1.8.0_202"
      Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
      Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
      scrappy:Documents jimdouglas$ javac OptionPane.java
      scrappy:Documents jimdouglas$ java OptionPane
      Exception in thread "main" java.lang.StackOverflowError
      at java.awt.Component.setBackground(Component.java:1835)
      at javax.swing.JComponent.setBackground(JComponent.java:2733)
      at javax.swing.LookAndFeel.installColors(LookAndFeel.java:175)
      at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:211)
      at javax.swing.plaf.basic.BasicPanelUI.installDefaults(BasicPanelUI.java:66)
      at javax.swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:56)
      at javax.swing.JComponent.setUI(JComponent.java:666)
      at javax.swing.JPanel.setUI(JPanel.java:153)
      at javax.swing.JPanel.updateUI(JPanel.java:126)
      at javax.swing.JPanel.<init>(JPanel.java:86)
      at javax.swing.JPanel.<init>(JPanel.java:109)
      at javax.swing.JPanel.<init>(JPanel.java:117)
      at javax.swing.plaf.basic.BasicOptionPaneUI$1.<init>(BasicOptionPaneUI.java:397)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:397)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      ,,,etc.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Show a JOptionPane with the specified message.
      ACTUAL -
      Exception in thread "main" java.lang.StackOverflowError
      at java.awt.Component.setBackground(Component.java:1835)
      at javax.swing.JComponent.setBackground(JComponent.java:2733)
      at javax.swing.LookAndFeel.installColors(LookAndFeel.java:175)
      at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:211)
      at javax.swing.plaf.basic.BasicPanelUI.installDefaults(BasicPanelUI.java:66)
      at javax.swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:56)
      at javax.swing.JComponent.setUI(JComponent.java:666)
      at javax.swing.JPanel.setUI(JPanel.java:153)
      at javax.swing.JPanel.updateUI(JPanel.java:126)
      at javax.swing.JPanel.<init>(JPanel.java:86)
      at javax.swing.JPanel.<init>(JPanel.java:109)
      at javax.swing.JPanel.<init>(JPanel.java:117)
      at javax.swing.plaf.basic.BasicOptionPaneUI$1.<init>(BasicOptionPaneUI.java:397)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:397)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:414)
      ,,,etc.

      ---------- BEGIN SOURCE ----------
      public class OptionPane
      {
          public static void main(String[] argv) throws Exception
          {
              String message = java.nio.CharBuffer.allocate(5000).toString().replace('\0','\n');
              javax.swing.JOptionPane.showMessageDialog(null, message);
          }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Avoid message text with a large number of newlines.

      FREQUENCY : always


      Attachments

        Issue Links

          Activity

            People

              psadhukhan Prasanta Sadhukhan
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: