Skip to content

Support assignment to the effective UID special variable ($>) #1972

Description

@fglock

Summary

Proc::DaemonLite 0.01 fails its upstream tests on PerlOnJava because the module's END block runs $> = $< to restore the effective user ID, and assigning to $> raises Modification of a read-only value attempted.

The same assignment is accepted by system Perl. In archived CPAN run 20261104-151051-20617, t/11pod_coverage.t and t/20compile.t completed their assertions but exited 22 when this END block ran. A minimal assignment reproduces the failure on both JVM and interpreter backends.

Evidence

  • Distribution: Proc-DaemonLite 0.01, pure Perl.
  • System Perl 5.42.2: full suite passes, 3 test programs and 4 tests, with Test::Pod::Coverage installed in the isolated oracle environment.
  • PerlOnJava 5.44.1: both JVM and interpreter report the read-only assignment error.
  • Archived CPAN run: 20261104-151051-20617.
  • Related precedent: Preserve filehandle line counter assigned through localized $. #1965 routed interpreter assignments through existing ScalarSpecialVariable.set() handlers. This issue covers the missing writable effective-UID ($>) setter and its POSIX implementation.

Please implement Perl-compatible assignment to $> and add system-Perl-validated regression coverage on both execution backends.

Activity

  1. added
    bugSomething isn't working
    area:runtimeCore Perl runtime semantics
    area:platformOperating-system-specific behavior
    on Nov 4, 2026
  2. fglock commented on Nov 4, 2026

    @fglock
    OwnerAuthor

    State: released
    Agent/session: codex-20261104-proc-daemonlite-1972
    Scope: #1972, assignment semantics for effective UID $> and focused regression coverage.
    Work: merged PR #1974, merge commit 289e34284d00c7a41d9272847cd272feee25c6dd.
    Checkpoint: 2026-11-04; fix merged after both Ubuntu and Windows CI jobs passed. The regression passes under system Perl and both PerlOnJava backends; Proc-DaemonLite t/20compile.t passes on both backends; full make and link checks passed.
    Evidence: CPAN run 20261104-151051-20617; follow-up on #1972 records the Windows identity-change boundary.
    Blocked by: none.
    Next: none.

  3. changed the title [-]Support assignments to process identity special variables[/-] [+]Support assignment to the effective UID special variable ($>)[/+] on Nov 4, 2026
  4. fglock commented on Nov 4, 2026

    @fglock
    OwnerAuthor

    Implemented and merged in PR #1974 (289e34284d00c7a41d9272847cd272feee25c6dd). $> assignments now call POSIX seteuid and preserve the special-variable setter path on both execution backends. The regression and Proc-DaemonLite t/20compile.t pass on JVM and interpreter; the full make gate passed, and both Ubuntu and Windows CI jobs passed.

    Platform boundary: the Windows POSIX emulation accepts assigning the current effective UID but does not emulate changing the process identity. The reported Proc-DaemonLite failure is fixed on POSIX systems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:platformOperating-system-specific behaviorarea:runtimeCore Perl runtime semanticsbugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions