.zshenvってinteractive shellじゃなくても読まれるんだよね?
ということはその中でサブシェルを使うことはあまり想定されてないと思うんだが。
(さすがにある程度はチェック・回避してfool-proofに作ってあるんだろうけど。)
.zshrcに書くべきじゃないか。

さすがのgdbも、デバッグ対象が始まりもしないうちにサブプロセスをつくって
それをwaitしようとしてるというのは想定外みたいだし。