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