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

Labeled break in finally causes stack overflow in Node copy

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 8
    • None
    • core-libs
    • None
    • b89
    • Verified

      The following code:

      a: try {
      } finally {
          break a;
      }

      causes a stack overflow:

      at jdk.nashorn.internal.ir.TryNode.copy(TryNode.java:95)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabelNode.<init>(LabelNode.java:72)
      at jdk.nashorn.internal.ir.LabelNode.copy(LabelNode.java:79)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabeledNode.<init>(LabeledNode.java:78)
      at jdk.nashorn.internal.ir.BreakNode.<init>(BreakNode.java:53)
      at jdk.nashorn.internal.ir.BreakNode.copy(BreakNode.java:58)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.TryNode.<init>(TryNode.java:89)
      at jdk.nashorn.internal.ir.TryNode.copy(TryNode.java:95)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabelNode.<init>(LabelNode.java:72)
      at jdk.nashorn.internal.ir.LabelNode.copy(LabelNode.java:79)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabeledNode.<init>(LabeledNode.java:78)
      at jdk.nashorn.internal.ir.BreakNode.<init>(BreakNode.java:53)
      at jdk.nashorn.internal.ir.BreakNode.copy(BreakNode.java:58)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.TryNode.<init>(TryNode.java:89)
      at jdk.nashorn.internal.ir.TryNode.copy(TryNode.java:95)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabelNode.<init>(LabelNode.java:72)
      at jdk.nashorn.internal.ir.LabelNode.copy(LabelNode.java:79)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabeledNode.<init>(LabeledNode.java:78)
      at jdk.nashorn.internal.ir.BreakNode.<init>(BreakNode.java:53)
      at jdk.nashorn.internal.ir.BreakNode.copy(BreakNode.java:58)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.TryNode.<init>(TryNode.java:89)
      at jdk.nashorn.internal.ir.TryNode.copy(TryNode.java:95)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabelNode.<init>(LabelNode.java:72)
      at jdk.nashorn.internal.ir.LabelNode.copy(LabelNode.java:79)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabeledNode.<init>(LabeledNode.java:78)
      at jdk.nashorn.internal.ir.BreakNode.<init>(BreakNode.java:53)
      at jdk.nashorn.internal.ir.BreakNode.copy(BreakNode.java:58)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.TryNode.<init>(TryNode.java:89)
      at jdk.nashorn.internal.ir.TryNode.copy(TryNode.java:95)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabelNode.<init>(LabelNode.java:72)
      at jdk.nashorn.internal.ir.LabelNode.copy(LabelNode.java:79)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabeledNode.<init>(LabeledNode.java:78)
      at jdk.nashorn.internal.ir.BreakNode.<init>(BreakNode.java:53)
      at jdk.nashorn.internal.ir.BreakNode.copy(BreakNode.java:58)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.TryNode.<init>(TryNode.java:89)
      at jdk.nashorn.internal.ir.TryNode.copy(TryNode.java:95)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabelNode.<init>(LabelNode.java:72)
      at jdk.nashorn.internal.ir.LabelNode.copy(LabelNode.java:79)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.LabeledNode.<init>(LabeledNode.java:78)
      at jdk.nashorn.internal.ir.BreakNode.<init>(BreakNode.java:53)
      at jdk.nashorn.internal.ir.BreakNode.copy(BreakNode.java:58)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.Block.<init>(Block.java:115)
      at jdk.nashorn.internal.ir.Block.copy(Block.java:127)
      at jdk.nashorn.internal.ir.Node$CopyState.existingOrCopy(Node.java:200)
      at jdk.nashorn.internal.ir.TryNode.<init>(TryNode.java:89)

            hannesw Hannes Wallnoefer
            hannesw Hannes Wallnoefer
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: