[ 
https://issues.apache.org/jira/browse/DISPATCH-848?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17480583#comment-17480583
 ] 

ASF GitHub Bot commented on DISPATCH-848:
-----------------------------------------

jiridanek commented on pull request #1052:
URL: https://github.com/apache/qpid-dispatch/pull/1052#issuecomment-1019454006


   One more, it looks like they are exceedingly rare, but quite devastating
   
   ```
   36: E           Process 163489 error: exit code 1, expected 0
   36: E           qdrouterd -c INT.B.conf -I 
/home/jdanek/repos/qpid/qpid-dispatch/python
   36: E           
/home/jdanek/repos/qpid/qpid-dispatch/cmake-build-debug-asan/tests/system_test.dir/system_tests_interior_sync_up/RouterTest/setUpClass/INT.B-2.cmd
   36: E           >>>>
   36: E           AddressSanitizer:DEADLYSIGNAL
   36: E           
=================================================================
   36: E           ==163489==ERROR: AddressSanitizer: SEGV on unknown address 
(pc 0x7f631709656b bp 0x7fff5541b8a0 sp 0x7fff5541b870 T0)
   36: E           ==163489==The signal is caused by a READ memory access.
   36: E           ==163489==Hint: this fault was caused by a dereference of a 
high value address (see register values below).  Dissassemble the provided pc 
to learn which register was used.
   36: E               #0 0x7f631709656b in PyVectorcall_Function.lto_priv.5 
(/lib64/libpython3.10d.so.1.0+0x12f56b)
   36: E               #1 0x7f63170966e1 in 
_PyObject_VectorcallTstate.lto_priv.5 (/lib64/libpython3.10d.so.1.0+0x12f6e1)
   36: E               #2 0x7f6317097df8 in _PyObject_CallFunctionVa 
(/lib64/libpython3.10d.so.1.0+0x130df8)
   36: E               #3 0x7f6317097f49 in PyObject_CallFunction 
(/lib64/libpython3.10d.so.1.0+0x130f49)
   36: E               #4 0x578623 in qd_io_rx_handler 
/home/jdanek/repos/qpid/qpid-dispatch/src/python_embedded.c:669
   36: E               #5 0x612162 in qdr_forward_on_message 
/home/jdanek/repos/qpid/qpid-dispatch/src/router_core/forwarder.c:335
   36: E               #6 0x64c6cb in qdr_general_handler 
/home/jdanek/repos/qpid/qpid-dispatch/src/router_core/router_core.c:952
   36: E               #7 0x6383fe in qdr_core_free 
/home/jdanek/repos/qpid/qpid-dispatch/src/router_core/router_core.c:272
   36: E               #8 0x6d28e2 in qd_router_free 
/home/jdanek/repos/qpid/qpid-dispatch/src/router_node.c:2165
   36: E               #9 0x4ffbdd in qd_dispatch_free 
/home/jdanek/repos/qpid/qpid-dispatch/src/dispatch.c:375
   36: E               #10 0x7067a9 in main_process 
/home/jdanek/repos/qpid/qpid-dispatch/router/src/main.c:119
   36: E               #11 0x708607 in main 
/home/jdanek/repos/qpid/qpid-dispatch/router/src/main.c:369
   36: E               #12 0x7f631639255f in __libc_start_call_main 
(/lib64/libc.so.6+0x2d55f)
   36: E               #13 0x7f631639260b in __libc_start_main_impl 
(/lib64/libc.so.6+0x2d60b)
   36: E               #14 0x42c2e4 in _start 
(/home/jdanek/repos/qpid/qpid-dispatch/cmake-build-debug-asan/router/qdrouterd+0x42c2e4)
   36: E           
   36: E           AddressSanitizer can not provide additional info.
   36: E           SUMMARY: AddressSanitizer: SEGV 
(/lib64/libpython3.10d.so.1.0+0x12f56b) in PyVectorcall_Function.lto_priv.5
   36: E           ==163489==ABORTING
   36: E           <<<<
   36: 
   36: /home/jdanek/repos/qpid/qpid-dispatch/tests/system_test.py:788: 
RuntimeError
   36: =========================== short test summary info 
============================
   36: ERROR ::RouterTest::test_interior_sync_up - RuntimeError: Errors during 
teard...
   36: !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures 
!!!!!!!!!!!!!!!!!!!!!!!!!!!
   36: ========================= 1 passed, 1 error in 39.23s 
==========================
       Test #36: system_tests_interior_sync_up ....***Failed   40.18 sec
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Direct leak of 48 byte(s) in 1 object(s) allocated from qdr_core_subscribe in 
> router_core/route_tables.c:149
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: DISPATCH-848
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-848
>             Project: Qpid Dispatch
>          Issue Type: Bug
>          Components: Tests
>    Affects Versions: 1.1.0
>         Environment: Git tip of Proton and Dtspatch, commit hashes follow
> {noformat}
> commit aece4ad2f4e4eb2d141020c59c393a30a79f53a9 (upstream/master)
> Author: Andrew Stitcher <astitc...@apache.org>
>     PROTON-1609: Fix C++ example flags
> {noformat}
> {noformat}
> commit 18c5f8d6293de4227c8c17ef08675cb4eaef689c (HEAD -> master, 
> upstream/master)
> Author: Ganesh Murthy <gmur...@redhat.com>
>     NO-JIRA - Removed accidental printf inclusion
> {noformat}
>            Reporter: Jiri Daněk
>            Priority: Minor
>              Labels: memory-bug
>             Fix For: Backlog
>
>         Attachments: LSan.supp
>
>
> Compile Proton and Dispatch with the Address Sanitizer option (c.f. 
> DISPATCH-809) and run ctest
> {noformat}
> # proton
> cmake .. -DBUILD_GO=OFF -DENABLE_SANITIZERS=ON 
> -DCMAKE_INSTALL_PREFIX=../install_asan -DCMAKE_BUILD_TYPE=Release -GNinja
> {noformat}
> {noformat}
> # dispatch
> cmake .. -DUSE_SANITIZERS=ON 
> -DProton_DIR=`pwd`/../../qpid-proton/install_asan/lib64/cmake/Proton/ 
> -DCMAKE_BUILD_TYPE=Release -GNinja
> LD_PRELOAD=/nix/store/zahs1kwq4742f6l6h7yy4mdj44zzc1kd-gcc-7-20170409-lib/lib/libasan.so
>  ASAN_OPTIONS=symbolize=1,color=always 
> LSAN_OPTIONS=suppressions=`pwd`/../../qpid-proton/LSan.supp 
> PYTHONPATH=`pwd`/../../qpid-proton/install_asan/lib64/proton/bindings/python 
> LD_LIBRARY_PATH=`pwd`/../../qpid-proton/install_asan/lib64 ctest -VV
> {noformat}
> {noformat}
> [...]
> 9: Test Case parse_tree_tests.test_matches: PASS
> 9: Test Case parse_tree_tests.test_multiple_matches: PASS
> 9: 
> 9: =================================================================
> 9: ==25904==ERROR: LeakSanitizer: detected memory leaks
> 9: 
> 9: Direct leak of 48 byte(s) in 1 object(s) allocated from:
> 9:     #0 0x7fb5442cb050 in __interceptor_malloc 
> (/nix/store/zahs1kwq4742f6l6h7yy4mdj44zzc1kd-gcc-7-20170409-lib/lib/libasan.so+0xd9050)
> 9:     #1 0x7fb543dd94fe in qdr_core_subscribe 
> ../src/router_core/route_tables.c:149
> 9:     #2 0x7fb543d89ff0 in IoAdapter_init ../src/python_embedded.c:548
> 9:     #3 0x7fb542ba8ecd in type_call 
> (/nix/store/1snk2wkpv97an87pk1842fgskl1vqhkr-python-2.7.14/lib/libpython2.7.so.1.0+0x9fecd)
> 9: 
> 9: -----------------------------------------------------
> 9: Suppressions used:
> 9:   count      bytes template
> 9:    1310    2021760 dictresize
> 9:     204     188272 _PyObject_GC_Malloc
> 9:      45      39369 PyString_FromStringAndSize
> 9:     308      15056 list_resize
> 9:      11       9784 PyString_FromString
> 9:       2       1280 _PyObject_GC_Resize
> 9:    1035      24104 PyList_New
> 9:      14        672 s_init
> 9:       1         32 PyThread_allocate_lock
> 9:      11      11097 type_new
> 9:       3       3984 unicode_resize
> 9:     179     204712 _PyUnicode_New.part.8
> 9:      11       8028 PyObject_Realloc
> 9:      37        120 _ctypes_alloc_format_string
> 9:       3      24576 set_table_resize
> 9: -----------------------------------------------------
> 9: 
> 9: SUMMARY: AddressSanitizer: 48 byte(s) leaked in 1 allocation(s).
>  9/36 Test  #9: unit_tests ................................***Failed    0.21 
> sec
> {noformat}
> The relevant functions are
> {code}
> static int IoAdapter_init(IoAdapter *self, PyObject *args, PyObject *kwds)
> {
>     PyObject *addr;
>     char aclass    = 'L';
>     char phase     = '0';
>     int  treatment = QD_TREATMENT_ANYCAST_CLOSEST;
>     if (!PyArg_ParseTuple(args, "OO|cci", &self->handler, &addr, &aclass, 
> &phase, &treatment))
>         return -1;
>     if (!PyCallable_Check(self->handler)) {
>         PyErr_SetString(PyExc_TypeError, "IoAdapter.__init__ handler is not 
> callable");
>         return -1;
>     }
>     if (treatment == QD_TREATMENT_ANYCAST_BALANCED) {
>         PyErr_SetString(PyExc_TypeError, "IoAdapter: ANYCAST_BALANCED is not 
> supported for in-process subscriptions");
>         return -1;
>     }
>     Py_INCREF(self->handler);
>     self->qd   = dispatch;
>     self->core = qd_router_core(self->qd);
>     const char *address = PyString_AsString(addr);
>     if (!address) return -1;
>     qd_error_clear();
>     self->sub = qdr_core_subscribe(self->core, address, aclass, phase, 
> treatment, qd_io_rx_handler, self);
>     if (qd_error_code()) {
>         PyErr_SetString(PyExc_RuntimeError, qd_error_message());
>         return -1;
>     }
>     return 0;
> }
> {code}
> {code}
> static void IoAdapter_dealloc(IoAdapter* self)
> {
>     qdr_core_unsubscribe(self->sub);
>     Py_DECREF(self->handler);
>     self->ob_type->tp_free((PyObject*)self);
> }
> {code}
> {code}
> static PyTypeObject IoAdapterType = {
>     PyObject_HEAD_INIT(0)
>     0,                         /* ob_size*/
>     DISPATCH_MODULE ".IoAdapter",  /* tp_name*/
>     sizeof(IoAdapter),         /* tp_basicsize*/
>     0,                         /* tp_itemsize*/
>     (destructor)IoAdapter_dealloc, /* tp_dealloc*/
>     0,                         /* tp_print*/
>     0,                         /* tp_getattr*/
>     0,                         /* tp_setattr*/
>     0,                         /* tp_compare*/
>     0,                         /* tp_repr*/
>     0,                         /* tp_as_number*/
>     0,                         /* tp_as_sequence*/
>     0,                         /* tp_as_mapping*/
>     0,                         /* tp_hash */
>     0,                         /* tp_call*/
>     0,                         /* tp_str*/
>     0,                         /* tp_getattro*/
>     0,                         /* tp_setattro*/
>     0,                         /* tp_as_buffer*/
>     Py_TPFLAGS_DEFAULT,        /* tp_flags*/
>     "Dispatch IO Adapter",     /* tp_doc */
>     0,                         /* tp_traverse */
>     0,                         /* tp_clear */
>     0,                         /* tp_richcompare */
>     0,                         /* tp_weaklistoffset */
>     0,                         /* tp_iter */
>     0,                         /* tp_iternext */
>     IoAdapter_methods,         /* tp_methods */
>     0,                         /* tp_members */
>     0,                         /* tp_getset */
>     0,                         /* tp_base */
>     0,                         /* tp_dict */
>     0,                         /* tp_descr_get */
>     0,                         /* tp_descr_set */
>     0,                         /* tp_dictoffset */
>     (initproc)IoAdapter_init,  /* tp_init */
>     0,                         /* tp_alloc */
>     0,                         /* tp_new */
>     0,                         /* tp_free */
>     0,                         /* tp_is_gc */
>     0,                         /* tp_bases */
>     0,                         /* tp_mro */
>     0,                         /* tp_cache */
>     0,                         /* tp_subclasses */
>     0,                         /* tp_weaklist */
>     0,                         /* tp_del */
>     0                          /* tp_version_tag */
> };
> {code}
> I believe that there is indeed nothing that would free the {{sub}} field in 
> {{IoAdapter}}.
> Depending on how this is triaged (real issue or not, I am myself a bit unsure 
> about freeing memory in relation to Python) I may have more reports coming.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to