I think the newest obspy supports sorting for arbitrary stats keys
(e.g. stream.sort(['distance']) but not nested inside the sac header.
Therefore, I'd suggest to use the underlying sort method of list (as
done by obspy itself), e.g.:
stream.traces.sort(key=lambda x: x.stats.sac.gcarc)