Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreutarass2009-09-20 05:13:09 +0000
committereutarass2009-09-20 05:13:09 +0000
commit7dca638d516bd603b149d7f76dff8c532d07ed1d (patch)
tree98a7c31685c522e4b2480c284670841958efc5f0
parent053c77bc61ed569b64bbbee0435f48c88f820aa7 (diff)
downloadorg.eclipse.tcf.agent-7dca638d516bd603b149d7f76dff8c532d07ed1d.tar.gz
org.eclipse.tcf.agent-7dca638d516bd603b149d7f76dff8c532d07ed1d.tar.xz
org.eclipse.tcf.agent-7dca638d516bd603b149d7f76dff8c532d07ed1d.zip
TCF Agent: Fixed: asynchronous I/O operation AsyncReqWaitpid can return wrong error code. As result, the agent can cause high CPU utilization when it is supposed to be idle.
-rw-r--r--asyncreq.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/asyncreq.c b/asyncreq.c
index 8f458074..b74153b7 100644
--- a/asyncreq.c
+++ b/asyncreq.c
@@ -121,7 +121,7 @@ static void * worker_thread_handler(void * x) {
break;
case AsyncReqConnect: /* Connect to socket */
- req->u.acc.rval = connect(req->u.con.sock, req->u.con.addr, req->u.con.addrlen);
+ req->u.con.rval = connect(req->u.con.sock, req->u.con.addr, req->u.con.addrlen);
if (req->u.con.rval == -1) {
req->error = errno;
assert(req->error);
@@ -134,7 +134,7 @@ static void * worker_thread_handler(void * x) {
#else
case AsyncReqWaitpid: /* Wait for process change */
req->u.wpid.rval = waitpid(req->u.wpid.pid, &req->u.wpid.status, req->u.wpid.options);
- if (req->u.con.rval == -1) {
+ if (req->u.wpid.rval == -1) {
req->error = errno;
assert(req->error);
}
@@ -147,7 +147,7 @@ static void * worker_thread_handler(void * x) {
tv.tv_usec = req->u.select.timeout.tv_nsec / 1000;
req->u.select.rval = select(req->u.select.nfds, &req->u.select.readfds,
&req->u.select.writefds, &req->u.select.errorfds, &tv);
- if (req->u.con.rval == -1) {
+ if (req->u.select.rval == -1) {
req->error = errno;
assert(req->error);
}

Back to the top