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

PipedOutputStream.sink should be volatile

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 17
    • None
    • core-libs
    • b22

      When creating a PipedInputStream and PipedOutputStream like the following:

      PipedOutputStream out = new PipedOutputStream();
      PipedInputStream in = new PipedInputStream(out) ...

      PipedOutputStream#connect will be called by the thread with the PipedInputStream and write to the field PipedOutputStream.sink, and that field will be read in the other thread by methods like PipedOutputStream#write.

      PipedOutputStream#connect is synchronized so the write is guarded by a lock, but PipedOutputStream#write is not synchronized, so the read is racy.

            cushon Liam Miller-Cushon
            cushon Liam Miller-Cushon
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: