In src/fail.c:
>
> > @@ -54,10 +55,14 @@ void caml_zmq_raise(int err_no, const char *err_str) {
> >          }
> >      }
> >
> > -    error_parameters[0] = Val_int(error_to_raise);
> > -    error_parameters[1] = caml_copy_string(err_str);
> > -    caml_raise_with_args(*caml_named_value("ZMQ.ZMQ_
> exception"),
> > -                         2, error_parameters);
> > +    if (error_to_raise == caml_zmq_EUNKNOWN) {
> > +      unix_error(err_no, "ZMQ", Nothing); /* raise as unix error.  Not sure about parameters. */
>
> The canonical argument list for Unix_error is: errno, function name,
> argument that causes the error in form of string. Perhaps you could thread
> the function name in every code calling caml_zmq_raise? (I don't think
> there is any place which suggests passing a third argument to Unix_error in
> ocaml-zmq.)
>
>

If the maintainers agree I dont mind doing the donkey work :)