This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

more questions



Hi,
   A couple more questions:

- pinfo is locked for the duration of the fork() operation.  Does this
  lock the current process slot or the entire process table?
  If the entire table, couldnt the exclusion interval be shortened
  to just grabbing the new slot?  Seems like some parallelism is
  being wasted here.

- In fork the fork helper the stack is copied as:
    rc = copy (child->hProcess, &x, u->initial_sp, 3);
  which assumes (I assume :) that "x" is at the bottom of
  the stack.  This is not documented anywhere that I can
  see in the src (DANGER!) and a quick look at the src
  doesn't convince me that it is at the bottom of the stack.
  Is it?  If not, couldn't this cause some obscure bugs?
  Maybe the address should be taken from a local in a
  called frame:
     get_stacktop() { int x; return &x; }
  or maybe the address should be rounded down to an even
  page?

- In the fork helper the child (after longjmp'ing from crt0)
  sets the process mask.  Isn't this copied over from the parent?
  If its not, isn't there a race condition here between when
  the child is created (or the process table entry is created)
  and when this line is reached?

                                      Tim N.

-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]