summaryrefslogtreecommitdiff
path: root/ACE
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2006-08-24 21:44:48 +0000
committerSteve Huston <shuston@riverace.com>2006-08-24 21:44:48 +0000
commitbb2e1f5e0acf91891b6a2b227934d02da0c3cb2b (patch)
tree55535f652f4036a5d50df6812511c84ceab12fcd /ACE
parent225794bfbdb7d3b4877e67fc58108f59288bc940 (diff)
downloadATCD-bb2e1f5e0acf91891b6a2b227934d02da0c3cb2b.tar.gz
ChangeLogTag:Thu Aug 24 21:40:24 UTC 2006 Steve Huston <shuston@riverace.com
Diffstat (limited to 'ACE')
-rw-r--r--ACE/ChangeLog13
-rw-r--r--ACE/tests/Process_Manual_Event_Test.cpp4
2 files changed, 15 insertions, 2 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index 4d1b161f115..e8bbbbf2abe 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,16 @@
+Thu Aug 24 21:40:24 UTC 2006 Steve Huston <shuston@riverace.com>
+
+ * tests/Process_Manual_Event_Test.cpp (acquire_release): Fixed a race
+ condition whereby while a parent and child were ping-ponging, it
+ was possible for one process to signal event1, wait on event2, then
+ signal event1 again before the other process could respond to
+ event1 being signaled and reset it. Thus, event1 was being reset
+ after the other process signaled it, ensuring a never-ending
+ wait at the end of the iterations. I changed the code to quickly
+ reset the event before printing the debug message, thereby closing
+ the window of opportunity a lot. But probably not completely
+ removing it... we'll have to see.
+
Thu Aug 24 16:40:54 UTC 2006 Steve Huston <shuston@riverace.com>
* ace/config-aix-4.x.h: Only need to set
diff --git a/ACE/tests/Process_Manual_Event_Test.cpp b/ACE/tests/Process_Manual_Event_Test.cpp
index b697743273b..638d519358a 100644
--- a/ACE/tests/Process_Manual_Event_Test.cpp
+++ b/ACE/tests/Process_Manual_Event_Test.cpp
@@ -97,8 +97,8 @@ acquire_release (void)
ACE_TEXT ("Failed acquiring pong")));
else
{
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P) Pong\n")));
event_pong.reset ();
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P) Pong\n")));
}
}
@@ -131,9 +131,9 @@ acquire_release (void)
ACE_TEXT ("Failed acquiring ping")));
else
{
+ event_ping.reset ();
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P) Ping\n")));
- event_ping.reset ();
}
event_pong.signal ();