You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by rb...@rkbloom.net on 2004/03/16 03:30:30 UTC
Re: cvs commit: apr STATUS
I've been working on this, and I don't see a solution. I have the parameter
added to child_init, and the structures get allocated. But, that doesn't solve
the problem, because many lock types just can't be used across an apr_proc_create.
The only solution I can think of for this is to remove APR_DEFAULT_LOCK and
replace it with two macros:
APR_DEFAULT_LOCK_INHERIT
and
APR_DEFAULT_LOCK_EXEC
feel free to tell me to change the names. The first (APR_DEFAULT_LOCK_INHERIT)
is what you use if you want to use apr_fork. This isn't portable, but it allows
you to create locks that can be inherited. The second (APR_DEFAULT_LOCK_EXEC)
is the portable option. This is what you use when you want to call apr_proc_create.
Opinions? Any volunteers to write this code? I'll do it if nobody else steps
up, but I am hoping to have less time soon, and I would really like to make more
progress on the test suite.
Ryan
Quoting rbb@apache.org:
> rbb 2004/03/15 18:23:33
>
> Modified: . STATUS
> Log:
> Add a note about the problems with the locking API. This is a
> showstopper,
> because it keep people from being able to create a portable program that
> uses cross-process locks.
>
> Revision Changes Path
> 1.196 +11 -1 apr/STATUS
>
> Index: STATUS
> ===================================================================
> RCS file: /home/cvs/apr/STATUS,v
> retrieving revision 1.195
> retrieving revision 1.196
> diff -u -r1.195 -r1.196
> --- STATUS 21 Nov 2003 10:42:03 -0000 1.195
> +++ STATUS 16 Mar 2004 02:23:33 -0000 1.196
> @@ -25,6 +25,16 @@
>
> RELEASE 1.0 SHOWSTOPPERS:
>
> + * apr_global_mutex_child_init and apr_proc_mutex_child_init aren't
> + portable. There are a variety of problems with the locking API when
> it
> + is used with apr_create_proc instead of apr_fork. First,
> _child_init
> + doesn't take a lockmech_e parameter so it causes a segfault after
> the
> + apr_proc_create, because the proc_mutex field hasn't been
> initialized.
> + When the lockmech_e parameter is added, it _still_ doesn't work,
> because
> + some lock mechanisms expect to inherit from the parent process.
> For
> + example, sys V semaphores don't have a file to open, so the child
> process
> + can't reaquire the lock.
> +
> * Must namespace protect all include/apr_foo.h headers. Jon Travis
> has especially observed these including apr within Apache-1.3.
> Message-ID: <20...@covalent.net>
>
>
>
>