I did some debugging of the isearch problems which I am now reasonably able
to reproduce. When the problem occurs search-ring does not get updated -
hence why re-searching always uses the previous match. The weird thing is
that if I put debug (a message saying what was saved) in
isearch-update-ring and eval it the problem goes away. So I'm wondering
whether there is some sort of race condition or byte-compiler problem.
Also the weird thing is that when the problem occurs there is a message
that flashes up before "Isearch: whatever" which I can't read.
I'll see if I can debug some more but its very difficult to pin down.
andy