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/22 18:18:01 UTC

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

     [ https://issues.apache.org/jira/browse/DISPATCH-1900?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jiri Daněk resolved DISPATCH-1900.
----------------------------------
    Resolution: Fixed

> 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
>            Priority: Major
>             Fix For: 1.15.0
>
>
> 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