blob: df98c63f06d094427f99736b227bc6585398d4d5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
To: ciao-users@cs.wustl.edu
Subject: RTComponentServer: Session_Container::get_objref blocks
CIAO VERSION: 0.4.7
TAO VERSION : 1.4.7
ACE VERSION : 5.4.7
HOST MACHINE and OPERATING SYSTEM:
Intel(R) Pentium(R) D CPU 3.00GHZ
Microsoft Windows XP Professional Version 2002 Service Pack 2
COMPILER NAME AND VERSION (AND PATCHLEVEL):
Microsoft Visual C++ .NET 2003
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 13.10.3077
THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
specific file, simply state which one]:
#include "ace/config-win32.h"
THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
use a link to a platform-specific file, simply state which one
(unless this isn't used in this case, e.g., with Microsoft Visual
C++)]:
CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
ssl=0
qos=1
cidl=0
rwho=0
sctp=0
qt=1
AREA/CLASS/EXAMPLE AFFECTED:
CIAO/ciao/Session_Container::get_objref
DOES THE PROBLEM AFFECT:
COMPILATION?
No
LINKING?
No
EXECUTION?
Yes
OTHER (please specify)?
[Please indicate whether ACE/TAO/CIAO, your application, or both are affected.]
SYNOPSIS:
A call of Session_Container::get_objref blocks forever.
DESCRIPTION:
I'm running two clients simultaneously callings the methods acquireSession
and releaseSession of the CORBA component TSEC_CheckPoint ( please see
sample code in TSEC_CheckPoint_exec.cpp lines 233... and 283... and also
controller.cpp line 150... ) configured with realtime policies. After the
start of the second client the component TSEC_CheckPoint blocks in the
method Session_Container::get_objref ( please see the log file
DebuggerCallStack.log ).
The serious code line of TSEC_CheckPoint_exec.cpp is:
CORBA::Object_var obj = this->getObjRef( p_sessionImpl) ;
If only one client is calling acquireSession every thing works fine.
But if I start a second client which is calling acquireSession then the
block happens.
I'm using the patch from 20051612 for the files
Container_Base.cpp and Container_Base.h which I merge with the CIAO
version 047.
If i use CIAO version < 043 everythings works fine with no blocks.
REPEAT BY:
Please build the sample code:
- cd interfaces
- mwc.pl -type nmake
- nmake realclean clean depend all
- touch *.idl
- nmake
- cd SEC_CheckPoint
- mwc.pl -type nmake
- nmake realclean clean depend all
Please run the sample:
- cd descriptors
- start_da.bat
- start_am.bat
- start_test.bat
- start_testcase_1.bat
- start_testcase_2.bat
SAMPLE FIX/WORKAROUND:
[If available ]
|