|
From: Leeland A. <la...@re...> - 2011-11-08 16:55:32
|
Hello Adam,
I inherited this issue and am a total newbie for OpenDDS. I am reading up
on ACE and OpenDDS. So I might be wrong on my answers.
> Let's hear a bit more about how you're using it. In particular, are you
using any non-default QoS policies?
For QoS policies there is a setting for:
DDS::TopicQos durable_qos;
dp_->get_default_topic_qos(durable_qos);
//Changing durability.kind from DDS::VOLATILE_DURABILITY_QOS to
DDS::RELIABLE_RELIABILITY_QOS
//because we were losing some data in high load.
//Might want to set LIFESPAN? to limit the number of message
//durable_qos.durability.kind = DDS::VOLATILE_DURABILITY_QOS;
durable_qos.reliability.kind = DDS::RELIABLE_RELIABILITY_QOS;
durable_qos.reliability.max_blocking_time.sec = 10;
durable_qos.reliability.max_blocking_time.nanosec = 0;
DDS::Topic_var topic = dp_->create_topic(topic_name,
type_id(topic_type).c_str(),
durable_qos,
DDS::TopicListener::_nil(),
OpenDDS::DCPS::DEFAULT_STATUS_MASK);
// [... some error code ...]
DDS::DataWriterQos dw_qos;
pub_->get_default_datawriter_qos(dw_qos);
pub_->copy_from_topic_qos(dw_qos, durable_qos);
dw_qos.history.kind = DDS::KEEP_ALL_HISTORY_QOS;
dw_qos.resource_limits.max_samples = DDS::LENGTH_UNLIMITED; //This is the
default, just calling it out
dw_qos.resource_limits.max_instances = DDS::LENGTH_UNLIMITED; //This is
the default, just calling it out
dw_qos.resource_limits.max_samples_per_instance = DDS::LENGTH_UNLIMITED;
//This is the default, just calling it out
DDS::DataWriter_var dw =
pub_->create_datawriter(topic,
//DATAWRITER_QOS_USE_TOPIC_QOS,
dw_qos,
use_fault_tolerance ? ft_manager_ : 0,
OpenDDS::DCPS::DEFAULT_STATUS_MASK);
> The comment in the IDL snippet indicates that "id_" is the key field, is
that right?
Not 100% sure but I think so too.
> Are you registering and/or disposing any instances? How many instances
are alive?
> (My guess is that OpenDDS is intentionally keeping that memory to manage
the various instances).
I am unsure how to figure this out. I think there is one instance created
per connection and I managed to reproduce this memory leak like behavior in
a lab environment I created where this is one publisher and one subscriber.
Maybe we can IM chat on this if you are willing.
+ Leeland
*From:* Adam Mitz [mailto:mi...@oc...]
*Sent:* Tuesday, November 08, 2011 7:24 AM
*To:* ope...@li...
*Subject:* Re: [opendds-main] Possible memory leak in v 2.3-RT14855-1
Hi Leeland,
On 11/7/2011 8:31 PM, Leeland Artra wrote:
Hello,
We are using OpenDDS version 2.3-RT14855-1, on Ubuntu 10.04.3.
We have discovered what looks like a memory leak in the OpenDDS generated
code for DCS_DataTypeSupportImpl.cpp. For various certification reasons
moving up to the current version of OpenDDS isn’t an option for at least 6
months.
I suspect we just might not be using the library correctly. I would greatly
appreciate any pointers or ideas.
Let's hear a bit more about how you're using it. In particular, are you
using any non-default QoS policies?
The comment in the IDL snippet indicates that "id_" is the key field, is
that right? Are you registering and/or disposing any instances? How many
instances are alive? (My guess is that OpenDDS is intentionally keeping
that memory to manage the various instances).
Thanks,
Adam Mitz
Senior Software Engineer
Object Computing, Inc.
|