- You're using Win32::Process so you're probably running this on Windows. I have my doubts if using a Unix mechanism on Windows is the best way to do it, or even if it'll work well.
- Actually, fork on Windows doesn't start a new program. It starts a new thread.
- Next, you're calling exec in the child
process thread. exec doesn't return.
- What does running an LWP request have to do with anything? OK, I'm officially confused now.
In short: if this is Windows, I think your program is killed by
exec in the child.