Trace 0: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() succeeds (Py_DECREF() without deallocation on *LHS) (Py_DECREF() without deallocation on RHS)' 'returning' Return value: repr(): PointerToRegion(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29))) str(): (struct PyObject *)&RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29)) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 r->ob_refcnt: refs: 1 owned r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=Region('PyTypeObject for result of PyString_Concat')) region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:28 Trace 1: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() succeeds (Py_DECREF() without deallocation on *LHS) (Py_DECREF() with deallocation on RHS)' 'returning' Return value: repr(): PointerToRegion(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29))) str(): (struct PyObject *)&RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29)) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 r->ob_refcnt: refs: 1 owned r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=Region('PyTypeObject for result of PyString_Concat')) region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:28 Trace 2: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() succeeds (Py_DECREF() with deallocation on *LHS) (Py_DECREF() without deallocation on RHS)' 'returning' Return value: repr(): PointerToRegion(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29))) str(): (struct PyObject *)&RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29)) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 r->ob_refcnt: refs: 1 owned r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=Region('PyTypeObject for result of PyString_Concat')) region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:28 Trace 3: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() succeeds (Py_DECREF() with deallocation on *LHS) (Py_DECREF() with deallocation on RHS)' 'returning' Return value: repr(): PointerToRegion(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29))) str(): (struct PyObject *)&RegionOnHeap('result of PyString_Concat', gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29)) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 r->ob_refcnt: refs: 1 owned r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), region=Region('PyTypeObject for result of PyString_Concat')) region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:28 Trace 4: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() fails (Py_DECREF() without deallocation on *LHS) (Py_DECREF() without deallocation on RHS)' 'returning' Return value: repr(): ConcreteValue(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), value=0) str(): (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)&RegionForGlobal(gcc.VarDecl('PyExc_MemoryError')) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 Trace 5: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() fails (Py_DECREF() without deallocation on *LHS) (Py_DECREF() with deallocation on RHS)' 'returning' Return value: repr(): ConcreteValue(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), value=0) str(): (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)&RegionForGlobal(gcc.VarDecl('PyExc_MemoryError')) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 Trace 6: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() fails (Py_DECREF() with deallocation on *LHS) (Py_DECREF() without deallocation on RHS)' 'returning' Return value: repr(): ConcreteValue(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), value=0) str(): (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)&RegionForGlobal(gcc.VarDecl('PyExc_MemoryError')) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 Trace 7: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as non-NULL' 'when PyString_Concat() fails (Py_DECREF() with deallocation on *LHS) (Py_DECREF() with deallocation on RHS)' 'returning' Return value: repr(): ConcreteValue(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), value=0) str(): (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)&RegionForGlobal(gcc.VarDecl('PyExc_MemoryError')) from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 Trace 8: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as NULL' 'when PyString_Concat() does nothing due to NULL *lhs (Py_DECREF() without deallocation on RHS)' 'returning' Return value: repr(): ConcreteValue(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), value=0) str(): (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:28 Trace 9: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as non-NULL' 'when treating unknown struct PyObject * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 as NULL' 'when PyString_Concat() does nothing due to NULL *lhs (Py_DECREF() with deallocation on RHS)' 'returning' Return value: repr(): ConcreteValue(gcctype='struct PyObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=29), value=0) str(): (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: -1 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:28 Trace 10: Transitions: 'when treating unknown struct PyObject * * from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:27 as NULL' error: NullPtrArgument() error: possibly calling PyString_ConcatAndDel with NULL as argument 1 (lhs) at tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:29 region for gcc.ParmDecl('rhs') on stack: repr(): RegionOnStack("region for gcc.ParmDecl('rhs')") str(): region for gcc.ParmDecl('rhs') on stack r->ob_refcnt: refs: 0 owned, 1 borrowed r->ob_type: PointerToRegion(gcctype='struct PyTypeObject *', loc=gcc.Location(file='tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c', line=27), region=Region("region-for-type-of-arg-gcc.ParmDecl('rhs')")) Exception: (struct PyObject *)0 from tests/cpychecker/refcounts/PyString_ConcatAndDel/basic/input.c:28