That's perfectly normal.
When you ping
10.0.1.3 you emit a ICMP echo request packet with source address
192.168.1.2 and destination address of
10.0.1.3, and expect a response with source address
10.0.1.3 / destination address
When the computer B responds, it sends a response to
Since it has an interface in the same network, with it's IP
192.168.1.3, it sends the response trough this interface, so the ICMP echo reply message is sent with source address
192.168.1.3 / destination address
Computer A does receive the response but it's not the expected source address, so it does not associate it with the initial echo request.
Now if you turn off the interface
192.168.1.3, the response is sent trough the other interface with the correct IP address.
Concerning how to solve the situation, it all depends on why you do have computer B multi-homed (I.E. connected to several networks). It's better in most case to avoid this kind of setup.
One way to do it would be to NAT the
10.0.1.X address to
192.168.1.x address for example.