As mentioned in a now deleted answer, this seems to be a known bug.
A temporary assignment to an untied list variable is a workaround
my @dummy = sort @lines;
@lines = @dummy;
but this still smells like a bug to me, and you should report it.
Update: Already reported (by our own ikegami, no less). Perlmonks discussion here.