Merge pull request #2309 from mitza-oci/warnings
[ACE_TAO.git] / TAO / tests / Bug_2654_Regression / README
blobd89b7883e690889414ca04ab1066469bce908aea
1 /**
5 @page Bug_2654_Regression README File
7 This test is for Bug 2654. Since bug 2654 is very difficult to
8 reproduce with an ordinary TAO build, hooks have been added to
9 tao/IIOP_Connector.cpp to enable slight delays durring the connection
10 process. See the bugzilla entry for more details. Enable the
11 INDUCE_BUG_2654_A flag and disable the fix (find "Fix for bug 2654")
12 in IIOP_Connector.cpp to see a pure virtual call. Otherwise the test
13 should always run to completion.
15 The essense of this test is the relationship between reference counted
16 ACE_Event_Handlers and the entities that refer to them. During the
17 development of the fix for bug 2654, the
18 ACE_Event_Handler::[add|remove]_reference methods were modified to
19 take the name of a calling function as a string and to print out the
20 current count as well as the identity of the caller. The following
21 code shows how this was done. Obviously all code that called add or
22 remove ref had to be modified to pass the caller name.
24 ACE_Event_Handler::Reference_Count
25 ACE_Event_Handler::add_reference (const char * caller)
27   int reference_counting_required =
28     this->reference_counting_policy ().value () ==
29     ACE_Event_Handler::Reference_Counting_Policy::ENABLED;
31   if (reference_counting_required)
32     {
33       Reference_Count result =
34         ++this->reference_count_;
35       ACE_DEBUG ((LM_DEBUG,"(%P|%t)EH[0x%x]::add_ref called by %s, now %d\n",
36                   this,caller, result));
37       return result;
38     }
39   else
40     return 1;
43 ACE_Event_Handler::Reference_Count
44 ACE_Event_Handler::remove_reference (const char * caller)
46   int reference_counting_required =
47     this->reference_counting_policy ().value () ==
48     ACE_Event_Handler::Reference_Counting_Policy::ENABLED;
50   if (reference_counting_required)
51     {
52       Reference_Count result =
53         --this->reference_count_;
54       ACE_DEBUG ((LM_DEBUG,
55                   "(%P|%t)EH[0x%x]::remove_ref called by %s, now %d\n",
56                   this, caller, result));
58       if (result == 0)
59         delete this;
61       return result;
62     }
63   else
64     {
65       return 1;
66     }
69 To run the test use the run_test.pl script:
71 $ ./run_test.pl
73         the script returns 0 if the test was successful.