Errors seen in LOGS/python-arm4-1.2-5.fc17

This is a summary of errors seen when compiling with an experimental static analysis tool

Raw build logs can be seen here

Reference count too low

Code paths in which the reference count of an object is left too low. This could lead to the object being deallocated too early, triggering segfaults when later accessed. Over repeated calls, these errors could accumulate, increasing the likelihood of a segfault.

arm4module.c ArmSubbufferMetricValues_set_valid ob_refcnt of return value is 1 too low

Reference count too low within an initialization routine

Code paths in which the reference count of an object is too low, but within an initialization routine, and thus likely to only happen once

arm4module.c initarm4 ob_refcnt of ArmID_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmHandle_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmCorrelator_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmArrivalTime_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmBuffer_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferCharset_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferAppIdentity_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferAppContext_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferTranIdentity_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferTranContext_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferArrivalTime_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferMetricBindings_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferMetricValues_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferUser_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferSystemAddress_Type is 1 too low
arm4module.c initarm4 ob_refcnt of ArmSubbufferDiagDetail_Type is 1 too low

Reference leak within initialization

Code paths in which the reference count of an object is left too high, but within an initialization routine, and thus likely to only happen once

arm4module.c initarm4 ob_refcnt of new exception object from PyErr_NewException is 1 too high

Segfaults within error-handling paths

Code paths in error-handling that will lead to a segmentatation fault (e.g. under low memory conditions)

arm4module.c start_transaction dereferencing NULL (tran_handle->arm_handle) at arm4module.c:3861
arm4module.c generate_correlator dereferencing NULL (correlator->arm_correlator) at arm4module.c:4519
arm4module.c block_transaction dereferencing NULL (block_handle->arm_handle) at arm4module.c:4110
arm4module.c initarm4 dereferencing NULL (D.11516->ob_refcnt) at arm4module.c:4863

Possible reference leaks

Code paths in which the reference count of an object might too large - but in which the reference in question came from a function not known to the analyzer.

The analyzer assumes such references are new references, but if the function returns a borrowed reference instead, it's probably not a bug

arm4module.c start_transaction ob_refcnt of '*tran_handle' is 1 too high
arm4module.c generate_correlator ob_refcnt of '*correlator' is 1 too high
arm4module.c block_transaction ob_refcnt of '*block_handle' is 1 too high

Returning (PyObject*)NULL without setting an exception

These messages are often false-positives: the analysis tool has no knowledge about internal API calls that can lead to an exception being set
arm4module.c start_transaction returning (PyObject*)NULL without setting an exception
arm4module.c unbind_thread returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferMetricValues_set_value returning (PyObject*)NULL without setting an exception
arm4module.c discard_transaction returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferMetricValues_set_valid returning (PyObject*)NULL without setting an exception
arm4module.c destroy_application returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferTranIdentity_set_context_name returning (PyObject*)NULL without setting an exception
arm4module.c register_application returning (PyObject*)NULL without setting an exception
arm4module.c generate_correlator returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferAppIdentity_set_context_name returning (PyObject*)NULL without setting an exception
arm4module.c register_metric returning (PyObject*)NULL without setting an exception
arm4module.c stop_application returning (PyObject*)NULL without setting an exception
arm4module.c start_application returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferTranContext_set_context_value returning (PyObject*)NULL without setting an exception
arm4module.c ArmCorrelator_get_flags returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferAppIdentity_set_property returning (PyObject*)NULL without setting an exception
arm4module.c block_transaction returning (PyObject*)NULL without setting an exception
arm4module.c report_transaction returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferTranIdentity_set_property returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferAppContext_set_context_value returning (PyObject*)NULL without setting an exception
arm4module.c update_transaction returning (PyObject*)NULL without setting an exception
arm4module.c bind_thread returning (PyObject*)NULL without setting an exception
arm4module.c unblock_transaction returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferArrivalTime_set_arrival_time returning (PyObject*)NULL without setting an exception
arm4module.c stop_transaction returning (PyObject*)NULL without setting an exception
arm4module.c register_transaction returning (PyObject*)NULL without setting an exception
arm4module.c is_charset_supported returning (PyObject*)NULL without setting an exception
arm4module.c ArmSubbufferMetricBindings_bind returning (PyObject*)NULL without setting an exception