summaryrefslogtreecommitdiff
path: root/ACE/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ChangeLog')
-rw-r--r--ACE/ChangeLog24
1 files changed, 24 insertions, 0 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index 46db554c961..959cb0484ed 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,27 @@
+Thu Sep 14 21:48:39 UTC 2006 Steve Huston <shuston@riverace.com>
+
+ * ace/OS_NS_Thread.inl (thr_getspecific): Removed the ACE_Errno_Guard
+ around ::TlsGetValue() in the ACE_HAS_WTHREADS case. The comments
+ near the code said (paraphrasing) "...it was to protect against
+ ACE_Log_Msg::instance() overwriting the error value before it had a
+ chance to be logged; although ACE_ERROR et al already store the
+ error value before calling ACE_Log_Msg::instance(), there may be a
+ chance that other uses of ACE_Log_Msg don't protect this way."
+ I have a report that having the errno guard in place is taking
+ over 10% CPU during a customer system's run-time. This is way too
+ much to have in a hot path, especially for a mis-placed guard.
+ It seems a little random to be picking on ACE_OS::thr_getspecific()
+ when there are many more OS calls in the ACE_Log_Msg::instance()
+ call path.
+ If there are really cases outside of ACE_ERROR... et al, then the
+ guard should be worked into ACE_Log_Msg::instance() method. However,
+ rather than try that now, let's see if there are any real issues,
+ since OS-level calls should be setting errno when errors are
+ noticed, propagating from GetLastError() via
+ ACE_OS::set_errno_to_last_error () as needed.
+ Thanks to Kelly Hickel <kfh at mqsoftware dot com> for raising
+ this point.
+
Wed Sep 13 18:25:37 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
* ace/Bound_Ptr.h: