[libcamera-devel] [PATCH] utils: ipc: Assign a new gid to proxy worker
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jul 26 18:21:43 CEST 2021
Hello,
On Mon, Jul 26, 2021 at 05:01:14PM +0100, Kieran Bingham wrote:
> On 26/07/2021 11:31, Umang Jain wrote:
> > Doing so, handles the situation where the proxy worker
>
> We wouldn't normally open the commit message with a statement which
> follows on from the subject. They're somewhat distinct.
>
> The subject/title should be a just that, which in this case is fine, but
> then the commit message should be something along the lines of:
>
> - Introduce the issue
> - Describe what the patch does to solve it.
>
> Imagine reading the commit message without the title:
>
> "Doing so," ... leaves me thinking ... doing what?
>
> So we should write this as something like:
>
> """
> Isolated IPAs are forked to a new process by the proxy worker, which
> shares the same process group. This allows the undesired effect that the
> The proxy worker will receive signals such as SIGINT and will be closed
> by a Ctrl-C event before the pipeline handlers have been able to fully
> clean up.
>
> Prevent this signal from being delivered to the proxy worker by moving
> the process to a new process group, matching the pid of the isolated proxy.
>
> """
>
> > has been shutdown by SIGINT/SIGTERM preemptively, before
> > the pipeline handler got a chance to cleanup nicely.
> >
> > Bug: https://bugs.libcamera.org/show_bug.cgi?id=60
> > Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
>
> Ah, excellent:
>
> Tested-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>
> > ---
> > .../module_ipa_proxy_worker.cpp.tmpl | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl b/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl
> > index d993e39e..32ac3869 100644
> > --- a/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl
> > +++ b/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl
> > @@ -207,6 +207,16 @@ int main(int argc, char **argv)
> > return EXIT_FAILURE;
> > }
> >
> > + /*
> > + * Shutdown of proxy worker can be preemptive by events like
>
> s/preemptive/pre-empted/ ?
Or "preempt" ? Interestingly, there's also "preëmpt", but it's rare :-)
> > + * SIGINT/SIGTERM, even before the pipeline handler can request
> > + * shutdown. Hence, assign a new gid to handle these situations.
>
> "assign a new gid to prevent signals on the application being delivered
> to the proxy." ... ?
>
> Otherwise,
>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>
> > + */
> > + if (setpgid(0, 0) < -1) {
> > + LOG({{proxy_worker_name}}, Warning)
> > + << "Failed to set new gid: " << strerror(errno);
The LOG() call may end up changing errno. You should write
int err = errno;
LOG({{proxy_worker_name}}, Warning)
<< "Failed to set new gid: " << strerror(err);
With this fixed, as well ass the commit message and comments,
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > + }
> > +
> > {{proxy_worker_name}} proxyWorker;
> > int ret = proxyWorker.init(ipam, fd);
> > if (ret < 0) {
> >
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list