git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] pack-bitmap: do not core dump

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 22, 2014, 23:11 UTC
Message-ID
<xmqq7g6h2c4f.fsf@gitster.dls.corp.google.com>
In-Reply-To
<781073ea08e86301f62e708bc0b80fd@74d39fa044aa309eaea14b9f57fe79c>
"Kyle J. McKay" <mackyle@gmail.com> writes:
> So I was trying to use pack.writebitmaps=true and all I got was core dumps.
>
> The fix with a real subject line ;) is below.  I think perhaps this should be
> picked up for the 2.0.0 release.  (Patch is against master.)

Of course---a breakage in a new code may be less important than a regression fix in the sense that there is an option not to use the new feature, but an obvious fix to such a breakage is certainly very much welcomed during the -rc period.

Thanks. I'll try not to forget until tomorrow's integration cycle (I just finished and pushed the results out for today), which will also give me a chance to wait for Peff's Ack ;-).

Show 39 quoted lines
> --Kyle
>
> ---- >8 ----
> Subject: [PATCH] ewah_bitmap.c: do not assume size_t and eword_t are the same size
>
> When buffer_grow changes the size of the buffer using realloc,
> it first computes and saves the rlw pointer's offset into the
> buffer using (uint8_t *) math before the realloc but then
> restores it using (eword_t *) math.
>
> In order to do this it's necessary to convert the (uint8_t *)
> offset into an (eword_t *) offset.  It was doing this by
> dividing by the sizeof(size_t).  Unfortunately sizeof(size_t)
> is not same as sizeof(eword_t) on all platforms.
>
> This causes illegal memory accesses and other bad things to
> happen when attempting to use bitmaps on those platforms.
>
> Fix this by dividing by the sizeof(eword_t) instead which
> will always be correct for all platforms.
>
> Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
> ---
>  ewah/ewah_bitmap.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/ewah/ewah_bitmap.c b/ewah/ewah_bitmap.c
> index 9ced2dad..fccb42b5 100644
> --- a/ewah/ewah_bitmap.c
> +++ b/ewah/ewah_bitmap.c
> @@ -41,7 +41,7 @@ static inline void buffer_grow(struct ewah_bitmap *self, size_t new_size)
>  	self->alloc_size = new_size;
>  	self->buffer = ewah_realloc(self->buffer,
>  		self->alloc_size * sizeof(eword_t));
> -	self->rlw = self->buffer + (rlw_offset / sizeof(size_t));
> +	self->rlw = self->buffer + (rlw_offset / sizeof(eword_t));
>  }
>  
>  static inline void buffer_push(struct ewah_bitmap *self, eword_t value)
Previous: Kyle J. McKayNext: Jeff King
Message 2 of 4 in “pack-bitmap: do not core dump”
  1. pack-bitmap: do not core dumpKyle J. McKay, Apr 22, 2014
  2. Junio C HamanoApr 22, 2014
  3. Jeff KingApr 22, 2014
  4. Kyle J. McKayApr 23, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.