Skip to content

Fix posix_setrlimit() rejecting POSIX_RLIMIT_INFINITY on Solaris - #24377

Closed
jorgsowa wants to merge 1 commit into
php:PHP-8.5from
jorgsowa:fix-posix-setrlimit-rlim-infinity
Closed

jorgsowa wants to merge 1 commit into
php:PHP-8.5from
jorgsowa:fix-posix-setrlimit-rlim-infinity

Conversation

@jorgsowa

Copy link
Copy Markdown
Contributor

GH-19281 made posix_setrlimit() throw a ValueError for limits below -1, on the assumption that -1 (RLIM_INFINITY on Linux) is the only valid negative value. Solaris defines RLIM_INFINITY as (rlim_t)-3, so the function now rejects PHP's own POSIX_RLIMIT_INFINITY constant. On Solaris, also accept RLIM_INFINITY. Other platforms keep the
existing check. The error message is kept the same (or maybe I should change the wording as well?)

This fixes ext/session/tests/session_write_failure_keeps_data.phpt in the nightly SOLARIS job.

Why it started failing recently? Because the test was added yesterday c2b02f24dff and it's using posix_setrlimit()

See https://docs.oracle.com/cd/E88353_01/html/E37841/setrlimit-2.html
and https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/sys/resource.h

phpGH-19281 made posix_setrlimit() throw a ValueError for limits below -1,
on the assumption that -1 (RLIM_INFINITY on Linux) is the only valid
negative value. Solaris defines RLIM_INFINITY as (rlim_t)-3, so the
function now rejects PHP's own POSIX_RLIMIT_INFINITY constant:

  ValueError: posix_setrlimit(): Argument #3 ($hard_limit) must be
  greater or equal to -1

On Solaris, also accept RLIM_INFINITY. Other platforms keep the
existing check.

This fixes ext/session/tests/session_write_failure_keeps_data.phpt in
the nightly SOLARIS job.

See https://docs.oracle.com/cd/E88353_01/html/E37841/setrlimit-2.html
and https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/sys/resource.h
@devnexen

Copy link
Copy Markdown
Member

GH-19281 made posix_setrlimit() throw a ValueError for limits below -1, on the assumption that -1 (RLIM_INFINITY on Linux) is the only valid negative value. Solaris defines RLIM_INFINITY as (rlim_t)-3, so the function now rejects PHP's own POSIX_RLIMIT_INFINITY constant. On Solaris, also accept RLIM_INFINITY. Other platforms keep the existing check. The error message is kept the same (or maybe I should change the wording as well?)

on master maybe.

@jorgsowa

Copy link
Copy Markdown
Contributor Author

@devnexen should I change wording on master, or should I target master branch with the fix? I like the wording more from your PR to be honest.

@Girgias

Girgias commented Oct 18, 2026

Copy link
Copy Markdown
Member

@devnexen should I change wording on master, or should I target master branch with the fix? I like the wording more from your PR to be honest.

The fix needs to land in stable branches, the wording should just be changed on master.

@jorgsowa

Copy link
Copy Markdown
Contributor Author

Closed in 602ba3a

@jorgsowa jorgsowa closed this Oct 18, 2026
@jorgsowa
jorgsowa deleted the fix-posix-setrlimit-rlim-infinity branch October 18, 2026 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants