in reply to Re^8: Threads: How to share a FileHandle to Write
in thread Threads: How to share a FileHandle to Write

Again, it looks like a genuine bug in POSIX builds of Perl or the underlying libraries.

As I don't run any of the systems where the failure occurs, I cannot help you further. There is really nothing you can do about it other than report it to the package mainatainer and/or p5p (via perlbug).

You might be able to work around the bug by:

  1. Passing the fileno of the open file handle to each thread explicitly;
  2. Use POSIXdup() to clone the file descriptor manually;
  3. Use POSIXwrite() to write to it.

In theory, you can use 'dupping' syntax of open (open my $fh, '>&', $fno) to achieve this, but chances are that is essentially what is being done when an open filehandle is automatically cloned, and so it would likely suffer the same problems if you do it yourself.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."