PipedOutputStream.sink should be volatile

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P4
    • 17
    • Affects Version/s: None
    • Component/s: 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.

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

              Created:
              Updated:
              Resolved: