[Vm-dev] BitBltSimulator assertion failure

Alistair Grant akgrant0710 at gmail.com
Wed Oct 17 20:04:37 UTC 2018

Hi Eliot,

On Wed, 17 Oct 2018 at 18:37, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> On Wed, Oct 17, 2018 at 9:28 AM Alistair Grant <akgrant0710 at gmail.com> wrote:
>> If I try to run Pharo with the latest VMMaker (eem.2460) it results in the
>> following error in BitBltSimulator.  Does this look familiar?
> Yes.  I am working on fixing a bug in BitBlt where the copyBits primitive accesses a word past the end of the source bitmap.  If the source bitmap is an external surface and abuts the end of a page then accessing the word beyond the bitmap will cause an access violation and crash the VM.  I have added asserts to catch the bug before it crashes the VM.  Until I have the bug fixed you'll have to tolerate the assert fails.  In the simulator you can use an exception handler to squash the asserts, e.g.
> | sis m |
> sis := StackInterpreterSimulator newWithOptions: #(ObjectMemory Spur32BitMemoryManager).
> m := BitBltSimulation>>#copyBitsLockedAndClipped.
> sis desiredNumStackPages: 8.
> sis assertValidExecutionPointersAtEachStep: false.
> sis openOn: '/Users/eliot/Squeak/Squeak5.2/bitbltbug'.
> sis openAsMorph.
> [sis run]
> on: AssertionFailure
> do: [:ex|
> ex signalerContext sender sender sender sender sender method ~~ m ifTrue: [ex pass].
> ex resume: nil]

Thanks!  I don't think I would have come up with this work-around.

Interestingly the image runs successfully with the CogVMSimulator, but
just ends up in the idle loop when using StackInterpreterSimulator.
Anyway, I want to focus on finishing off FileAttributesPlugin first.

Thanks again,

More information about the Vm-dev mailing list