[omniORB] Client side leak in release build using CORBA::any

David Hyde davidh@cavendish.co.uk
Mon, 25 Mar 2002 11:13:56 -0000


Hi,

I'm using omniORB 3.0.2 on Windows 2000 with VC++ 6.0.

My server code looks like this:

//IDL
struct LogMessage
{
	IA_EV_TYPE sType;
	string strmessage;
	string strloglevel;
	long lPid;
	unsigned long tTime;
};


Server function:
{
	CORBA::Any any;
	LogMessage Log;

	Log.sType =3D ev_log;
	Log.strmessage=3DstrMessage;
	Log.strloglevel=3DstrLogLevel;
	Log.lPid=3DlPID;
	Log.tTime =3D Time.Seconds();

	//transmit the message across to the channel
	any <<=3D Log;

	push(any);
}

I've reduce my client code to this:

virtual void push(const CORBA::Any& data)
{
};

Even with the client doing nothing the release build leaks memory like =
a
sieve every time the data is pushed to it.  We're talking 20 - 40k =
every few
seconds with messages being constantly produced.  The debug build is =
fine.

If I comment out the line that puts the Log structure into the any in =
the
server code then about 4k is leaked every so often but not as =
frequently.

What I find to be slightly curious is that the data is passing from =
server
to client through an event service (one that I wrote).  The event =
service
does nothing with the data except pass it through, but it does not leak
memory.

Does anyone know anything about this?

Thanks very much.

David


David Hyde
Designer
Cavendish
Admiral House, St Leonards Road
Windsor, Berkshire, SL4 3BL
United Kingdom

Tel:  +44 (0) 1753 836600
DDI: +44 (0) 1753 836619
Fax: +44 (0) 1753 855021

Web: www.cavendish.co.uk <http://www.cavendish.co.uk/>


This email is copyright =A92002  The Cavendish Organisation Ltd. All =
Rights
Reserved. The content of the email is confidential and only for =
disclosure
to the intended recipient(s). This email does not constitute a formal =
order,
instruction or statement on behalf of the company.