The "find" command in cluster_find.cpp forwards the command to the affected shards, then waits on the waitInFindBeforeMakingBatch fail point. If one of the shards is the same process than the embedded router, and since fail points are shared between the embedded router and the shard, the forwarded command will wait on the fail point in find_cmd.cpp, which hangs tests.
One possible solution is to avoid waiting on the fail point in find_cmd.cpp if the process has an embedded router. However, it is important to make sure that this doesn't break other tests.