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

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

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


   https://travis-ci.com/github/apache/qpid-dispatch/jobs/500355035#L4493
   
   ```
   45: ======================================================================
   45: ERROR: tearDownClass (system_tests_topology.TopologyTests)
   45: ----------------------------------------------------------------------
   45: Traceback (most recent call last):
   45:   File "/Users/travis/build/apache/qpid-dispatch/tests/system_test.py", 
line 876, in tearDownClass
   45:     cls.tester.teardown()
   45:   File "/Users/travis/build/apache/qpid-dispatch/tests/system_test.py", 
line 819, in teardown
   45:     raise RuntimeError("Errors during teardown: \n\n%s" % 
"\n\n".join([str(e) for e in errors]))
   45: RuntimeError: Errors during teardown: 
   45: 
   45: Process 6605 error: exit code -6, expected -1
   45: qdrouterd -c D.conf -I /Users/travis/build/apache/qpid-dispatch/python
   45: 
/Users/travis/build/apache/qpid-dispatch/build/tests/system_test.dir/system_tests_topology/TopologyTests/setUpClass/D-11.cmd
   45: >>>>
   45: AddressSanitizer:DEADLYSIGNAL
   45: =================================================================
   45: ==6605==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 
(pc 0x00010c0d4dfc bp 0x70000925fcf0 sp 0x70000925fc80 T2)
   45: ==6605==The signal is caused by a READ memory access.
   45: ==6605==Hint: address points to the zero page.
   45:     #0 0x10c0d4dfb in qd_connection_invoke_deferred server.c:1506
   45:     #1 0x10be818f0 in qd_connection_manager_delete_connector 
connection_manager.c:1060
   45:     #2 0x10e44fef4 in ffi_call_unix64 (libffi.7.dylib:x86_64+0x4ef4)
   45:     #3 0x70000925fe4f  (<unknown module>)
   45: 
   45: ==6605==Register values:
   45: rax = 0x00001c3c000097d1  rbx = 0x000061e00004be88  rcx = 
0x0000100000000000  rdx = 0x0000000000000000  
   45: rdi = 0x000061e00004bd10  rsi = 0xffffffff00000000  rbp = 
0x000070000925fcf0  rsp = 0x000070000925fc80  
   45:  r8 = 0x00000000000020a0   r9 = 0x000060a000000498  r10 = 
0x000000000000594c  r11 = 0x0000000000000206  
   45: r12 = 0x00001c3c000097a5  r13 = 0x00001c22000151ea  r14 = 
0x000061e00004bd10  r15 = 0x000061e00004bd28  
   45: AddressSanitizer can not provide additional info.
   45: SUMMARY: AddressSanitizer: SEGV server.c:1506 in 
qd_connection_invoke_deferred
   45: Thread T2 created by T0 here:
   45:     #0 0x10c915add in wrap_pthread_create 
(libclang_rt.asan_osx_dynamic.dylib:x86_64+0x56add)
   45:     #1 0x10bf22e1d in sys_thread threading.c:181
   45:     #2 0x10c0d372f in qd_server_run server.c:1485
   45:     #3 0x10bd9996e in main_process main.c:115
   45:     #4 0x10bd9827b in main main.c:369
   45:     #5 0x7fff63c853d4 in start (libdyld.dylib:x86_64+0x163d4)
   45: 
   45: ==6605==ABORTING
   45: <<<<
   45: 
   45: ----------------------------------------------------------------------
   45: Ran 3 tests in 153.471s
   45: 
   45: FAILED (errors=2)
   45/69 Test #45: system_tests_topology .............................***Failed 
 153.64 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.

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.3.4#803005)

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

Reply via email to