The following describes problems commonly found when trying to access flash chips in systems that are not designed properly for this job, e.g. ad-hoc setups to flash in-situ (see there for ISP-specific problems as well).
Symptoms indicating you may have at least one of these are for example inconsistent reads or probing results. This happens basically because the analog electrical waveforms representing the digital information get too distorted to by interpreted correctly all the time. Depending on the cause different steps can be tried...
- The easiest thing to try is lowering the (SPI) clock frequency if your programmer supports it. That way the waveforms have more time to settle before being sampled by the receiver which might be enough. Depending on the design of the driver and receiver as well as the actual communication path this might not change anything as well.
- Wires are too long. Shortening them to a few cm (i.e. < 20, the lesser the better) might help.
- The impedances of the wires/traces do not match the impedances of the input pins (of either the circuit/chip on the mainboard or the external programmer). Try using shorter wires, adding small (<100 Ohm) series resistors or parallel capacitors (<20pF) as near as possible to the input pins (this includes also the MISO line which ends near the programmer) and/or ask someone who has experience with high frequency electronics.
- The supply voltage of the flash chip is not stable enough. Try adding a 0.1 µF - 1 µF (ceramic) capacitor between the flash chip's VCC and GND pins as near as possible to the chip.