Re: [PATCH] hashmap: add API to disable item counting when threaded
From: Jonathan Nieder <hidden>
Date: 2017-09-01 23:50:41
Hi, Johannes Schindelin wrote:
On Wed, 30 Aug 2017, Jeff Hostetler wrote:
quoted
This is to address concerns raised by ThreadSanitizer on the mailing list about threaded unprotected R/W access to map.size with my previous "disallow rehash" change (0607e10009ee4e37cb49b4cec8d28a9dda1656a4).
Nice! What does the message from TSan look like? (The full message doesn't need to go in the commit message, but a snippet can help.) How can I reproduce it?
quoted
See: https://public-inbox.org/git/adb37b70139fd1e2bac18bfd22c8b96683ae18eb.1502780344.git.martin.agren@gmail.com/ Add API to hashmap to disable item counting and to disable automatic rehashing. Also include APIs to re-enable item counting and automatica rehashing. When item counting is disabled, the map.size field is invalid. So to prevent accidents, the field has been renamed and an accessor function hashmap_get_size() has been added. All direct references to this field have been been updated. And the name of the field changed to map.private_size to communicate thie. Signed-off-by: Jeff Hostetler <redacted> ---The Git contribution process forces me to point out lines longer than 80 columns. I wish there was already an automated tool to fix that, but we (as in "the core Git developers") have not yet managed to agree on one. So I'll have to ask you to identify and fix them manually.
I *think* (but am not sure) that there is an implied bug report in this comment, but I am not sure what that bug report is and how I can help with it! If you have a link to an issue tracker, thread, wiki page, or other pointer where I can learn more, then that might help me. Have you experimented with the patches in Junio's branch bw/git-clang-format? [...]
quoted
+ /* TODO Consider counting them and returning that. */I'd rather not. If counting is disabled, it is disabled.quoted
+ die("hashmap_get_size: size not set");Before anybody can ask for this message to be wrapped in _(...) to be translateable, let me suggest instead to add the prefix "BUG: ".
Nowadays (since v2.13.2~26^2~3, 2017-05-12), there is a BUG() function
that you can use in place of die():
BUG("hashmap_get_size: size not set");
Thanks and hope that helps,
Jonathan