Skip to content

fix: avoid false DESTROY resurrection diagnostics - #1553

Merged
fglock merged 6 commits into
masterfrom
fix/issue-1515-destroy-resurrection
Sep 28, 2026
Merged

fglock merged 6 commits into
masterfrom
fix/issue-1515-destroy-resurrection

Conversation

@fglock

@fglock fglock commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • restrict resurrection warnings to global destruction (${^GLOBAL_PHASE} eq 'DESTRUCT')
  • distinguish same-class reblessing from a new destruction lifecycle by Perl class name, not transient blessing IDs
  • add permanent destroy_edge_cases.t coverage for ordinary resurrection, true global-destruction resurrection, and same-class reblessing

Fixes #1515.

Validation

  • prove src/test/resources/unit/refcount/destroy_edge_cases.t (system Perl)
  • timeout 120 ./jperl src/test/resources/unit/refcount/destroy_edge_cases.t
  • timeout 120 ./jperl --interpreter src/test/resources/unit/refcount/destroy_edge_cases.t
  • JPERL_TEST_FILTER=destroy_edge_cases timeout 1200 nice -n 19 make test-unit
  • nice -n 19 make check-links
  • timeout 1200 nice -n 19 make
  • Dist::Zilla t/commands/listdeps.t reproduction on both backends: the Dist::Zilla Config::MVP objects spuriously resurrect during global destruction #1515 resurrection diagnostics are absent; it still has separately tracked $CORE::try ambiguity output.

Generated with Codex

fglock and others added 2 commits September 28, 2026 11:42
Compare reblessing by Perl class name and emit resurrection diagnostics only
during global destruction. Add lifecycle regression coverage for ordinary
resurrection and same-class reblessing.

Fixes #1515

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <noreply@openai.com>
Track top-level temporary drains separately from nested lexical cleanup so
global-destruction diagnostics remain Perl-compatible without restoring the
Class::Std::Fast false positives.

Fixes #1515

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <noreply@openai.com>
@fglock
fglock force-pushed the fix/issue-1515-destroy-resurrection branch from 9541100 to 6bac193 Compare September 28, 2026 10:39
fglock and others added 2 commits September 28, 2026 12:58
Preserve a blessed lvalue referent's package prefix during stringification
and trim unvivified sparse proxies when deleting a tied-array tail.

Add focused regression coverage for both behaviors.

Generated with Codex (https://openai.com/codex/)

Co-Authored-By: Codex <noreply@openai.com>
Reserve one scheduling unit for ordinary tests when re/anyof.t runs under
the standard five-job UAT budget. Add scheduler and sustained integration
coverage proving that ordinary work is continuously refilled while anyof runs.

Generated with Codex (https://openai.com/codex/)

Co-Authored-By: Codex <noreply@openai.com>
@fglock
fglock force-pushed the fix/issue-1515-destroy-resurrection branch from dd0136d to 6aaef7c Compare September 28, 2026 11:20
fglock and others added 2 commits September 28, 2026 14:55
Keep the sparse-hole alias adjustment out of a one-element array, so the
value returned by $#array++ can address the newly created final slot. Retain
the established multi-slot sparse-hole behavior and cover both cases.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <codex@openai.com>
Update the pat-capacity regression expectations for anyof's four-unit
weight, which deliberately leaves one unit for an ordinary UAT test.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <codex@openai.com>
@fglock
fglock merged commit d533748 into master Sep 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dist::Zilla Config::MVP objects spuriously resurrect during global destruction

1 participant