On Dec 10, 2016, at 9:11 AM, Daniel Llorens <daniel.llor...@bluewin.ch> wrote:
> 
> 
>>> Make check is failing on test-language, so I will be chasing that down.
> 
> 
> FWIW this is the only test that fails on 10.9.5 and the backtrace looks 
> identical too.

The problem appears in libguile/loader.c, alloc_aligned().  Check the value of 
“ret” I get after malloc and after the alignment.   I started looking at type 
size for uintptr_t vs char* but then got confused why guile is being compiled 
as x86_64, but my test programs are always x86

alignment=4096

/* This function leaks the memory that it allocates.  */
static char*
alloc_aligned (size_t len, unsigned alignment)
{
  char *ret;

  if (alignment == 8)
    {
      /* FIXME: Assert that we actually have an 8-byte-aligned malloc.  */
      ret = malloc (len);
    }
#if defined(HAVE_SYS_MMAN_H) && defined(MMAP_ANONYMOUS)
  else if (alignment == SCM_PAGE_SIZE)
    {
      ret = mmap (NULL, len, PROT_READ | PROT_WRITE, -1, 0);
      if (ret == MAP_FAILED)
        SCM_SYSERROR;
    }
#endif
  else
    {
      if (len + alignment < len)
        abort ();

      ret = malloc (len + alignment - 1);
ret=0x0000000104000000
      if (!ret)
        abort ();
      ret = (char *) ALIGN ((scm_t_uintptr) ret, alignment);
ret=0x0000000004000000
    }

  return ret;
}


Reply via email to