OSDN Git Service

* fork.cc (frok::child): Change order of cleanup prior to return.
authorcgf <cgf>
Sat, 29 Oct 2005 15:19:34 +0000 (15:19 +0000)
committercgf <cgf>
Sat, 29 Oct 2005 15:19:34 +0000 (15:19 +0000)
(fork): Save more of the stack.
* gendef: Fix some comments.
* sigproc.cc (wait_sig): Clarify debug output.

winsup/cygwin/ChangeLog
winsup/cygwin/fork.cc
winsup/cygwin/gendef
winsup/cygwin/sigproc.cc

index 06e8211..34d844e 100644 (file)
@@ -1,5 +1,14 @@
 2005-10-29  Christopher Faylor  <cgf@timesys.com>
 
+       * fork.cc (frok::child): Change order of cleanup prior to return.
+       (fork): Save more of the stack.
+
+       * gendef: Fix some comments.
+
+       * sigproc.cc (wait_sig): Clarify debug output.
+
+2005-10-29  Christopher Faylor  <cgf@timesys.com>
+
        * child_info.h (CHILD_INFO_MAGIC): Reset.
 
 2005-10-24  Christopher Faylor  <cgf@timesys.com>
index 13cccba..4f481b0 100644 (file)
@@ -244,15 +244,15 @@ frok::child (void *)
 
   ForceCloseHandle1 (fork_info->forker_finished, forker_finished);
 
-  _my_tls.fixup_after_fork ();
   sigproc_init ();
 
   pthread::atforkchild ();
   fixup_timers_after_fork ();
-  fixup_hooks_after_fork ();
   cygbench ("fork-child");
   ld_preload ();
+  fixup_hooks_after_fork ();
   cygwin_finished_initializing = true;
+  _my_tls.fixup_after_fork ();
   return 0;
 }
 
@@ -562,7 +562,10 @@ fork ()
   grouped.first_dll = NULL;
   grouped.load_dlls = 0;
 
+  int res;
   void *esp;
+  int ischild;
+
   __asm__ volatile ("movl %%esp,%0": "=r" (esp));
 
   myself->set_has_pgid_children ();
@@ -576,8 +579,7 @@ fork ()
     }
 
   sig_send (NULL, __SIGHOLD);
-  int res;
-  int ischild = setjmp (grouped.ch.jmp);
+  ischild = setjmp (grouped.ch.jmp);
   if (!ischild)
     res = grouped.parent (esp);
   else
index e743ebc..a12b024 100755 (executable)
@@ -114,7 +114,7 @@ __sigfe:
 
        .global __sigbe
        .stabs  "_sigbe:F(0,1)",36,0,0,__sigbe
-__sigbe: # return here after cygwin syscall
+__sigbe:                                               # return here after cygwin syscall
        pushl   %edx
        pushl   %ebx
        pushl   %eax                                    # don't clobber
@@ -131,7 +131,7 @@ __sigbe: # return here after cygwin syscall
        xadd    %eax,$tls::stackptr(%ebx)               #  and get pointer
        xorl    %edx,%edx
        xchgl   %edx,-4(%eax)                           # get return address from signal stack
-       xchgl   %edx,8(%esp)                            # restore ebx/real return address
+       xchgl   %edx,8(%esp)                            # restore edx/real return address
        decl    $tls::incyg(%ebx)
        decl    $tls::stacklock(%ebx)                   # release lock
        popl    %eax
index 5e1a2ed..a4a0daf 100644 (file)
@@ -1175,8 +1175,8 @@ wait_sig (VOID *)
        proc_subproc (PROC_CLEARWAIT, 0);
       if (pack.wakeup)
        {
+         sigproc_printf ("signalling pack.wakeup %p", pack.wakeup);
          SetEvent (pack.wakeup);
-         sigproc_printf ("signalled %p", pack.wakeup);
        }
       if (pack.si.si_signo == __SIGEXIT)
        break;