Colour will only run if the dye is loose and various reasons for this might be:
You've exceeded the fixing temperature of the dye in the wash.
The dye wasn't fixed correctly in the first place allowing the dye to move out of the fibres too easily.
The garment was dyed for too short a period at too low a temperature.
Too much dye was added to the dye bath leaving excess dye on the surface of the fibres.
Whatever the case certain dyes are very difficult to fix properly (such as reds) and any garment in a vivid colour should make you wary of the potential for it to run.
You can also look at care labels for clues to the potential for colour running. If there's a warning to wash dark colour separately it indicates that the manufacturer expects the dye to be loose - so be careful as prevention is better than cure.
The first step in fixing a run
problem is to completely rewash the garments affected in a wash that at
least goes to the temperature of the original wash.
Dyes such as direct dyes stay fixed normally up to 40o C but from that point on become loose. These will often be used
for dyeing cellulose fibres such as cotton. Therefore, to make
them loose again you may have to heat the fibres to above 40o.
When the wash is finished inspect the garment again and if
there's still dye present don't bother to dry it. If the dye's
moved but is still there then rewash the item again and if it
hasn't changed then go on to then next step.
If chlorine bleach isn't an option then your only choice is to use sodium hydrosulphate. This can be difficult to get hold of but most hardware stores will sell products called "COLOUR RUN" or "COLOUR RUN REMOVER" that normally will be sodium hydrosulphate. Another product is "Dye Remover" often sold by dye suppliers such as Dylon.
This is an application that occurs hot either as a soak or in the washer. It's a cream/yellow powder and has to be mixed with water prior to application. Following the instructions on the packet is best as this will reflect the strength and amount of the bleach in the package.
Sodium Hydrosulphate smells strongly of sulphur and therefore it may be best to do it in a bucket and place it outside while you soak the garments. If you use a machine wash program it will still smell but the discomfort will be short lived as the rinse cycles will wash away the solution.
The last step is to wash the garment through its normal cycle. If the colour is still present then you can re-bleach the garments. However, too much bleaching is likely to leave the fabric with a yellow look to it.