Skip to content

Instantly share code, notes, and snippets.

@abinashmeher999
Created August 1, 2015 16:07
Show Gist options
  • Select an option

  • Save abinashmeher999/7f4935459b334b7f8353 to your computer and use it in GitHub Desktop.

Select an option

Save abinashmeher999/7f4935459b334b7f8353 to your computer and use it in GitHub Desktop.
***
*** Warning! The following Teuchos::RCPNode objects were created but have
*** not been destroyed yet. A memory checking tool may complain that these
*** objects are not destroyed correctly.
***
*** There can be many possible reasons that this might occur including:
***
*** a) The program called abort() or exit() before main() was finished.
*** All of the objects that would have been freed through destructors
*** are not freed but some compilers (e.g. GCC) will still call the
*** destructors on static objects (which is what causes this message
*** to be printed).
***
*** b) The program is using raw new/delete to manage some objects and
*** delete was not called correctly and the objects not deleted hold
*** other objects through reference-counted pointers.
***
*** c) This may be an indication that these objects may be involved in
*** a circular dependency of reference-counted managed objects.
***
0: RCPNode (map_key_void_ptr=0x3188200)
Information = {T=SymEngine::Symbol, ConcreteT=SymEngine::Symbol, p=0x3188200, has_ownership=1}
RCPNode address = 0x3188240
insertionNumber = 462
1: RCPNode (map_key_void_ptr=0x2df0310)
Information = {T=SymEngine::Symbol, ConcreteT=SymEngine::Symbol, p=0x2df0310, has_ownership=1}
RCPNode address = 0x2098890
insertionNumber = 480
NOTE: To debug issues, open a debugger, and set a break point in the function where
the RCPNode object is first created to determine the context where the object first
gets created. Each RCPNode object is given a unique insertionNumber to allow setting
breakpoints in the code. For example, in GDB one can perform:
1) Open the debugger (GDB) and run the program again to get updated object addresses
2) Set a breakpoint in the RCPNode insertion routine when the desired RCPNode is first
inserted. In GDB, to break when the RCPNode with insertionNumber==3 is added, do:
(gdb) b 'Teuchos::RCPNodeTracer::addNewRCPNode( [TAB] ' [ENTER]
(gdb) cond 1 insertionNumber==3 [ENTER]
3) Run the program in the debugger. In GDB, do:
(gdb) run [ENTER]
4) Examine the call stack when the program breaks in the function addNewRCPNode(...)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment