You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "Michael H. Voase" <mv...@midcoast.com.au> on 1999/02/02 15:51:45 UTC
Re: [Fwd: mod_cgi and pthread problems] (fwd)
Ryan Bloom wrote:
> Michael,
>
> We can't use chdir directly. We have another person right now, writing a
> spawn process for threaded-Apache. The problem with using chdir directly,
> is that that will change the directory for the entire process, not the
> thread that calls it. The proper solution, IMHO, is to collapse a lot of
> the forking code into spawn. Spawn would need to be about five or six
> lines, that would fork, return on the parent process, and on the child
> process it would chdir, and exec the new program.
Forgive me if I have missed something here , that seems to be what its
doing now . The actual call to chdir is in the child process . I am
afraid
I am missing the point here somewhere . ap_bspawn_child is called
from cgi_handler that then returns immediately ( if all goes well ) and
continues on while cgi_child is called by ap_bspawn_child which forks()
the new process . It then wanders off and sets up its env , does
the chdir and execs the script . much like what you have described
above ( almost to a tee ) ????
> Taking care of memory
> and cleanups along the way. The spawn function will also need to set-up
> the pipes between cgi's and the server.
Always important doing the cleanups . However , ap_bspawn_child does the
pipe hookups ...
> Windows does things very very
> differently, because their CreateProcess API allows them to just send in a
> current directory and handles to use for pipes. UNIX isn't that nice to
> us.
>
Yes I am aware , windows is very different . Note that ap_bspawn_child
in
its current incarnation does actually pass these pipes as part of its
call
( script_in , script_out and script_err )
>
> Because of these differences, at some point, we need to write APR, which
> should hide these niggling points from common Apache developers. That is
> on my list of things to do, but it will be a month or so before I get to
> it.
>
Agreed .
>
> The code path shouldn't be that long, I agree, and it shouldn't be hard to
> implement, but we are very driven to do this the right way the first time.
>
> Let us know if/when you implement the work.
>
> Ryan
>
Its just the point further up thats got me miffed . cgi_child
is the spawned process that becomes the script on the
exec . If my multiprocess theory is steering me right
here , the chdir is happenening in an independent
process which should not effect the rest of the threads
in apache . ( unless there is some magical way that a
forked process from a thread can affect the parent process
that I am not aware of . AFAIK , the forked process should
be inheriting the globals from the parent as local copies ....
but then again , only a few hours ago I thought it was a no-no
to even call fork() from a thread )
Cheers Mik Voase.
--
----------------------------------------------------------------------------
/~\ /~\ CASTLE INDUSTRIES PTY. LTD.
| |_____| | Incorporated 1969. in N.S.W., Australia
| | Phone +612 6562 1345 Fax +612 6567 1449
| /~\ | Web http://www.midcoast.com.au/~mvoase
| [ ] | Michael H. Voase. Director.
~~~~~~~~~~~~~~ Cause Linux Flies and Windoze Dies ... 'nuf
said.
----------------------------------------------------------------------------