Yes. I misspoke; as the PIDs clearly show (and as my intention in including them was to indicate), the "catch" of the die() is in the child process.
An unexpected child die() gets caught by a containing eval block that thinks it's just dealing with the parent.
The overall problem, then, is as you state -- not knowing that a fork() has happened. Is there a general way, then, to deal with this in evals? It seems that the casualness with which fork()s are issued in various places makes this problem endemic to the idiom of Perl...