[PATCH v4] Cygwin: pipe: Avoid deadlock for non-cygwin writer.

Jeremy Drake cygwin@jdrake.com
Tue Mar 29 15:40:19 GMT 2022


On Tue, 29 Mar 2022, Takashi Yano wrote:

> diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
> index b87160edb..006c7b4bf 100644
> --- a/winsup/cygwin/fhandler.h
> +++ b/winsup/cygwin/fhandler.h
> @@ -1194,6 +1194,7 @@ private:
>    HANDLE hdl_cnt_mtx;
>    HANDLE query_hdl_proc;
>    HANDLE query_hdl_value;
> +  HANDLE query_hdl_close_req_evt;
>    uint64_t pipename_key;
>    DWORD pipename_pid;
>    LONG pipename_id;
> @@ -1258,6 +1259,16 @@ public:
>    }
>    bool reader_closed ();
>    HANDLE temporary_query_hdl ();
> +  bool need_close_query_hdl ()
> +    {
> +      return query_hdl_close_req_evt ?
> +	IsEventSignalled (query_hdl_close_req_evt) : false;
> +    }
> +  void request_close_query_hdl ()
> +    {
> +      if (query_hdl_close_req_evt)
> +	SetEvent (query_hdl_close_req_evt);
> +    }
>  };
>
>  #define CYGWIN_FIFO_PIPE_NAME_LEN     47

Oh, a minor optimization: should close_query_handle also close (and NULL)
the query_hdl_close_req_evt?


More information about the Cygwin-patches mailing list