Hmmmm. Perhaps task b never gets a signal because the port was created in the context of task a. Perhaps a, being the owner, gets the signal.
I definitely think that's the problem. You'll either have to create the reply port in task B, or allocate it manually in task A and fill in the task address and signal number for task B.