> After some frustration I learned that B is overwritten, so I am working around this by making a copy. 

This is very strange. Could you please try this: 

```
import numpy as np
from numpy.testing import assert_array_almost_equal
from scipy.linalg.blas import dtrmm

a = np.array([[1., 2., ],
              [-2., 1.]])
b = np.array([[3., 4., -1.],
              [5., 6., -2.]])

bcopy = b.copy()
result = dtrmm(1., a, bcopy)
print np.may_share_memory(b, bcopy)
assert_array_almost_equal(bcopy, b)
```

Indeed, fortran's `dtrmm` is destructive, but from what I understand about f2py (and on my machine it is consistent), the result should be False, no exception.