Created
August 1, 2015 16:07
-
-
Save abinashmeher999/7f4935459b334b7f8353 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| *** | |
| *** 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