LinqLover / SimulationStudio

A growing suite of applications and tools using code simulation in Squeak/Smalltalk
9 stars 1 forks source link

WriteBarrierTests fail in Sandbox #22

Closed LinqLover closed 3 years ago

LinqLover commented 3 years ago
((WriteBarrierTest suite tests select: #shouldPass)) collect: [:test |
    [Sandbox evaluate: [[test runCaseWithoutTimeout] on: TestFailure do: [:ex | test -> ex]]] on: Error, Warning, Halt do: [:ex | test -> ex]].
    1   WriteBarrierTest>>#testAttemptToMutateLiterals->TestFailure: Assertion failed
    2   WriteBarrierTest>>#testBasicReadOnly
    3   WriteBarrierTest>>#testBasicWritable
    4   WriteBarrierTest>>#testBecomeReadOnly->TestFailure: Assertion failed
    5   WriteBarrierTest>>#testMutateByteArrayUsingByteAtPut
    6   WriteBarrierTest>>#testMutateByteStringyUsingAtPut
    7   WriteBarrierTest>>#testMutateByteStringyUsingByteAtPut
    8   WriteBarrierTest>>#testMutateByteSymbolUsingPrivateAtPut
    9   WriteBarrierTest>>#testMutateIVObject
    10  WriteBarrierTest>>#testMutateObjectClass->NotImplemented: primitiveAdoptInstance
    11  WriteBarrierTest>>#testMutateObjectClassViaAdoption->NotImplemented: primitiveAdoptInstance
    12  WriteBarrierTest>>#testMutateObjectFirstInstVarWithManyVars
    13  WriteBarrierTest>>#testMutateObjectInstVarShouldCatchRightFailure
    14  WriteBarrierTest>>#testMutateObjectInstVarUsingAtPut
    15  WriteBarrierTest>>#testMutateObjectInstVarUsingBasicAtPut
    16  WriteBarrierTest>>#testMutateObjectInstVarUsingInstVarAtPut
    17  WriteBarrierTest>>#testMutateObjectLastInstVarWithManyVars
    18  WriteBarrierTest>>#testMutateVariableObject
    19  WriteBarrierTest>>#testMutateWideStringUsingAtPut
    20  WriteBarrierTest>>#testMutateWideStringUsingWordAtPut
    21  WriteBarrierTest>>#testMutateWideSymbolUsingPrivateAtPut->SandboxError: Exception from simulated code: Error: subscript is out of bounds: 6
    22  WriteBarrierTest>>#testRetryingInstVarModification
    23  WriteBarrierTest>>#testRetryingPointInstVarModification
    24  WriteBarrierTest>>#testSetIsReadOnlyFailure->TestFailure: Expected true but was false.
    25  WriteBarrierTest>>#testSetIsReadOnlyFailureProxy
    26  WriteBarrierTest>>#testSetIsReadOnlyImmediate
    27  WriteBarrierTest>>#testSetIsReadOnlyImmediateProxy
    28  WriteBarrierTest>>#testSetIsReadOnlySuccess

Most likely, the copying logic in Sandbox >> #writableObjectFor: needs to respect existing write barriers. Probably our own primitive implementations should also respect these barriers?

LinqLover commented 3 years ago

Fixed via #21.