sourceHandle := interpreterProxy fetchInteger: FormBitsIndex ofObject: sourceForm.
The above returns 0 just before the crash; the surface was NOT GCed however.
sourceForm was retrieved from here loadBitBltFrom.warping..st
sourceForm := interpreterProxy fetchPointer: BBSourceFormIndex ofObject: bitBltOop.
Where bitBltOop is from primitiveCopyBits (rcvr is bitBltOop):
rcvr := interpreterProxy stackValue: interpreterProxy methodArgumentCount.
(self loadBitBltFrom: rcvr) ifFalse:[^interpreterProxy primitiveFail].
lockSurfaces() was called from copyBits.st
and copyBits() from primitiveCopyBits.st
primitiveCopyBits() is called from image-side (BitBlt>>copyBits)