OK, I've already re-written my script so that the error doesn't occur, but in the interests of our quest for knowledge and truth, I've doen some more checking:-)
My original line was
[ "${@:0-2:1}" = "." ] || echo
and this causes the seg. fault - always. But if I replace this with:-
anyvarname="$@"
[ "${anyvarname:0-2:1}" = "." ] || echo
there is no error. IOW the problem only relates to when $@ is used and seems to confirm the existence of a bash internal bug.
It's no longer a problem for me, but interesting to know what not to do in the future.