Welcome! Log In Create A New Profile

Advanced

Re: Potential bug in ngx_event.c

Maxim Dounin
September 02, 2019 12:24PM
Hello!

On Sun, Sep 01, 2019 at 11:45:20AM -0700, Rian Hunter wrote:

> On 2019-08-31 11:28, Maxim Dounin wrote:
> > Hello!
> >
> > On Fri, Aug 30, 2019 at 06:26:57PM -0700, Rian Hunter wrote:
> >
> >> On 2019-08-30 07:19, Maxim Dounin wrote:
> >> > Yes, this is intentional.
> >> >
> >> > The first agument of the ngx_shmtx_create() function is a pointer
> >> > to the ngx_shmtx_t structure, which is not expected to be shared
> >> > between processes. Copy of the structure as created by fork() is
> >> > enough.
> >>
> >> The POSIX sem_t member (called "sem") needs to reside in shared memory
> >> if sem_wait()/sem_post() are to have an effect across processes.
> >> Memory
> >> copied across fork is not sufficient.
> >
> > No, fork() is explicitly documented to preserve semaphores
> > (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html):
> >
> > : Any semaphores that are open in the parent process shall also be
> > : open in the child process.
>
> That's only true for semaphores created with sem_open(). For semaphores
> created with sem_init(pshared=1) the caller is responsible for using
> supplying memory that resides in a shared memory segment (e.g. created
> from mm ap(flags=MAP_SHARED|...)).
>
> See:
> https://blog.superpat.com/2010/07/14/semaphores-on-linux-sem_init-vs-sem_open/
>
> Here is a program that illustrates my point (also here:
> https://gist.github.com/rianhunter/a0bd4c9e8ab550ecadbe2464995726a8):

[...]

My bad, you are right here.

This isn't a problem though, as accept mutex does not use
sem_wait(), but only uses ngx_shmtx_trylock() - that is, only
atomic operations.

And for other mutexes we allocate ngx_shmtx_t structures from
shared memory, so it works fine.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

Potential bug in ngx_event.c

Rian Hunter 85 August 23, 2019 02:02PM

Re: Potential bug in ngx_event.c

Maxim Dounin 15 August 30, 2019 10:20AM

Re: Potential bug in ngx_event.c

Rian Hunter 16 August 30, 2019 09:28PM

Re: Potential bug in ngx_event.c

Maxim Dounin 15 August 31, 2019 02:30PM

Re: Potential bug in ngx_event.c

Rian Hunter 18 September 01, 2019 02:46PM

Re: Potential bug in ngx_event.c

Maxim Dounin 14 September 02, 2019 12:24PM

Re: Potential bug in ngx_event.c

Rian Hunter 19 September 02, 2019 12:50PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 91
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready