News for hackers. Stuff that matters.
Re:Debugging a Golang Bug with Non-Blocking Reads by chipaca on Tuesday March 12, 2024 @12:29PM (#39681424)
Step 1, create a named pipe, and open it in non-blocking mode.

...

Unless things have changed a lot in this domain in the last few years, that won't work reliably _anywhere_.

Re:Debugging a Golang Bug with Non-Blocking Reads by harikb on Tuesday March 12, 2024 @12:41PM (#39681611)
Go team does acknowledge [1] it as a bug, so there is some point here

However, that said, I wonder if OP (duckdb) could have written their solution [2] differently. Shouldn't they be able to select from a Pipe as well as Error channel simultaneously? (similar to how they are doing it inside here [3]). If not, I would have create a go-routine that does blocking read on the Pipe and then pass it on to another channel to select on.

[1] https://github.com/golang/go/issues/66239

[2] https://github.com/scratchdata/scratchdata/blob/7c1a0fcd0e20...

[3] https://github.com/scratchdata/scratchdata/blob/7c1a0fcd0e20...

Re:Debugging a Golang Bug with Non-Blocking Reads by memset on Wednesday March 13, 2024 @07:53AM (#39690362)
I’m not sure you can. Both the Open() and Read() calls will block. You can select() on a pipe but not on open. I haven’t checked to see if you can select on a non blocking fd though. This is what the go wrappers do behind the scenes.
Re:Debugging a Golang Bug with Non-Blocking Reads by o11c on Tuesday March 12, 2024 @12:42PM (#39681626)
Er, whyever wouldn't it? On Linux it certainly works as expected, and it seems that it works fine on OS X when avoiding the broken Go shims.
Re:Debugging a Golang Bug with Non-Blocking Reads by chipaca on Tuesday March 12, 2024 @05:11PM (#39685001)
I seem to remember non-blocking io with named pipes was unreliable, in the sense that the test suite of whatever-it-was (memory is reeealy sketchy, this was tens of years ago) would fail randomly often enough that we had to throw the easy solution away and do actual networking.

A bit like the .signature named pipe from fortune thing, where sometimes you got two signatures and sometimes none? Anybody remember that?

Re:Debugging a Golang Bug with Non-Blocking Reads by thwarted on Wednesday March 13, 2024 @12:56AM (#39688244)
Is this what you're referring to?

signature file can't be a named pipe (or /proc/uptime) https://bugzilla.mozilla.org/show_bug.cgi?id=62993

can't attach signature from pipe (fifo) https://bugzilla.mozilla.org/show_bug.cgi?id=163831