tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: 2025Q1 lang/rust build failure on illumos (ENOMEM)



* On 2025-04-17 at 18:29 BST, Hans Rosenfeld wrote:

On Wed, Apr 16, 2025 at 10:34:42PM +0100, Jonathan Perkin wrote:
* On 2025-04-16 at 15:32 BST, Hans Rosenfeld wrote:

> I ran 'ulimit -s 131072' in the shell I'm using for building, and
> devel/cargo-c built successfully.
>
> I presume that means it needs UNLIMIT_RESOURCES? Is that perhaps the
> case for all rust-based packages?

What's your default stacksize?  On SmartOS it's 10MB and I didn't have any
problems building cargo-c.  At what threshold does it start working for you?

It did work with 131072, while it did not when it was unlimited.

I didn't check any other values. I figure it's the same problem that I
saw building lang/rust, and I would conclude that rustc (?) just doesn't
like running with unlimited stack size in general, for the reasons given
previously (https://github.com/NetBSD/pkgsrc/commit/a7aeedc3).

I do however wonder whether it is stack_getbounds(3c) that is wrong, or
whether rust is wrong not handling this case properly. It seems counter-
intuitive to have UNLIMIT_RESOURCES actually limit stack size to a
smaller value if it's already "unlimited".

Yeh, I have a number of thoughts on this:

 * It's highly unlikely that a user will have a default stacksize of
   "unlimited", so this is only a problem specifically in a pkgsrc
   context when using infrastructure prior to my change.  So in theory,
   there is currently no problem, at least in a default environment.

 * stack_getbounds(3C) in the unlimited case is at least unhelpful,
   though I wouldn't go so far as calling it wrong.  Just a CAVEAT that
   needs to be thoroughly understood by anyone relying on it.

 * Due to the above, it's probably the best long-term fix that this is
   correctly handled in upstream rust, so that it doesn't also affect
   'ulimit -s unlimited' users outside of pkgsrc.

 * It's also worth pointing out that on many other systems the default
   hard stacksize limit is not unlimited.  NetBSD appears to be 128MB,
   macOS 64MB, etc.  Rather than CAVEAT stack_getbounds(3C), a better
   long-term fix in illumos would be to have a similar hard limit and
   remove the problem entirely.

If someone wants to do work in either or both of upstreams, we will still need to support older systems and/or Solaris (I don't know what they do here), so will still need the pkgsrc workaround for quite a long time.

Cheers,

--
Jonathan Perkin                    pkgsrc.smartos.org
Open Source Complete Cloud   www.tritondatacenter.com


Home | Main Index | Thread Index | Old Index