• [tao-users] CORBA::ORB_init leaks memory?

    From =?UTF-8?Q?Patryk_Ma=C5=82ek?=@21:1/5 to tao-users on Fri Oct 16 10:03:59 2015
    --047d7b2e4208e8f3270522343c62
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    Hello,

    I have a system using ace+tao (2.1.5. + 6.1.5) and I have a problem with CORBA::ORB_init that leaks memory. valgrind stacktrace:


    ==1174== 808 bytes in 1 blocks are possibly lost in loss record 192 of 214 ==1174== at 0x4A07982: operator new[](unsigned long) (vg_replace_malloc.c:389)
    ==1174== by 0x3C726EF681: ACE_Array_Map<ACE_String_Base<char>, ACE_String_Base<char>, std::equal_to<ACE_String_Base<char> > >::ACE_Array_Map(unsigned long) (Array_Map.inl:13)
    ==1174== by 0x3C726F1CFA: TAO_ORB_Parameters::TAO_ORB_Parameters() (params.cpp:68)
    ==1174== by 0x3C726EE78A: TAO_ORB_Core::TAO_ORB_Core(char const*, ACE_Intrusive_Auto_Ptr<ACE_Service_Gestalt>) (ORB_Core.cpp:268)
    ==1174== by 0x3C726E45CF: CORBA::ORB_init(int&, char**, char const*) (ORB.cpp:1290)
    ==1174== by 0x4B8E98: InterfaceThread::init() (InterfaceThread.cpp:598) ==1174== by 0x4B81D9: InterfaceThread::run() (InterfaceThread.cpp:523) ==1174== by 0x579384D: Thread::exec() (Thread.cpp:51)
    ==1174== by 0x5793781: Thread::execThread_(void*) (Thread.cpp:37)
    ==1174== by 0x37382077F0: start_thread (in /lib64/libpthread-2.12.so) ==1174== by 0x3737EE570C: clone (in /lib64/libc-2.12.so)
    ==1174==
    ==1174== 20,488 bytes in 1 blocks are possibly lost in loss record 211 of
    214
    ==1174== at 0x4A07982: operator new[](unsigned long) (vg_replace_malloc.c:389)
    ==1174== by 0x3C726EF681: ACE_Array_Map<ACE_String_Base<char>, ACE_String_Base<char>, std::equal_to<ACE_String_Base<char> > >::ACE_Array_Map(unsigned long) (Array_Map.inl:13)
    ==1174== by 0x3C726EE7A3: TAO_ORB_Core::TAO_ORB_Core(char const*, ACE_Intrusive_Auto_Ptr<ACE_Service_Gestalt>) (ORB_Core.cpp:268)
    ==1174== by 0x3C726E45CF: CORBA::ORB_init(int&, char**, char const*) (ORB.cpp:1290)
    ==1174== by 0x4B8E98: InterfaceThread::init() (InterfaceThread.cpp:598) ==1174== by 0x4B81D9: InterfaceThread::run() (InterfaceThread.cpp:523) ==1174== by 0x579384D: Thread::exec() (Thread.cpp:51)
    ==1174== by 0x5793781: Thread::execThread_(void*) (Thread.cpp:37)
    ==1174== by 0x37382077F0: start_thread (in /lib64/libpthread-2.12.so) ==1174== by 0x3737EE570C: clone (in /lib64/libc-2.12.so)
    ==1174==
    ==1174== 32,776 bytes in 1 blocks are possibly lost in loss record 213 of
    214
    ==1174== at 0x4A06E7C: operator new[](unsigned long, std::nothrow_t
    const&) (vg_replace_malloc.c:420)
    ==1174== by 0x3C72328141:
    ACE_Notification_Queue::allocate_more_buffers() (Notification_Queue.cpp:83) ==1174== by 0x3C7232884F: ACE_Notification_Queue::open() (Notification_Queue.cpp:38)
    ==1174== by 0x3C723509EB:
    ACE_Select_Reactor_Notify::open(ACE_Reactor_Impl*, ACE_Abstract_Timer_Queue<ACE_Event_Handler*>*, int) (Select_Reactor_Base.cpp:619)
    ==1174== by 0x3C7236E667: ACE_Select_Reactor_T<ACE_Reactor_Token_T<ACE_Token> >::open(unsigned long, bool, ACE_Sig_Handler*, ACE_Abstract_Timer_Queue<ACE_Event_Handler*>*, int, ACE_Reactor_Notify*) [clone .clone.3] (Select_Reactor_T.cpp:424)
    ==1174== by 0x3C7236EAB0: ACE_Select_Reactor_T (Select_Reactor_T.cpp:549) ==1174== by 0x3C7236EAB0: ACE_TP_Reactor::ACE_TP_Reactor(unsigned long, bool, ACE_Sig_Handler*, ACE_Abstract_Timer_Queue<ACE_Event_Handler*>*,
    bool, int) (TP_Reactor.cpp:114)
    ==1174== by 0x3C726A2A57: TAO_Default_Resource_Factory::allocate_reactor_impl() const (default_resource.cpp:768)
    ==1174== by 0x3C726A2903: TAO_Default_Resource_Factory::get_reactor() (default_resource.cpp:786)
    ==1174== by 0x3C726CF7EE: TAO_Leader_Follower::reactor() (Leader_Follower.cpp:152)
    ==1174== by 0x3C726EC533: TAO_ORB_Core::init(int&, char**) (ORB_Core.cpp:1249)
    ==1174== by 0x3C726E47C9: CORBA::ORB_init(int&, char**, char const*) (ORB.cpp:1355)
    ==1174== by 0x4B8E98: InterfaceThread::init() (InterfaceThread.cpp:598)


    orb is of type CORBA::ORB_var;

    ​InterfaceThread.cpp:598 orb = CORBA::ORB_init(argc, argv);​

    then in InterafceThread destructor I release it:

    if (CORBA::is_nil(orb.in()) == false) {
    orb->shutdown(1);
    orb->destroy();
    CORBA::release(orb);
    orb = CORBA::ORB::_nil();
    }

    ​I do not know what is the problem here. Can anyone help me here? I have tried to dig in forums but I encounter 14 year old threads :)​


    --

    kind regards, pozdrawiam,
    Patryk Małek

    --047d7b2e4208e8f3270522343c62
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <div dir="ltr"><div class="gmail_default" style="font-size:small">Hello,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I have a system using ace+tao (2.1.5. + 6.1.5) and I have a
    problem with CORBA::ORB_init that leaks memory. valgrind stacktrace:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><div
    class="gmail_default"><font face="monospace, monospace">==1174== 808 bytes in 1 blocks are possibly lost in loss record 192 of 214</font></div><div class="gmail_default"><font face="monospace, monospace">==1174==    at 0x4A07982: operator new[](
    unsigned long) (vg_replace_malloc.c:389)</font></div><div class="gmail_default"><font face="monospa
  • From Johnny Willemsen@21:1/5 to =?UTF-8?Q?Patryk_Ma=c5=82ek?= on Fri Oct 16 10:22:18 2015
    To: tao-users@list.isis.vanderbilt.edu (tao-users)

    Hi,

    Probably you are not releasing all CORBA references or made an error
    with the usage of var/ptr/duplicate. When you run the TAO/tests/Hello
    test you should see no valgrind leaks (at least it doesn't do with the
    latest micro). Try to just do a CORBA::init and a shutdown, that should
    be leak free.

    Johnny

    On 10/16/2015 10:03 AM, Patryk Małek wrote:
    Hello,

    I have a system using ace+tao (2.1.5. + 6.1.5) and I have a problem with CORBA::ORB_init that leaks memory. valgrind stacktrace:


    ==1174== 808 bytes in 1 blocks are possibly lost in loss record 192 of 214 ==1174== at 0x4A07982: operator new[](unsigned long) (vg_replace_malloc.c:389)
    ==1174== by 0x3C726EF681: ACE_Array_Map<ACE_String_Base<char>, ACE_String_Base<char>, std::equal_to<ACE_String_Base<char> >
    ::ACE_Array_Map(unsigned long) (Array_Map.inl:13)
    ==1174== by 0x3C726F1CFA: TAO_ORB_Parameters::TAO_ORB_Parameters() (params.cpp:68)
    ==1174== by 0x3C726EE78A: TAO_ORB_Core::TAO_ORB_Core(char const*, ACE_Intrusive_Auto_Ptr<ACE_Service_Gestalt>) (ORB_Core.cpp:268)
    ==1174== by 0x3C726E45CF: CORBA::ORB_init(int&, char**, char const*) (ORB.cpp:1290)
    ==1174== by 0x4B8E98: InterfaceThread::init() (InterfaceThread.cpp:598) ==1174== by 0x4B81D9: InterfaceThread::run() (InterfaceThread.cpp:523) ==1174== by 0x579384D: Thread::exec() (Thread.cpp:51)
    ==1174== by 0x5793781: Thread::execThread_(void*) (Thread.cpp:37)
    ==1174== by 0x37382077F0: start_thread (in /lib64/libpthread-2.12.so <http://libpthread-2.12.so>)
    ==1174== by 0x3737EE570C: clone (in /lib64/libc-2.12.so <http://libc-2.12.so>)
    ==1174==
    ==1174== 20,488 bytes in 1 blocks are possibly lost in loss record 211
    of 214
    ==1174== at 0x4A07982: operator new[](unsigned long) (vg_replace_malloc.c:389)
    ==1174== by 0x3C726EF681: ACE_Array_Map<ACE_String_Base<char>, ACE_String_Base<char>, std::equal_to<ACE_String_Base<char> >
    ::ACE_Array_Map(unsigned long) (Array_Map.inl:13)
    ==1174== by 0x3C726EE7A3: TAO_ORB_Core::TAO_ORB_Core(char const*, ACE_Intrusive_Auto_Ptr<ACE_Service_Gestalt>) (ORB_Core.cpp:268)
    ==1174== by 0x3C726E45CF: CORBA::ORB_init(int&, char**, char const*) (ORB.cpp:1290)
    ==1174== by 0x4B8E98: InterfaceThread::init() (InterfaceThread.cpp:598) ==1174== by 0x4B81D9: InterfaceThread::run() (InterfaceThread.cpp:523) ==1174== by 0x579384D: Thread::exec() (Thread.cpp:51)
    ==1174== by 0x5793781: Thread::execThread_(void*) (Thread.cpp:37)
    ==1174== by 0x37382077F0: start_thread (in /lib64/libpthread-2.12.so <http://libpthread-2.12.so>)
    ==1174== by 0x3737EE570C: clone (in /lib64/libc-2.12.so <http://libc-2.12.so>)
    ==1174==
    ==1174== 32,776 bytes in 1 blocks are possibly lost in loss record 213
    of 214
    ==1174== at 0x4A06E7C: operator new[](unsigned long, std::nothrow_t const&) (vg_replace_malloc.c:420)
    ==1174== by 0x3C72328141:
    ACE_Notification_Queue::allocate_more_buffers() (Notification_Queue.cpp:83) ==1174== by 0x3C7232884F: ACE_Notification_Queue::open() (Notification_Queue.cpp:38)
    ==1174== by 0x3C723509EB: ACE_Select_Reactor_Notify::open(ACE_Reactor_Impl*, ACE_Abstract_Timer_Queue<ACE_Event_Handler*>*, int) (Select_Reactor_Base.cpp:619)
    ==1174== by 0x3C7236E667: ACE_Select_Reactor_T<ACE_Reactor_Token_T<ACE_Token> >::open(unsigned
    long, bool, ACE_Sig_Handler*,
    ACE_Abstract_Timer_Queue<ACE_Event_Handler*>*, int, ACE_Reactor_Notify*) [clone .clone.3] (Select_Reactor_T.cpp:424)
    ==1174== by 0x3C7236EAB0: ACE_Select_Reactor_T (Select_Reactor_T.cpp:549) ==1174== by 0x3C7236EAB0: ACE_TP_Reactor::ACE_TP_Reactor(unsigned
    long, bool, ACE_Sig_Handler*,
    ACE_Abstract_Timer_Queue<ACE_Event_Handler*>*, bool, int) (TP_Reactor.cpp:114)
    ==1174== by 0x3C726A2A57: TAO_Default_Resource_Factory::allocate_reactor_impl() const (default_resource.cpp:768)
    ==1174== by 0x3C726A2903: TAO_Default_Resource_Factory::get_reactor() (default_resource.cpp:786)
    ==1174== by 0x3C726CF7EE: TAO_Leader_Follower::reactor() (Leader_Follower.cpp:152)
    ==1174== by 0x3C726EC533: TAO_ORB_Core::init(int&, char**) (ORB_Core.cpp:1249)
    ==1174== by 0x3C726E47C9: CORBA::ORB_init(int&, char**, char const*) (ORB.cpp:1355)
    ==1174== by 0x4B8E98: InterfaceThread::init() (InterfaceThread.cpp:598)


    orb is of type CORBA::ORB_var;

    ​InterfaceThread.cpp:598 orb = CORBA::ORB_init(argc, argv);​

    then in InterafceThread destructor I release it:

    if (CORBA::is_nil(orb.in <http://orb.in>()) == false) {
    orb->shutdown(1);
    orb->destroy();
    CORBA::release(orb);
    orb = CORBA::ORB::_nil();
    }

    ​I do not know what is the problem here. Can anyone help me here? I have tried to dig in forums but I encounter 14 year old threads :)​


    --

    kind regards, pozdrawiam,
    Patryk Małek




    _______________________________________________
    tao-users mailing list
    tao-users@list.isis.vanderbilt.edu http://list.isis.vanderbilt.edu/cgi-bin/mailman/listinfo/tao-users


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)