* init.cc (dll_entry): Remove exit code setting.
* pinfo.cc (pinfo::init): Initialize exitcode to unset state rather than SIGTERM. (proc_waiter): Detect if exit code is unset and use status from GetExitCodeProcess. * sigproc.cc (child_info::sync): Remove exit code detection here since proc_waiter now (again) detects it.
This commit is contained in:
parent
8711eddd80
commit
445d5ce8fc
@ -1,3 +1,13 @@
|
||||
2004-12-26 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* init.cc (dll_entry): Remove exit code setting.
|
||||
* pinfo.cc (pinfo::init): Initialize exitcode to unset state rather
|
||||
than SIGTERM.
|
||||
(proc_waiter): Detect if exit code is unset and use status from
|
||||
GetExitCodeProcess.
|
||||
* sigproc.cc (child_info::sync): Remove exit code detection here since
|
||||
proc_waiter now (again) detects it.
|
||||
|
||||
2004-12-25 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* fhandler.cc (fhandler_base::fchmod): Do the right thing when changing
|
||||
|
@ -13,7 +13,6 @@ details. */
|
||||
#include "thread.h"
|
||||
#include "perprocess.h"
|
||||
#include "cygtls.h"
|
||||
#include "pinfo.h"
|
||||
|
||||
int NO_COPY dynamically_loaded;
|
||||
static char *search_for = (char *) cygthread::stub;
|
||||
@ -127,8 +126,6 @@ dll_entry (HANDLE h, DWORD reason, void *static_load)
|
||||
dll_crt0_0 ();
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
if (myself)
|
||||
myself->exitcode = 1 << 8;
|
||||
break;
|
||||
case DLL_THREAD_ATTACH:
|
||||
munge_threadfunc ();
|
||||
|
@ -265,7 +265,7 @@ pinfo::init (pid_t n, DWORD flag, HANDLE in_h)
|
||||
else if (!(flag & PID_EXECED))
|
||||
{
|
||||
procinfo->pid = n;
|
||||
procinfo->exitcode = SIGTERM;
|
||||
procinfo->exitcode = EXITCODE_UNSET;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -702,6 +702,12 @@ proc_waiter (void *arg)
|
||||
/* Child exited. Do some cleanup and signal myself. */
|
||||
CloseHandle (vchild.rd_proc_pipe);
|
||||
vchild.rd_proc_pipe = NULL;
|
||||
if (vchild->exitcode == EXITCODE_UNSET)
|
||||
{
|
||||
DWORD x;
|
||||
GetExitCodeProcess (vchild.hProcess, &x);
|
||||
vchild->exitcode = (x & 0xff) << 8;
|
||||
}
|
||||
if (WIFEXITED (vchild->exitcode))
|
||||
si.si_sigval.sival_int = CLD_EXITED;
|
||||
else if (WCOREDUMP (vchild->exitcode))
|
||||
|
@ -26,6 +26,8 @@ enum picom
|
||||
PICOM_FIFO = 2
|
||||
};
|
||||
|
||||
#define EXITCODE_UNSET 0x80000000
|
||||
|
||||
class _pinfo
|
||||
{
|
||||
public:
|
||||
|
@ -798,13 +798,6 @@ child_info::sync (pinfo& vchild, DWORD howlong)
|
||||
case WAIT_OBJECT_0 + 1:
|
||||
if (WaitForSingleObject (subproc_ready, 0) == WAIT_OBJECT_0)
|
||||
sigproc_printf ("should never happen. noticed subproc_ready after process exit");
|
||||
else
|
||||
{
|
||||
DWORD exitcode = 0;
|
||||
(void) GetExitCodeProcess (vchild.hProcess, &exitcode);
|
||||
vchild->exitcode = (exitcode & 0xff) << 8;
|
||||
sigproc_printf ("non-cygwin exit value is %p", exitcode);
|
||||
}
|
||||
res = false;
|
||||
break;
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user