libuv: uv_pipe_open/uv_read_start regression in v1.23.1 and later

  • Version: v1.23.1
  • Platform: macOS 10.14

The following few lines (added in 40498795a and pushed to v1.23.1) seem to break uv_pipe_open() for pipes created with pipe2() / pipe():

https://github.com/libuv/libuv/blob/6dd44caa35b4697d7e8c1b9fa0ba8e95d73355de/src/unix/pipe.c#L143-L148

I found this problem trying to upgrade uvloop to v1.23.2; the test_write_pipe test crashes with “[Errno 57] Socket is not connected”. With the above few lines commented out everything works as expected.

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 19 (16 by maintainers)

Commits related to this issue

Most upvoted comments

Looks like it’s indeed working. Thanks so much @bnoordhuis and @saghul. Closing this now.

Sure, but I need some solution to detect if write end is disconnected, otherwise libuv is forever broken for uvloop 😦

aside from seeming like that usage would thwart flow-control

Could you please elaborate on this?

that doesn’t sound like it would be a very portable assumption.

But… it always worked just fine up until bugfix v1.23.1 release. Did we have a portability issue in libuv for all these years? IMO, v1.23.1 breaks backwards compat in a big way without offering any solution to how unbreak it.

I’ll copy a few other devs just in case they can help us here: @saghul @bnoordhuis