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

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

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


   Few more issues for me to investigate,
   
   ```
   21: ::OneRouterTest::test_17_multiframe_presettled FAILED
   21: 
   21: =================================== FAILURES 
===================================
   21: _________________ OneRouterTest.test_17_multiframe_presettled 
__________________
   21: 
   21: self = <system_tests_one_router.OneRouterTest 
testMethod=test_17_multiframe_presettled>
   21: 
   21:     def test_17_multiframe_presettled(self):
   21:         test = MultiframePresettledTest(self.address)
   21: >       test.run()
   21: 
   21: 
/home/jdanek/repos/qpid/qpid-dispatch/tests/system_tests_one_router.py:542: 
   21: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ 
   21: 
/home/jdanek/repos/qpid/qpid-dispatch/tests/system_tests_one_router.py:2884: in 
run
   21:     Container(self).run()
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_reactor.py:180:
 in run
   21:     while self.process():
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_reactor.py:243:
 in process
   21:     event.dispatch(handler)
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_events.py:165:
 in dispatch
   21:     self.dispatch(h, type)
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_events.py:165:
 in dispatch
   21:     self.dispatch(h, type)
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_events.py:162:
 in dispatch
   21:     _dispatch(handler, type.method, self)
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_events.py:123:
 in _dispatch
   21:     m(*args)
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_handlers.py:255:
 in on_delivery
   21:     event.message = recv_msg(dlv)
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_handlers.py:140:
 in recv_msg
   21:     msg.decode(delivery.link.recv(delivery.pending))
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_message.py:499:
 in decode
   21:     self._check(pn_message_decode(self._msg, data))
   21: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ 
   21: 
   21: self = Message(priority=4), err = -6
   21: 
   21:     def _check(self, err):
   21:         if err < 0:
   21:             exc = EXCEPTIONS.get(err, MessageException)
   21: >           raise exc("[%s]: %s" % (err, 
pn_error_text(pn_message_error(self._msg))))
   21: E           proton._exceptions.MessageException: [-6]: data error: (null)
   21: 
   21: 
/home/jdanek/.cache/pypoetry/virtualenvs/qpid-dispatch-6uYJVB5u-py3.10/lib64/python3.10/site-packages/proton/_message.py:80:
 MessageException
   21: =========================== short test summary info 
============================
   21: FAILED ::OneRouterTest::test_17_multiframe_presettled - 
proton._exceptions.Me...
   21: !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures 
!!!!!!!!!!!!!!!!!!!!!!!!!!!
   21: =================== 1 failed, 24 passed in 77.12s (0:01:17) 
====================
       Test #21: system_tests_one_router ..........***Failed   78.27 sec
   ```
   
   and 
https://github.com/jiridanek/qpid-dispatch/runs/4911640230?check_suite_focus=true#step:27:5140
   
   ```
   37/38 Test #75: c_unittests .............................***Failed    0.46 
sec
   [doctest] doctest version is "2.4.7"
   [doctest] run with "--help" for options
   =================================================================
   ==3586==ERROR: AddressSanitizer: attempting double-free on 0x60600000b120 in 
thread T4:
       #0 0x7ffa7bf58627 in free (/lib64/libasan.so.6+0xae627)
       #1 0x935f37 in router_core_thread 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/router_core_thread.c:236
       #2 0x7ffa7a877a86 in start_thread (/lib64/libc.so.6+0x8da86)
       #3 0x7ffa7a8fb8d3 in __GI___clone (/lib64/libc.so.6+0x1118d3)
   
   0x60600000b120 is located 0 bytes inside of 56-byte region 
[0x60600000b120,0x60600000b158)
   freed by thread T4 here:
       #0 0x7ffa7bf58627 in free (/lib64/libasan.so.6+0xae627)
       #1 0x938cb7 in qdr_subscribe_CT 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/route_tables.c:675
       #2 0x935f37 in router_core_thread 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/router_core_thread.c:236
       #3 0x7ffa7a877a86 in start_thread (/lib64/libc.so.6+0x8da86)
   
   previously allocated by thread T3 here:
       #0 0x7ffa7bf5891f in __interceptor_malloc (/lib64/libasan.so.6+0xae91f)
       #1 0x93ed3d in qd_malloc 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/include/qpid/dispatch/ctools.h:234
       #2 0x93ed3d in qdr_core_subscribe 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/route_tables.c:147
       #3 0x86e872 in IoAdapter_init 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/python_embedded.c:718
       #4 0x7ffa7b81ce22 in type_call (/lib64/libpython3.10.so.1.0+0x11ae22)
   
   Thread T4 created by T3 here:
       #0 0x7ffa7bf00866 in pthread_create (/lib64/libasan.so.6+0x56866)
       #1 0x86d6a5 in sys_thread 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:181
       #2 0x91be02 in qdr_core 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/router_core.c:124
       #3 0x99f402 in qd_router_setup_late 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_node.c:2127
       #4 0x7ffa76707c03 in ffi_call_unix64 (/lib64/libffi.so.6+0x6c03)
       #5 0x7ffa760fc98f  (<unknown module>)
   
   Thread T3 created by T0 here:
       #0 0x7ffa7bf00866 in pthread_create (/lib64/libasan.so.6+0x56866)
       #1 0x7ffa7b534698 in 
std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, 
std::default_delete<std::thread::_State> >, void (*)()) 
(/lib64/libstdc++.so.6+0xd9698)
       #2 0x519c4d in doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6656
       #3 0x45b88c in main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6741
       #4 0x7ffa7a81755f in __libc_start_call_main (/lib64/libc.so.6+0x2d55f)
   
   SUMMARY: AddressSanitizer: double-free (/lib64/libasan.so.6+0xae627) in free
   ==3586==ABORTING
   ```


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


> 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 <[email protected]>
>     PROTON-1609: Fix C++ example flags
> {noformat}
> {noformat}
> commit 18c5f8d6293de4227c8c17ef08675cb4eaef689c (HEAD -> master, 
> upstream/master)
> Author: Ganesh Murthy <[email protected]>
>     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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to