diff options
Diffstat (limited to 'Examples/py_mallocstk_example.txt')
-rw-r--r-- | Examples/py_mallocstk_example.txt | 314 |
1 files changed, 314 insertions, 0 deletions
diff --git a/Examples/py_mallocstk_example.txt b/Examples/py_mallocstk_example.txt new file mode 100644 index 0000000..a466737 --- /dev/null +++ b/Examples/py_mallocstk_example.txt @@ -0,0 +1,314 @@ +Following are examples of running py_mallocstk.d. This traces malloc() from +Python, printing byte distributions by user stack trace. + +Here we see the script runnin on the program Code/Python/func_abc.py + +# py_mallocstk.d -c ./func_abc.py + +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C + +Python malloc byte distributions by stack trace, + + + + libc.so.1`malloc + libpython2.4.so.1.0`r_object+0x52f + libpython2.4.so.1.0`r_object+0x491 + libpython2.4.so.1.0`r_object+0xd3 + libpython2.4.so.1.0`r_object+0x491 + libpython2.4.so.1.0`r_object+0xd3 + libpython2.4.so.1.0`r_object+0x491 + libpython2.4.so.1.0`r_object+0xd3 + libpython2.4.so.1.0`PyMarshal_ReadObjectFromString+0x36 + libpython2.4.so.1.0`PyMarshal_ReadLastObjectFromFile+0x6a + libpython2.4.so.1.0`read_compiled_module+0xf + libpython2.4.so.1.0`load_source_module+0x63 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xee + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyEval_CallObjectWithKeywords+0xb8 + libpython2.4.so.1.0`PyEval_EvalFrame+0xd3c + [ /usr/lib/python2.4/encodings/__init__.py:28 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`load_package+0xef + libpython2.4.so.1.0`load_module+0x6a + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`_PyCodecRegistry_Init+0xce + libpython2.4.so.1.0`_PyCodec_Lookup+0x2a + libpython2.4.so.1.0`PyCodec_Encoder+0xf + libpython2.4.so.1.0`Py_InitializeEx+0x257 + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + + libc.so.1`malloc + libpython2.4.so.1.0`_PyUnicode_New+0xb2 + libpython2.4.so.1.0`_PyUnicodeUCS2_Init+0x19 + libpython2.4.so.1.0`Py_InitializeEx+0x11c + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + + libc.so.1`malloc + libc.so.1`_real_gettext_u+0x81 + libc.so.1`dgettext+0x5e + libc.so.1`strerror+0x40 + libpython2.4.so.1.0`PyErr_SetFromErrnoWithFilenameObject+0x2d + libpython2.4.so.1.0`PyErr_SetFromErrnoWithFilename+0x27 + libpython2.4.so.1.0`posix_error_with_allocated_filename+0x17 + libpython2.4.so.1.0`posix_do_stat+0x21f + libpython2.4.so.1.0`posix_stat+0x1f + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`call_function+0x406 + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/posixpath.py:195 (isdir) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:202 (addsitepackages) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:382 (main) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:397 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyObject_CallFunction+0x90 + libpython2.4.so.1.0`PyImport_Import+0x163 + libpython2.4.so.1.0`PyImport_ImportModule+0x1f + libpython2.4.so.1.0`initsite+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0x1ea + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + +[... around 17000 lines truncated ...] + + + libc.so.1`malloc + libpython2.4.so.1.0`PyObject_Malloc+0x126 + libpython2.4.so.1.0`fixstate+0x26 + libpython2.4.so.1.0`fixdfa+0x2a + libpython2.4.so.1.0`PyGrammar_AddAccelerators+0x1b + libpython2.4.so.1.0`PyParser_New+0x18 + libpython2.4.so.1.0`parsetok+0x17 + libpython2.4.so.1.0`PyParser_ParseStringFlagsFilename+0x72 + libpython2.4.so.1.0`PyParser_ParseStringFlags+0x1c + libpython2.4.so.1.0`PyParser_SimpleParseStringFlags+0x23 + libpython2.4.so.1.0`PyRun_StringFlags+0x2c + libpython2.4.so.1.0`builtin_eval+0x273 + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`call_function+0x406 + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/os.py:503 (_exists) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/os.py:509 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyEval_CallObjectWithKeywords+0xb8 + libpython2.4.so.1.0`PyEval_EvalFrame+0xd3c + [ /usr/lib/python2.4/site.py:58 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyObject_CallFunction+0x90 + libpython2.4.so.1.0`PyImport_Import+0x163 + libpython2.4.so.1.0`PyImport_ImportModule+0x1f + libpython2.4.so.1.0`initsite+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0x1ea + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 331 + 1024 | 0 + + + libc.so.1`malloc + libpython2.4.so.1.0`new_arena+0x13 + libpython2.4.so.1.0`PyObject_Malloc+0x91 + libpython2.4.so.1.0`string_concat+0x109 + libpython2.4.so.1.0`PyString_Concat+0x3b + libpython2.4.so.1.0`string_concatenate+0x150 + libpython2.4.so.1.0`PyEval_EvalFrame+0x27cc + [ /usr/lib/python2.4/posixpath.py:62 (join) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`function_call+0x15e + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`ext_do_call+0xfb + libpython2.4.so.1.0`PyEval_EvalFrame+0xb4f + [ /usr/lib/python2.4/site.py:66 (makepath) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:138 (addpackage) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:166 (addsitedir) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ <string>:1 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + libpython2.4.so.1.0`run_err_node+0x1f + libpython2.4.so.1.0`PyRun_String+0x27 + libpython2.4.so.1.0`exec_statement+0x2b0 + libpython2.4.so.1.0`PyEval_EvalFrame+0x15d6 + [ /usr/lib/python2.4/site.py:134 (addpackage) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:166 (addsitedir) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:203 (addsitepackages) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:382 (main) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:397 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyObject_CallFunction+0x90 + libpython2.4.so.1.0`PyImport_Import+0x163 + libpython2.4.so.1.0`PyImport_ImportModule+0x1f + libpython2.4.so.1.0`initsite+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0x1ea + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + + libc.so.1`malloc + libpython2.4.so.1.0`new_arena+0x13 + libpython2.4.so.1.0`PyObject_Malloc+0x91 + libpython2.4.so.1.0`_PyObject_GC_Malloc+0x13 + libpython2.4.so.1.0`_PyObject_GC_NewVar+0x24 + libpython2.4.so.1.0`PyTuple_New+0x78 + libpython2.4.so.1.0`PyType_Ready+0x98 + libpython2.4.so.1.0`PyType_Ready+0x60 + libpython2.4.so.1.0`_Py_ReadyTypes+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0xed + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + +This output looks a little unusual at first glance, and can be confusing for +people unfamiliar with stack tracing and Python engine internals. + +Start by looking at the distribution plots below each stack trace - each plot +shows how many bytes were requested as a histogram by byte size. This should +indicated to you if python is malloc()ing much memory or not, and whether it +is doing so in a few large malloc()s or many small ones. + +With this information in mind you can inspect the stack traces - these explain +why Python called malloc() in that instance, along with translations of Python +functions buried in the stack trace. The stack traces can be hard to read at +first (or even at second or at third) - since you are examining Python engine +internals. Try looking for lines in square brackets - those are Python language +frames, and will show where (or if) the malloc() was caused by Python code. |