Heap buffer overflow reported by Address Sanitizer #280
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Probably (:crossed_fingers:) this is root cause of the randomly failing mac tests.
According to
man 3 basename
These functions may return pointers to statically allocated memory which may be overwritten by subsequent calls.
, and as it can be seen in the messy logs in #272 I've added there it's true on that environment, since the parallel threads keep overriding the same address. Thenpath_join
allocates N bytes but when it tries to concat the two strings the value offile
is changed to something larger thus causing an overflow.As I can see this is the only place where
basename
is used concurrently and might cause this error, but let me know if there are other problematic usages.ASAN output: