Charlie-san,
I'm sorry I've not built an abnormal route in my tool. I don't know if the following is the problem you're facing, but an endless loop may occur when locator2coordinate function does not have unique solution from given two red points.
You may avoid the loop by changing the function to the following. Please change the location of two red points and try again.
locator2coordinate[list_, sample_] :=
Module[{l1x, l1y, l2x, l2y, s1x, s1y, s2x, s2y, d, c, ysolve, xlist,
ylist},
{l1x, l1y} = list[[1]]; {l2x, l2y} = list[[2]];
If[l1x === l2x || l1y === l2y, Beep[]; Return[{}]];
{s1x, s1y} = sample[[1]]; {s2x, s2y} = sample[[2]];
ysolve = Solve[d*l1y + c == s1y && d*l2y + c == s2y, {d, c}];
{{d, c}} = {d, c} /. ysolve;
({Exp[(#[[1]] - l1x)/(l2x - l1x)*(Log[s2x] - Log[s1x]) + Log[s1x]],
d*#[[2]] + c} & /@ list) // Sort
]