Skip to content

Commit 02071b3

Browse files
docs(git-modules): update plan with phase 2b results
Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent c487113 commit 02071b3

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

dev/modules/git_modules_support.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,27 @@ the Crypt::OpenSSL Bouncy Castle port. Defer until asked.
196196
a `$ENV{SHLVL}` mismatch — IPC::Open3 appears to wrap the child in a
197197
shell, bumping SHLVL. Unrelated to fork, low priority.
198198

199+
- [x] **Phase 2b — open3 exec-failure + waitpid SIG{CHLD}=IGNORE (2026-04-22)**
200+
- Real-Perl parity for `IPC::Open3` shell-wrapping: bare single-arg
201+
commands now exec directly instead of via `/bin/sh -c`, so exec
202+
failures surface as `open3: exec of X failed: Y`. The bundled
203+
`System/Command.pm` translates that into the fork-path's
204+
`Can't exec( @cmd ): Y` so `eval`-based error tests keep working.
205+
- `WaitpidOperator` now honours `$SIG{CHLD} eq 'IGNORE'`: when set,
206+
waitpid on a tracked Java child returns -1 (ECHILD simulation)
207+
and leaves `$?` untouched, so `System::Command::Reaper` reports
208+
the `(-1, -1, -1)` BOGUS triple the POSIX semantics call for.
209+
- Also fixed a real `ConcurrentModificationException` in
210+
`GlobalDestruction.runGlobalDestruction` uncovered while
211+
repro'ing t/30-exit.t: DESTROY callbacks could mutate the global
212+
HashMaps mid-iteration. Snapshot before walking.
213+
- **`./jcpan -t System::Command`: 230/241 pass (95.4%)**, up from 94%.
214+
- t/11-spawn-fail.t 2/2 (was 0/2)
215+
- t/20-zombie.t 31/32 (was 27/30)
216+
- Remaining 11 are 9 DESTROY-scope tests (tracked on the
217+
`weaken/DESTROY` branch) + 1 `-Ilib` test-harness artifact
218+
+ 1 related zombie-DESTROY assertion.
219+
199220
### Caveat: install-time precedence
200221

201222
`@INC` lists `~/.perlonjava/lib` before the JAR-bundled lib. If a user

0 commit comments

Comments
 (0)