It worked correctly for me, but in my system uses SSE4.2, similar to other commenter that reported[1] that the program works as expected with SSE4.2 acceleration but fails with AVX2.
This is by design and a obvious implication from the inode structure. Bash, for example, relies on that for process substitution.
On the other side, systemd-tmpfiles used to recurse into '..' when unlinking, wiping your system. So i'm not surprised they didn't get the open() calls right.
I don't quite follow. In fact, at least on Linux, opening a FIFO with O_RDWR (which POSIX leaves undefined) will not block so it can work. IMO blocking for opening as writable can be justified, but I don't see why opening for readonly has to. I'm sure there is some justification for it like SIGFPE or distinguishing empty data from no data, but the result still seems fishy.
>systemd-tmpfiles used to recurse into '..' when unlinking