Summary: | ACE_Service_Config TSS usage: Improper TSS usage/memory management | ||
---|---|---|---|
Product: | ACE | Reporter: | Patrick Bennett <patrick.bennett> |
Component: | ACE Core | Assignee: | DOC Center Support List (internal) <tao-support> |
Status: | RESOLVED DUPLICATE | ||
Severity: | critical | CC: | iliyan, seibel_r |
Priority: | P3 | ||
Version: | 5.5.7 | ||
Hardware: | x86 | ||
OS: | Windows XP | ||
Bug Depends on: | |||
Bug Blocks: | 2980 |
Description
Patrick Bennett
2007-06-22 16:19:02 CDT
changed severity So something in ACE that causes a crash 100% of the time is a 'normal' severity? Right... I've changed the severity to Critical, but lowered the priority to P3 (average). These fields reflect the view from the DOC group as to how to prioritize the set of outstanding issues. Please see http://www.cs.wustl.edu/~schmidt/TAO-support.html for more information. Patrick, do you have any patches already made local to resolve this problem? My hack only works under Windows, and won't address other platforms as this is a fundamental design flaw with using TSS (which is designed to own its objects) like this. I just hacked around it to fix it (again, under Windows) by changing the DllMain function in OS_NS_stdio.cpp: extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID) { ... else if (reason == DLL_THREAD_DETACH) { // Make sure ACE_Service_Config's thread local storage 'this' pointer is // cleared, otherwise it will be deleted by the cleanup_tss // methods, thus removing an instance that was actually // allocated as an aggregate within an ACE_Singleton, // and not individually via new - IOW: // crash.. ACE_Service_Config::current(0); ACE_OS::cleanup_tss (0); } ... Iliyan, can you give your ideas on this issue, you added the call in the destructor some months agao *** This bug has been marked as a duplicate of bug 2980 *** major reworked in the upcoming x.6.4 |