Welcome to the Accelerate mailing list! (:
For the scatter function, it means that if the destination index appears more than once, then there is no guarantee of which particular value will be finally written to that index, as the order of the permutations is not specified. The values themselves still come from the vector of source values, of course, so you shouldn't see garbage values appear (that would be a bug). In the CPU backend you are more likely to get consistent behaviour because the CPU code has relatively low concurrency (few threads, which just loop over the array start-to-end), but that's just by accident. Either way you shouldn't get segmentation faults, however, so that could indeed be a bug (unless an out-of-bounds index was used).
Note that scatter is just a simplified wrapper over the
permute function: with that function you can specify what to do when the same index is given more than once (i.e. by combining the old and new values with the given operator; with scatter it just overwrites the old value, hence the non-deterministic behaviour).
Hope that helps!
Cheers,
-Trevor