You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Jiri Daněk (Jira)" <ji...@apache.org> on 2020/12/21 14:21:00 UTC

[jira] [Created] (DISPATCH-1900) qd_calloc: Assertion `nmemb && size' failed.

Jiri Daněk created DISPATCH-1900:
------------------------------------

             Summary: qd_calloc: Assertion `nmemb && size' failed.
                 Key: DISPATCH-1900
                 URL: https://issues.apache.org/jira/browse/DISPATCH-1900
             Project: Qpid Dispatch
          Issue Type: Bug
    Affects Versions: 1.15.0
            Reporter: Jiri Daněk


https://travis-ci.com/github/apache/qpid-dispatch/jobs/463197009#L3501

{noformat}
30: Router QDR.C output file:
30: >>>>
30: 2020-12-20 11:19:09.485416 +0000 AGENT (warning) Attribute 'saslConfigPath' of entity 'router' has been deprecated. Use 'saslConfigDir' instead
30: qdrouterd: /home/travis/build/apache/qpid-dispatch/include/qpid/dispatch/ctools.h:239: qd_calloc: Assertion `nmemb && size' failed.
30: 
{noformat}

This is probably a mistaken assertion, because {{calloc}} is OK with zeros in arguments. From the man page:

{code}
       The  calloc() function allocates memory for an array of nmemb elements of size bytes each and re‐
       turns a pointer to the allocated memory.  The memory is set to zero.  If nmemb or size is 0, then
       calloc()  returns either NULL, or a unique pointer value that can later be successfully passed to
       free().  If the multiplication of nmemb and size would result in integer overflow, then  calloc()
       returns  an  error.  By contrast, an integer overflow would not be detected in the following call
       to malloc(), with the result that an incorrectly sized block of memory would be allocated:

           malloc(nmemb * size);

{code}

{code}
    int n = qd_server->thread_count - 1; /* Start count-1 threads + use current thread */
    sys_thread_t **threads = (sys_thread_t **)qd_calloc(n, sizeof(sys_thread_t*));
    for (i = 0; i < n; i++) {
        threads[i] = sys_thread(thread_run, qd_server);
    }
{code}

Caused by https://github.com/apache/qpid-dispatch/pull/948; I missed the fact it is adding these new failures under Debug build.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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