Does it not free it somewhere eventually?  How is that handled.

> lang/sbcl will need a small patch:
> 
> $OpenBSD$
> 
> Index: src/runtime/thread.c
> --- src/runtime/thread.c.orig
> +++ src/runtime/thread.c
> @@ -636,9 +636,16 @@ create_thread_struct(lispobj initial_function) {
>       * on the alignment passed from os_validate, since that might
>       * assume the current (e.g. 4k) pagesize, while we calculate with
>       * the biggest (e.g. 64k) pagesize allowed by the ABI. */
> +#ifdef MAP_STACK
> +    spaces = mmap(0, THREAD_STRUCT_SIZE, OS_VM_PROT_ALL,
> +     MAP_PRIVATE | MAP_ANON | MAP_STACK, -1, 0);
> +    if(spaces == MAP_FAILED)
> +        return NULL;
> +#else
>      spaces=os_validate(0, THREAD_STRUCT_SIZE);
>      if(!spaces)
>          return NULL;
> +#endif
>      /* Aligning up is safe as THREAD_STRUCT_SIZE has
>       * THREAD_ALIGNMENT_BYTES padding. */
>      aligned_spaces = (void *)((((uword_t)(char *)spaces)
> 

Reply via email to