Ian, I guess not. I’d not thought of that indirectness. I withdraw my
musings.

On Wed, Feb 26, 2020 at 8:36 PM Robert Engels <reng...@ix.netcom.com> wrote:

> The problem is that Go designers are taking the position that any sys call
> should be able to be interrupted. This is invalid. For the vast majority or
> “unix” os an interrupt is a very rare condition and so they treat it as an
> error. If you issue interrupts continually you are creating an unexpected
> context.
>
> > On Feb 26, 2020, at 8:39 PM, Ian Lance Taylor <i...@golang.org> wrote:
> >
> > On Wed, Feb 26, 2020 at 5:51 PM Michael Jones <michael.jo...@gmail.com>
> wrote:
> >>
> >> Sorry...I meant the go system signal interface could loop if desired.
> (Not recommending, just saying that panicky people could be coddled if
> desired)
> >
> > Ah, I see.  Except, no, I don't.  Could we really do that?  Even if
> > the signal arrived while executing some function written in C and
> > called via cgo?
> >
> > Ian
> >
> >
> >>> On Wed, Feb 26, 2020 at 5:48 PM Ian Lance Taylor <i...@golang.org>
> wrote:
> >>>
> >>> On Wed, Feb 26, 2020 at 5:42 PM Michael Jones <michael.jo...@gmail.com>
> wrote:
> >>>>
> >>>> There is the BSD notion of sa_restart, a convenience to loop for the
> caller as appropriate.
> >>>>
> >>>> https://www.freebsd.org/cgi/man.cgi?query=sigaction
> >>>>
> >>>> Go could adopt such a notion if desired.
> >>>
> >>> We already do.  We install all signal handlers with the SA_RESTART
> flag set.
> >>>
> >>> Unfortunately if you peruse "man 7 signal" on a GNU/Linux system you
> >>> will see a list of system calls that return EINTR even if the handler
> >>> has SA_RESTART set.
> >>>
> >>> Ian
> >>>
> >>>> On Wed, Feb 26, 2020 at 5:14 PM Ian Lance Taylor <i...@golang.org>
> wrote:
> >>>>>
> >>>>> On Wed, Feb 26, 2020 at 9:11 AM Manlio Perillo <
> manlio.peri...@gmail.com> wrote:
> >>>>>>
> >>>>>> On Wednesday, February 26, 2020 at 4:14:38 PM UTC+1, Ian Lance
> Taylor wrote:
> >>>>>>>
> >>>>>>> On Wed, Feb 26, 2020 at 7:11 AM Manlio Perillo <
> manlio...@gmail.com> wrote:
> >>>>>>>>
> >>>>>>>> On Wednesday, February 26, 2020 at 3:51:54 PM UTC+1, Peter
> Kleiweg wrote:
> >>>>>>>>>
> >>>>>>>>> Op woensdag 26 februari 2020 13:05:40 UTC+1 schreef Manlio
> Perillo:
> >>>>>>>>>>
> >>>>>>>>>> On Wednesday, February 26, 2020 at 12:33:05 PM UTC+1, Peter
> Kleiweg wrote:
> >>>>>>>>>>>
> >>>>>>>>>>> With Go version 1.14 I get a lot of errors when I run:
> >>>>>>>>>>>
> >>>>>>>>>>>    go test -v github.com/pebbe/zmq4
> >>>>>>>>>>>
> >>>>>>>>>>> I didn't see this with Go 1.13.8 or any earlier version.
> >>>>>>>>>>>
> >>>>>>>>>>> Is this a problem with Go 1.14, or am I doing something wrong
> and just got lucky until now?
> >>>>>>>>>>>
> >>>>>>>>>>> How do I debug this? The errors are different for each run.
> Below is a sample of some errors.
> >>>>>>>>>>> Line numbers are not always accurate, because I inserted some
> calls to test.Log().
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> The errors are probably caused by
> https://golang.org/doc/go1.14#runtime.
> >>>>>>>>>>
> >>>>>>>>>> The solution is to update zmq4  to explicitly handle
> interrupted system calls.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Often the program freezes before I get an interrupted system
> call. It hangs inside a ZeroMQ C++ library function.
> >>>>>>>>> zmq4 is just a wrapper for ZeroMQ. I can't "fix" ZeroMQ to make
> it work with Go.
> >>>>>>>>>
> >>>>>>>>> Is there a way to stop Go from interrupting my system calls? It
> happens rather randomly all over the place.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> https://stackoverflow.com/questions/36040547/zeromq-how-to-react-on-different-signal-types-on-eintr
> >>>>>>>>
> >>>>>>>> ZeroMQ may return an EINTR error , but zmq4 does not list it in
> errors.go.
> >>>>>>>> ZeroMQ asks the caller to handle EINTR, so zmq4 should handle it
> internally or return it to the caller.
> >>>>>>>>
> >>>>>>>> https://golang.org/doc/go1.14#runtime should have mentioned that
> not only programs that use packages like syscall or golang.org/x/sys/unix
> will see more slow system calls fail with EINTR errors, but also programs
> that use Cgo.
> >>>>>>>
> >>>>>>> I don't know ZeroMQ.  If the ZeroMQ calls correspond closely to
> system
> >>>>>>> calls, then it could work for them to return EINTR.  In that case
> the
> >>>>>>> fix is going to be for the Go wrapper around ZeroMQ to check
> whether
> >>>>>>> the error returned is syscall.EINTR, and to retry the call if it
> is.
> >>>>>>>
> >>>>>>
> >>>>>> Unfortunately it is not that simple:
> >>>>>>
> >>>>>> http://250bpm.com/blog:12
> >>>>>> https://alobbs.com/post/54503240599/close-and-eintr
> >>>>>> http://man7.org/linux/man-pages/man7/signal.7.html
> >>>>>> https://github.com/golang/go/issues/11180
> >>>>>> https://www.python.org/dev/peps/pep-0475/
> >>>>>>
> >>>>>> The second entry about close and EINTR is enlightening.
> >>>>>
> >>>>> Thanks for the links.  Note that these issues don't really have
> >>>>> anything to do with Go.  For certain system calls, you need to handle
> >>>>> EINTR one way or another.  The Go runtime does as much as it can to
> >>>>> avoid these problems, but on Unix systems it is impossible to avoid
> >>>>> them entirely.
> >>>>>
> >>>>> Ian
> >>>>>
> >>>>> --
> >>>>> You received this message because you are subscribed to the Google
> Groups "golang-nuts" group.
> >>>>> To unsubscribe from this group and stop receiving emails from it,
> send an email to golang-nuts+unsubscr...@googlegroups.com.
> >>>>> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/CAOyqgcXGcdfpPAz8t8adfqGodKPjZNxKzkTUyB0b4L1zysVFSQ%40mail.gmail.com
> .
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Michael T. Jones
> >>>> michael.jo...@gmail.com
> >>
> >> --
> >> Michael T. Jones
> >> michael.jo...@gmail.com
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "golang-nuts" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to golang-nuts+unsubscr...@googlegroups.com.
> > To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/CAOyqgcW_rGLEGY2d%3Df_OacR%3D%3DSv9kPwp%2BUN8SG3N981S1quobQ%40mail.gmail.com
> .
>
> --

*Michael T. jonesmichael.jo...@gmail.com <michael.jo...@gmail.com>*

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CALoEmQybOiksMszU%3Dsh9nyDoPqALuRX37kanvHZcnWo8vFiD8A%40mail.gmail.com.

Reply via email to