Preserve scalar slots assigned through localized glob aliases
Maintainer thường phản hồi trong vòng 1 ngày
Một pull request liên quan đã được merge.
- #1944 của @fglock — đã merge
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Start with the reproducer in the issue: a localized whole-glob alias (local *SYM = *{...}) followed by *SYM = \$value. The issue points to RuntimeGlob.set and getGlobAliasGroup(this.globName) as the place where the scalar slot is written to the wrong glob. Run the snippet on both the JVM and interpreter backends. Done when it prints /tmp/example-state on both, and a permanent regression test covers scalar-slot assignment through a localized glob alias.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
PerlOnJava loses the destination scalar slot when a scalar reference is assigned through a localized whole-glob alias. Text::Template 1.61 uses this pattern to expose HASH values to template fragments; those variables become undefined in the template.
Minimal reproducer
use strict;
use warnings;
my $package = 'Probe';
my $name = 'state_dir';
my $value = '/tmp/example-state';
{
no strict 'refs';
local *SYM = *{"${package}::$name"};
*SYM = \$value;
print defined ${"${package}::$name"}
? ${"${package}::$name"} : '<undef>', "\n";
}
System Perl prints /tmp/example-state. PerlOnJava 5.44.1 prints an empty value (with an uninitialized-value warning) on both JVM and interpreter backends.
CPAN evidence
In CPAN random-tester run 20261030-095654-34969, App-Milter-Limit 0.54 fails t/limit-from.t and t/smoke.t on PerlOnJava. Both tests provide a temporary state_dir in their generated config, but Text::Template expands it to an empty string. App-Milter-Limit then applies its /var/run/milter-limit default and fails to create that directory due to permissions.
The archived system-Perl oracle passes the complete App-Milter-Limit suite: 6 test files and 21 tests. The PerlOnJava suite reports 2/6 test programs failed. The relevant environment was macOS 26.7.1 arm64, Java 24.0.2, PerlOnJava 5.44.1 (4dc1a6f4d), and system Perl 5.42.2.
Root cause
Text::Template's _install_hash uses local *SYM = *{"${dest}::$name"} and then assigns *SYM = \$val. PerlOnJava handles the reference assignment in RuntimeGlob.set by updating the scalar slot for getGlobAliasGroup(this.globName). In this localized alias case, the alias group associated with SYM does not carry the destination glob identity, so the destination package scalar remains undefined. The failure is reproducible without Text::Template using the snippet above.
Related, but distinct, reports: #1258 covers direct dynamic package-scalar aliasing; #1630 covered whole-glob aliases and localized IO replacements.
Acceptance criteria
- The reproducer prints
/tmp/example-stateon system Perl and both PerlOnJava backends. - Add permanent project-owned regression coverage for scalar-slot assignment through a localized whole-glob alias.
- App-Milter-Limit 0.54 passes all tests on both PerlOnJava backends.
- Ngôn ngữ chính
- Perl
- Star
- 65
- Fork
- 8
- Merge trung bình
- 5 giờ 52 phút
- Pull request đã merge (30 ngày)
- 175
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của fglock/PerlOnJava
-
area:runtime documentation enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
fglock/PerlOnJava#1579 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:runtime bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 22/100
fglock/PerlOnJava#1951 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:memory area:performance bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
fglock/PerlOnJava#1950 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
fglock/PerlOnJava#1885 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:performance enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
fglock/PerlOnJava#1863 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của fglock/PerlOnJava
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
virtualmin/virtualmin-gpl#1322 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
easy first-contributor first-contributors good first issue help wanted perl shell up-for-grabs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
fork-commit-merge/fork-commit-merge#8461 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
PostgreSQL::Version rejects documented full psql version outputCó thể đã có người làm @feitiansiyan đã nhận 1 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
IvorySQL/IvorySQL#2999 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
1.severity: security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
Maintainer thường phản hồi trong vòng 1 ngày