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

HashMap.put() replacing an existing key can trigger a resize()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P2
    • 8
    • 8
    • core-libs
    • JDK 8-b108
      Windows, Linux, Mac

    • b108
    • 8
    • b110
    • generic
    • generic
    • Verified

    Description

      This bug was introduced in JDK 8-b108. I suspect a change in java.util caused this bug, but cannot be sure (I don't have the sources for antlr 3.1.3 handy).

      To reproduce this, download the antlr libraries, then run antlr on the attached grammar file, JSL.g as follows:

      java -cp "antlr-libs/antlr-runtime-3.1.3.jar:antlr-libs/stringtemplate-3.2.jar:antlr-libs/antlr-3.1.3.jar" org.antlr.Tool -o output src/JSL.g

      It will throw the following exception and produce no output.

      error(10): internal error: src/JSL.g : java.lang.NullPointerException
      org.antlr.analysis.DFAState.getConflictingAlts(DFAState.java:556)
      org.antlr.analysis.DFAState.getNonDeterministicAlts(DFAState.java:505)
      org.antlr.analysis.NFAToDFAConverter.resolveNonDeterminisms(NFAToDFAConverter.java:1174)
      org.antlr.analysis.NFAToDFAConverter.addDFAStateToWorkList(NFAToDFAConverter.java:967)
      org.antlr.analysis.NFAToDFAConverter.findNewDFAStatesAndAddDFATransitions(NFAToDFAConverter.java:307)
      org.antlr.analysis.NFAToDFAConverter.convert(NFAToDFAConverter.java:111)
      org.antlr.analysis.DFA.<init>(DFA.java:233)
      org.antlr.tool.Grammar.createLookaheadDFA(Grammar.java:1257)
      org.antlr.tool.Grammar.createLookaheadDFAs(Grammar.java:1021)
      org.antlr.tool.Grammar.createLookaheadDFAs(Grammar.java:971)
      org.antlr.codegen.Target.performGrammarAnalysis(Target.java:114)
      org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:301)
      org.antlr.Tool.generateRecognizer(Tool.java:607)
      org.antlr.Tool.process(Tool.java:429)
      org.antlr.Tool.main(Tool.java:91)

      With b107 it will generate the expected output files (although it will get an exception after it is all done due to JDK-8015656, but we can safely ignore that exception).

      This prevents us from upgrading our JavaFX build machines to JDK 8-b108 and will cause all OpenJFX builds to fail once external users download b108.

      Attachments

        Activity

          People

            bchristi Brent Christian
            kcr Kevin Rushforth
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: