I would try logging the number of incremental and full GCs along with the failures. Just a hunch (the prim might fail for OOM).

- Bert -

On Tue, Feb 7, 2017 at 2:21 PM, Ciprian Teodorov <ciprian.teodorov@gmail.com> wrote:
 
interesting I have a similar behavior with your experiment
with distance variations globally between 16 and 25

cheers,
cip

On Tue, Feb 7, 2017 at 6:51 AM, Ben Coman <btc@openinworld.com> wrote:
 

Try the following experiment.
Copy Object>>shallowCopy to Object>>monitorShallowCopy
and after the pragma add...
     Smalltalk at: #Monitor put: #Failed.


Then in Playground...
    lastfail := 0.
    1 to: 100000 do: [ :n |  
|src copy|
src := Array new: n.
Smalltalk at: #Monitor put: #Succeeded.
copy := src monitorShallowCopy.
(Smalltalk at: #Monitor) == #Failed ifTrue: [
Transcript crShow: n; tab; show: n - lastfail. 
lastfail := n.
].
].

Produces the following interesting result....

RUN1...

65559 65559
67670 2111
67685 15
67700 15
67715 15
67730 15
...