Skip to content

FFITestLibrary class>>#ffiTestArrayResultWithString: returning garbage on Linux, cannot simulate it #770

Description

@LinqLover

Hi Eliot, all,

testArrayResultWithString currently fails on Linux because FFITestLibrary class>>#ffiTestArrayResultWithString: returns garbage. I tried to reproduce this in the simulator but stumbled upon further issues there:

  1. When simulating the StackVM:

    | cos |
    cos := StackInterpreterSimulator newWithOptions:
    	#(ObjectMemory Spur64BitMemoryManager
    	MULTIPLEBYTECODESETS true).
    "cos initializeThreadSupport."
    cos desiredNumStackPages: 8.
    
    cos openOn: 'FreshTrunk-tests.image'.
    cos openAsMorph.
    [cos run] forkAt: 20

    and evaluating (FFITestLibrary ffiTestArrayResultWithString: 'hi') fromCString in the nested image, the simulated VM fails with

    Error
    Error: Subscript is out of bounds: 5
    

    Array(Object)>>error:
    Receiver: {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}
    Arguments and temporary variables:
    aString: 'Subscript is out of bounds: 5'
    Receiver's instance variables:
    {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}

    Array(Object)>>errorSubscriptBounds:
    Receiver: {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}
    Arguments and temporary variables:
    index: 5
    Receiver's instance variables:
    {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}

    Array(Object)>>at:
    Receiver: {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}
    Arguments and temporary variables:
    index: 5
    Receiver's instance variables:
    {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}

    CArrayAccessor>>at:
    Receiver: a CArrayAccessor on: {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}
    Arguments and temporary variables:
    index: 4
    Receiver's instance variables:
    object: {a CArrayAccessor on: #[104 105 0] . nil . nil . nil}
    offset: 0

    ThreadedX64SysVFFIPlugin>>ffiCalloutTo:SpecOnStack:in:
    Receiver: a ThreadedX64SysVFFIPlugin
    Arguments and temporary variables:
    procAddr: 136377460022320
    isSpecOnStack: false
    calloutState: a ThreadedFFICalloutStateForX64SysV
    vmHandle: a SignedCArray
    atomicType: 0
    floatRet: nil
    intRet: nil
    sddRet: nil
    sdiRet: nil
    sidRet: nil
    siiRet: nil
    returnStructByValue: false
    registerType: nil
    sRetPtr: nil
    Receiver's instance variables:
    interpreterProxy: a Spur64BitMMLESimulatorFor64Bits
    moduleName: nil
    translatedMethodCache: nil
    nilObj: 7555328
    ffiLogEnabled: false
    externalFunctionInstSize: 3
    ffiLastError: 0
    allocationMap: nil

    ThreadedX64SysVFFIPlugin(ThreadedFFIPlugin)>>ffiCall:ArgsOnStack:ArgArray:NumArgs:
    Receiver: a ThreadedX64SysVFFIPlugin
    Arguments and temporary variables:
    externalFunction: 42942544
    argsAreOnStack: true
    argArrayOrNil: nil
    nArgs: 1
    flags: 0
    argTypeArray: 42964864
    address: 136377460022320
    argType: 43113464
    oop: 2823432
    argSpec: 73893416
    argClass: 7555328
    err: 0
    theCalloutState: nil
    requiredStackSize: -1
    stackSize: 16384
    allocation: a CArrayAccessor on: #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc...
    result: nil
    primNumArgs: 1
    nTypes: 2
    variadicArgsIndex: 2
    i: 2
    calloutState: a ThreadedFFICalloutStateForX64SysV
    Receiver's instance variables:
    interpreterProxy: a Spur64BitMMLESimulatorFor64Bits
    moduleName: nil
    translatedMethodCache: nil
    nilObj: 7555328
    ffiLogEnabled: false
    externalFunctionInstSize: 3
    ffiLastError: 0
    allocationMap: nil

    ThreadedX64SysVFFIPlugin(ThreadedFFIPlugin)>>primitiveCallout
    Receiver: a ThreadedX64SysVFFIPlugin
    Arguments and temporary variables:
    meth: 42919808
    Receiver's instance variables:
    interpreterProxy: a Spur64BitMMLESimulatorFor64Bits
    moduleName: nil
    translatedMethodCache: nil
    nilObj: 7555328
    ffiLogEnabled: false
    externalFunctionInstSize: 3
    ffiLastError: 0
    allocationMap: nil

    StackInterpreterSimulatorLSB(StackInterpreterSimulator)>>callExternalPrimitive:
    Receiver: a StackInterpreterSimulatorLSB
    Arguments and temporary variables:
    mapIndex: 168
    entry: {a ThreadedX64SysVFFIPlugin . #primitiveCallout . [closure] in [] in StackInterpreterSimulatorLSB...etc...
    Receiver's instance variables:
    objectMemory: a Spur64BitMMLESimulatorFor64Bits
    argumentCount: 1
    primFailCode: 0
    secondaryErrorCode: 0
    exceptionPC: 0
    ffiCalloutVMHandle: nil
    profileMethod: nil
    profileProcess: nil
    profileSemaphore: nil
    nextProfileTick: 0
    deferProfileCheckForVNCS: true
    sHEAFn: 63
    ffiExceptionResponse: 0
    eventTraceMask: 0
    multipleBytecodeSetsActive: true
    currentBytecode: 401
    bytecodeSetSelector: 256
    localFP: -33248
    localIP: 3420642
    localSP: -33296
    stackLimit: -34816
    stackPage: a CogStackPage@-32768 -32792<->-33320 trace 0
    stackPages: an InterpreterStackPagesLSB
    messageSelector: 42704496
    newMethod: 42919808
    method: 3420576
    instructionPointer: 3420642
    stackPointer: -33296
    framePointer: -33248
    localReturnValue: 3420576
    localAbsentReceiver: nil
    localAbsentReceiverOrZero: nil
    extA: 0
    extB: 0
    numExtB: 0
    primitiveFunctionPointer: #primitiveCallout
    primitiveCalloutPointer: 168
    methodCache: #(12853504 1088 21934032 275 9876776 3400 22096216 0 9488272 4582 ...etc...
    nsMethodCache: #(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ni...etc...
    atCache: #(16015424 288 10 0 0 0 0 0 2843496 62 26 0 0 0 0 0 2864432 3 21 0 0 0...etc...
    lkupClassTag: 5288
    lkupClass: 42715768
    methodDictLinearSearchLimit: 8
    highestRunnableProcessPriority: 40
    classLinkedListClassTag: 1030
    pcPreviousToFunction: #pcPreviousTo:inSqueakV3PlusClosuresOrSistaV1Method:
    reenterInterpreter: ReenterInterpreter:
    nextWakeupUsecs: 3954696082972671
    nextPollUsecs: 3954696082547293
    inIOProcessEvents: 0
    interruptKeycode: 2094
    interruptPending: false
    savedWindowSize: 111674340
    imageHeaderFlags: 1206
    deferDisplayUpdates: false
    cannotDeferDisplayUpdates: false
    pendingFinalizationSignals: 0
    extraVMMemory: 0
    interpreterProxy: a StackInterpreterSimulatorLSB
    showSurfaceFn: nil
    primitiveTable: #(0 #primitiveAdd #primitiveSubtract #primitiveLessThan #primitiveGreaterThan...etc...
    primitiveAccessorDepthTable: #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0...etc...
    externalPrimitiveTable: a CArrayAccessor on: #(85 100 94 88 82 86 81 128 82 80 ...etc...
    externalPrimitiveTableFirstFreeIndex: 37
    overflowedPage: a CogStackPage@-32768 -32792<->-33320 trace 0
    extraFramesToMoveOnOverflow: 7
    globalSessionID: 985948923
    numStackPages: 8
    desiredNumStackPages: 0
    desiredEdenBytes: 0
    classNameIndex: 6
    thisClassIndex: 5
    metaclassNumSlots: 6
    interruptCheckChain: nil
    suppressHeartbeatFlag: false
    breakSelector: nil
    breakSelectorLength: -1152921504606846976
    breakLookupClassTag: -1
    longRunningPrimitiveCheckMethod: nil
    longRunningPrimitiveCheckSemaphore: nil
    longRunningPrimitiveStartUsecs: 0
    longRunningPrimitiveStopUsecs: 0
    longRunningPrimitiveGCUsecs: nil
    longRunningPrimitiveCheckSequenceNumber: nil
    longRunningPrimitiveSignalUndelivered: nil
    tempOop: 0
    tempOop2: 0
    performWithArgumentsRecursionGuard: nil
    metaAccessorDepth: -2
    theUnknownShort: 0
    the2ndUnknownShort: 0
    maxExtSemTabSizeSet: false
    lastMethodCacheProbeWrite: 820
    gcSemaphoreIndex: 0
    classByteArrayCompactIndex: 50
    checkedPluginName: nil
    primTraceLog: a CArrayAccessor on: #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc...
    primTraceLogIndex: 0
    traceLog: a CArrayAccessor on: #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc...
    traceLogIndex: 0
    traceSources: a CArrayAccessor on: #('?' 'm' 'i' 'enterCritical' 'exitCritical'...etc...
    nativeSP: nil
    nativeStackPointer: nil
    lowcodeCalloutState: nil
    shadowCallStackPointer: nil
    displayBits: 147604344
    displayWidth: 1136
    displayHeight: 664
    displayDepth: 32
    oldImageBaseAddress: 103235740801248
    statForceInterruptCheck: 15588
    statStackOverflow: 5459
    statStackPageDivorce: 21
    statCheckForEvents: 15670
    statProcessSwitch: 1840
    statIOProcessEvents: 350
    statPendingFinalizationSignals: 0
    statIdleUsecs: 0
    debugCallbackPath: 0
    debugCallbackReturns: 0
    debugCallbackInvokes: 0
    printSends: false
    transcript: a VMDeferredFlushTranscriptStream
    parent: nil
    bootstrapping: false
    byteCount: 353206241
    breakCount: nil
    sendCount: 1128559
    lookupCount: 67703
    printReturns: false
    printFrameRange: (0 to: 0)
    printfConversions: an IdentityDictionary()
    myBitBlt: true
    displayForm: Form(1136x664x32)
    fakeForm: Form(203x16x32)
    filesOpen: nil
    imageName: '/home/christoph/squeak/FreshTrunk-tests.image'
    pluginList: {''->a StackInterpreterSimulatorLSB . 'SecurityPlugin'->a SecurityPlugin...etc...
    mappedPluginEntries: an OrderedCollection({a StackInterpreterSimulatorLSB . #primitiveSubtractLargeIntegers...etc...
    quitBlock: [closure] in StackInterpreterSimulatorLSB(StackInterpreterSimulator)...etc...
    displayView: a SimulatorImageMorph(561236)
    eventTransformer: a SimulatorEventTransformer
    printFrameAtEachStep: false
    printBytecodeAtEachStep: false
    systemAttributes: a Dictionary(1->'/home/christoph/squeak/FreshTrunk-tests.imag...etc...
    startMicroseconds: 3954696075464193
    lastYieldMicroseconds: 3954696082528293
    externalSemaphoreSignalRequests: #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 0 0...etc...
    externalSemaphoreSignalResponses: #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 0 ...etc...
    extSemTabSize: 256
    atEachStepBlock: nil
    disableBooleanCheat: false
    performFilters: nil
    eventQueue: SharedQueue2 with 15 items
    assertVEPAES: false
    breakBlock: nil
    inputSemaphoreIndex: 20
    perMethodProfile: nil
    previousMNUSelector: 12937224

    ...

  2. When simulating in a CogVM instead:

    | cos |
    cos := CogVMSimulator newWithOptions: #(Cogit StackToRegisterMappingCogit"SimpleStackBasedCogit"
    										ObjectMemory Spur64BitCoMemoryManager
    										MULTIPLEBYTECODESETS true),
    										{#ISA. Cogit choose64BitISA}.
    "cos initializeThreadSupport."
    cos desiredNumStackPages: 8.
    
    cos openOn: '/home/christoph/squeak/FreshTrunk-tests.image'.
    cos openAsMorph.
    [cos run] forkAt: 20

    I get an imbalanced stack from during startup of the VM within ExternalObjectTable>externalObjectsArray:

    Error
    AssertionFailure: Expected 1 but was 2.
    

    CogVMSimulatorLSB(Object)>>assert:description:
    Receiver: a CogVMSimulatorLSB
    Arguments and temporary variables:
    aBlock: false
    aStringOrBlock: [closure] in CogVMSimulatorLSB(Object)>>assert:equals:description:...etc...
    Receiver's instance variables:
    objectMemory: a Spur64BitMMLECoSimulatorFor64Bits
    argumentCount: 0
    primFailCode: 0
    secondaryErrorCode: 0
    exceptionPC: 0
    ffiCalloutVMHandle: nil
    profileMethod: nil
    profileProcess: nil
    profileSemaphore: nil
    nextProfileTick: 0
    deferProfileCheckForVNCS: true
    sHEAFn: 80
    ffiExceptionResponse: 0
    eventTraceMask: 0
    multipleBytecodeSetsActive: true
    currentBytecode: 384
    bytecodeSetSelector: 256
    localFP: nil
    localIP: 23464979
    localSP: 1442088
    stackLimit: 18446744073709551615
    stackPage: a CogStackPageSurrogate64 160400@ 1467480/166458
    stackPages: a CoInterpreterStackPagesLSB
    messageSelector: 11043680
    newMethod: 27349816
    method: 23464904
    instructionPointer: 5848
    stackPointer: 1442024
    framePointer: 1442072
    localReturnValue: 30168424
    localAbsentReceiver: nil
    localAbsentReceiverOrZero: nil
    extA: 0
    extB: 0
    numExtB: 0
    primitiveFunctionPointer: 0
    primitiveCalloutPointer: -1
    methodCache: a CMethodCacheAccessor on: a DoubleWordArray(14757395258967641292 ...etc...
    nsMethodCache: #(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ni...etc...
    atCache: nil
    lkupClassTag: 1033
    lkupClass: 14019224
    methodDictLinearSearchLimit: 8
    highestRunnableProcessPriority: 0
    classLinkedListClassTag: 1030
    pcPreviousToFunction: #pcPreviousTo:inSqueakV3PlusClosuresOrSistaV1Method:
    reenterInterpreter: ReenterInterpreter:
    nextWakeupUsecs: 0
    nextPollUsecs: 3954696302899454
    inIOProcessEvents: 0
    interruptKeycode: 2094
    interruptPending: false
    savedWindowSize: 111674340
    imageHeaderFlags: 1206
    deferDisplayUpdates: false
    cannotDeferDisplayUpdates: false
    pendingFinalizationSignals: 0
    extraVMMemory: 0
    interpreterProxy: a CogVMSimulatorLSB
    showSurfaceFn: nil
    primitiveTable: #(0 #primitiveAdd #primitiveSubtract #primitiveLessThan #primitiveGreaterThan...etc...
    primitiveAccessorDepthTable: nil
    externalPrimitiveTable: a CArrayAccessor on: #(102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc...
    externalPrimitiveTableFirstFreeIndex: 1
    overflowedPage: nil
    extraFramesToMoveOnOverflow: 0
    globalSessionID: 1371705228
    numStackPages: 8
    desiredNumStackPages: 0
    desiredEdenBytes: 0
    classNameIndex: 6
    thisClassIndex: 5
    metaclassNumSlots: 6
    interruptCheckChain: nil
    suppressHeartbeatFlag: false
    breakSelector: nil
    breakSelectorLength: -1152921504606846976
    breakLookupClassTag: -1
    longRunningPrimitiveCheckMethod: nil
    longRunningPrimitiveCheckSemaphore: nil
    longRunningPrimitiveStartUsecs: 0
    longRunningPrimitiveStopUsecs: 0
    longRunningPrimitiveGCUsecs: nil
    longRunningPrimitiveCheckSequenceNumber: nil
    longRunningPrimitiveSignalUndelivered: nil
    tempOop: 0
    tempOop2: 0
    performWithArgumentsRecursionGuard: nil
    metaAccessorDepth: -2
    theUnknownShort: 0
    the2ndUnknownShort: 0
    maxExtSemTabSizeSet: false
    lastMethodCacheProbeWrite: 3708
    gcSemaphoreIndex: 0
    classByteArrayCompactIndex: 50
    checkedPluginName: nil
    primTraceLog: a CArrayOfLongsAccessor on: a DoubleWordArray(1475739525896764129...etc...
    primTraceLogIndex: 23
    traceLog: a CArrayAccessor on: #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc...
    traceLogIndex: 0
    traceSources: a CArrayAccessor on: #('?' 'm' 'i' 'enterCritical' 'exitCritical'...etc...
    nativeSP: nil
    nativeStackPointer: nil
    lowcodeCalloutState: nil
    shadowCallStackPointer: nil
    displayBits: 0
    displayWidth: 0
    displayHeight: 0
    displayDepth: 0
    oldImageBaseAddress: 103235740801248
    statForceInterruptCheck: 41
    statStackOverflow: 0
    statStackPageDivorce: 0
    statCheckForEvents: 0
    statProcessSwitch: 0
    statIOProcessEvents: 0
    statPendingFinalizationSignals: 0
    statIdleUsecs: 0
    debugCallbackPath: 0
    debugCallbackReturns: 0
    debugCallbackInvokes: 0
    printSends: false
    transcript: a VMDeferredFlushTranscriptStream
    cogit: a StackToRegisterMappingCogit
    cogMethodZone: a CogMethodZone
    gcMode: nil
    cogCodeSize: 1433600
    desiredCogCodeSize: 0
    heapBase: 1506952
    primitiveMetadataTable: #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -256 1 1 1 1 1 1 ...etc...
    lastCoggableInterpretedBlockMethod: 34641784
    deferSmash: false
    deferredSmash: false
    cogCompiledCodeCompactionCalledFor: false
    statCodeCompactionCount: 0
    statCodeCompactionUsecs: 0
    lastUncoggableInterpretedBlockMethod: nil
    maxLiteralCountForCompile: 60
    minBackwardJumpCountForCompile: 40
    CFramePointer: 1506928
    CStackPointer: 1506912
    CReturnAddress: #enterSmalltalkExecutiveImplementation
    primTracePluginName: nil
    primCalloutIsExternal: nil
    cogThreadManager: nil
    checkThreadActivation: false
    maxWaitingPriority: Atomic: nil
    foreignCallbackPriority: 0
    deferThreadSwitch: false
    disowningVMThread: nil
    disownCount: 0
    activeProcessAffined: nil
    relinquishing: false
    parent: nil
    enableCog: true
    byteCount: 400
    lastPollCount: 0
    lastExtPC: 37899840
    sendCount: 79
    lookupCount: 72
    printFrameRange: (1442024 to: 1442088)
    printfConversions: an IdentityDictionary(' method: %WP\t'->' method: ...etc...
    myBitBlt: true
    displayForm: Form(203x16x32)
    fakeForm: Form(203x16x32)
    imageName: '/home/christoph/squeak/FreshTrunk-tests.image'
    pluginList: {''->a CogVMSimulatorLSB . 'SecurityPlugin'->a SecurityPlugin . 'Mi...etc...
    mappedPluginEntries: an OrderedCollection({a CogVMSimulatorLSB . #primitiveGetOwnerLog...etc...
    quitBlock: [closure] in CogVMSimulatorLSB(CogVMSimulator)>>run
    displayView: a SimulatorImageMorph(3541498)
    eventTransformer: a SimulatorEventTransformer
    printFrameAtEachStep: false
    printBytecodeAtEachStep: false
    systemAttributes: a Dictionary(1->'/home/christoph/squeak/FreshTrunk-tests.imag...etc...
    uniqueIndices: a Dictionary(#primitiveNewWithArg->65538 #primitiveSpecialObjectsOop...etc...
    uniqueIndex: 65539
    breakCount: nil
    atEachStepBlock: nil
    startMicroseconds: 3954696302899450
    lastYieldMicroseconds: 3954696302899450
    externalSemaphoreSignalRequests: #()
    externalSemaphoreSignalResponses: #()
    extSemTabSize: 256
    debugStackDepthDictionary: a Dictionary(27349816->a CArrayAccessor on: #(nil ni...etc...
    performFilters: nil
    eventQueue: SharedQueue2 with 41 items
    effectiveCogCodeSize: 1433600
    expectedSends: nil
    expecting: nil
    inputSemaphoreIndex: nil
    zeroNextProfileTickCount: 0
    perMethodProfile: nil

    --- The full stack ---
    CogVMSimulatorLSB(Object)>>assert:description:
    CogVMSimulatorLSB(Object)>>assert:equals:description:
    CogVMSimulatorLSB(Object)>>assert:equals:
    CogVMSimulatorLSB(CogVMSimulator)>>maybeCheckStackDepth:sp:pc:
    CogVMSimulatorLSB(CogVMSimulator)>>ceSend:super:to:numArgs:
    MessageSend>>valueWithArguments:
    [] in StackToRegisterMappingCogit(Cogit)>>handleCallOrJumpSimulationTrap:
    ...etc...

    Stack
    16r160118 M OrderedCollection>reset 16r3700D8: a(n) OrderedCollection
    16r160170 I ExternalObjectTable>externalObjectsArray: 16r1CC5568: a(n) ExternalObjectTable
    16r1601C0 I ExternalObjectTable>synchronizeExternalObjectsArrayAndForceUpdate: 16r1CC5568: a(n) ExternalObjectTable
    16r160208 I [] in ExternalObjectTable>clearExternalObjects 16r1CC5568: a(n) ExternalObjectTable
    16r160258 I FullBlockClosure(BlockClosure)>ensure: 16r36FFC0: a(n) FullBlockClosure
    16r1602A0 I Semaphore>critical: 16r1E55520: a(n) Semaphore
    16r1602E8 I ExternalObjectTable>clearExternalObjects 16r1CC5568: a(n) ExternalObjectTable
    16r160328 I SmalltalkImage>clearExternalObjects 16rC43FA8: a(n) SmalltalkImage
    16r160368 I SmalltalkImage>startUpPostSnapshot: 16rC43FA8: a(n) SmalltalkImage
    16r1603C0 I SmalltalkImage>snapshot:andQuit:withExitCode:embedded: 16rC43FA8: a(n) SmalltalkImage
    16r8DFE4D8 s SmalltalkImage>snapshot:andQuit:embedded: 16rC43FA8: a(n) SmalltalkImage
    16r8DFEF78 s SmalltalkImage>snapshot:andQuit: 16rC43FA8: a(n) SmalltalkImage
    16r8DFFB28 s SmalltalkImage>saveSession 16rC43FA8: a(n) SmalltalkImage
    16r8E00AF8 s TheWorldMainDockingBar>saveImage 16rBD1350: a(n) TheWorldMainDockingBar
    16r8E01F70 s [] in MenuItemMorph>invokeWithEvent: 16r78541A0: a(n) MenuItemMorph
    16r8E04840 s FullBlockClosure(BlockClosure)>ensure: 16r8E048F8: a(n) FullBlockClosure
    16r8E05930 s CursorWithMask(Cursor)>showWhile: 16rF70AF8: a(n) CursorWithMask
    16r8E05A18 s MenuItemMorph>invokeWithEvent: 16r78541A0: a(n) MenuItemMorph
    16r8E06868 s DockingBarMenuMorph>handleCRStroke: 16r784B840: a(n) DockingBarMenuMorph
    16r8E069A8 s [] in DockingBarMenuMorph(MenuMorph)>keyStroke: 16r784B840: a(n) DockingBarMenuMorph
    16r8E06A80 s [] in Array(Collection)>detect:ifFound:ifNone: 16r135DBE8: a(n) Array
    16r8E06BC0 s Array(SequenceableCollection)>do: 16r135DBE8: a(n) Array
    16r8E06DA0 s Array(Collection)>detect:ifFound:ifNone: 16r135DBE8: a(n) Array
    16r8E06E58 s Array(Collection)>detect:ifNone: 16r135DBE8: a(n) Array
    16r8E06CD8 s DockingBarMenuMorph(MenuMorph)>keyStroke: 16r784B840: a(n) DockingBarMenuMorph
    16r8E06F10 s DockingBarMenuMorph(Morph)>handleKeystroke: 16r784B840: a(n) DockingBarMenuMorph
    16r8E06FF8 s KeyboardEvent>sentTo: 16r8E04928: a(n) KeyboardEvent
    16r8E070B0 s DockingBarMenuMorph(Morph)>handleEvent: 16r784B840: a(n) DockingBarMenuMorph
    16r8E07168 s DockingBarMenuMorph(Morph)>handleFocusEvent: 16r784B840: a(n) DockingBarMenuMorph
    16r8E07220 s MorphicEventDispatcher>doHandlingForFocusEvent:with: 16r8E07390: a(n) MorphicEventDispatcher
    16r8E072D8 s MorphicEventDispatcher>dispatchFocusEventFully:with: 16r8E07390: a(n) MorphicEventDispatcher
    16r8E073A8 s DockingBarMenuMorph(MenuMorph)>processFocusEvent:using: 16r784B840: a(n) DockingBarMenuMorph
    16r8E07460 s DockingBarMenuMorph(Morph)>processFocusEvent: 16r784B840: a(n) DockingBarMenuMorph
    16r8E07518 s [] in HandMorph>sendFocusEvent:to:clear: 16r10FFB90: a(n) HandMorph
    16r8E075D0 s [] in ActiveEventVariable class(DynamicVariable class)>value:during: 16r10CB228: a(n) ActiveEventVariable
    16r8E076D8 s FullBlockClosure(BlockClosure)>ensure: 16r8E07790: a(n) FullBlockClosure
    16r8E07888 s ActiveEventVariable class(DynamicVariable class)>value:during: 16r10CB228: a(n) ActiveEventVariable
    16r8E07A78 s [] in ActiveEventVariable class>value:during: 16r10CB228: a(n) ActiveEventVariable
    16r8E07CF0 s FullBlockClosure(BlockClosure)>ensure: 16r8E07DA8: a(n) FullBlockClosure
    16r8E07FD0 s ActiveEventVariable class>value:during: 16r10CB228: a(n) ActiveEventVariable
    16r8E08338 s KeyboardEvent(MorphicEvent)>becomeActiveDuring: 16r8E319C0: a(n) KeyboardEvent
    16r8E077D0 s [] in HandMorph>sendFocusEvent:to:clear: 16r10FFB90: a(n) HandMorph
    16r8E07980 s [] in ActiveHandVariable class(DynamicVariable class)>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E07B40 s FullBlockClosure(BlockClosure)>ensure: 16r8E07BF8: a(n) FullBlockClosure
    16r8E07DE0 s ActiveHandVariable class(DynamicVariable class)>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E080C0 s [] in ActiveHandVariable class>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E083F0 s FullBlockClosure(BlockClosure)>ensure: 16r8E084A8: a(n) FullBlockClosure
    16r8E086B8 s ActiveHandVariable class>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E08938 s HandMorph>becomeActiveDuring: 16r10FFB90: a(n) HandMorph
    16r8E07C38 s [] in HandMorph>sendFocusEvent:to:clear: 16r10FFB90: a(n) HandMorph
    16r8E07ED8 s [] in ActiveWorldVariable class(DynamicVariable class)>value:during: 16r10CB368: a(n) ActiveWorldVariable
    16r8E08188 s FullBlockClosure(BlockClosure)>ensure: 16r8E08240: a(n) FullBlockClosure
    16r8E084E0 s ActiveWorldVariable class(DynamicVariable class)>value:during: 16r10CB368: a(n) ActiveWorldVariable
    16r8E087A8 s [] in ActiveWorldVariable class>value:during: 16r10CB368: a(n) ActiveWorldVariable
    16r8E089F0 s FullBlockClosure(BlockClosure)>ensure: 16r8E08AA8: a(n) FullBlockClosure
    16r8E08B98 s ActiveWorldVariable class>value:during: 16r10CB368: a(n) ActiveWorldVariable
    16r8E08D40 s PasteUpMorph>becomeActiveDuring: 16r10D6E08: a(n) PasteUpMorph
    16r8E08280 s HandMorph>sendFocusEvent:to:clear: 16r10FFB90: a(n) HandMorph
    16r8E085D8 s HandMorph>sendEvent:focus:clear: 16r10FFB90: a(n) HandMorph
    16r8E08870 s HandMorph>sendKeyboardEvent: 16r10FFB90: a(n) HandMorph
    16r8E08AE0 s HandMorph>handleEvent: 16r10FFB90: a(n) HandMorph
    16r8E08C88 s HandMorph>processEvents 16r10FFB90: a(n) HandMorph
    16r8E08DF8 s [] in WorldState>doOneCycleNowFor: 16r10CF1C0: a(n) WorldState
    16r8E08EF8 s [] in ActiveHandVariable class(DynamicVariable class)>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E08FF8 s FullBlockClosure(BlockClosure)>ensure: 16r8E090B0: a(n) FullBlockClosure
    16r8E091A8 s ActiveHandVariable class(DynamicVariable class)>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E09388 s [] in ActiveHandVariable class>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E095C0 s FullBlockClosure(BlockClosure)>ensure: 16r8E09678: a(n) FullBlockClosure
    16r8E09768 s ActiveHandVariable class>value:during: 16r10CB2C8: a(n) ActiveHandVariable
    16r8E09910 s HandMorph>becomeActiveDuring: 16r10FFB90: a(n) HandMorph
    16r8E090F0 s [] in WorldState>doOneCycleNowFor: 16r10CF1C0: a(n) WorldState
    16r8E092A0 s Array(SequenceableCollection)>do: 16r8D3180: a(n) Array
    16r8E09450 s WorldState>handsDo: 16r10CF1C0: a(n) WorldState
    16r8E09508 s WorldState>doOneCycleNowFor: 16r10CF1C0: a(n) WorldState
    16r8E096B0 s WorldState>doOneCycleFor: 16r10CF1C0: a(n) WorldState
    16r8E09858 s PasteUpMorph>doOneCycle 16r10D6E08: a(n) PasteUpMorph
    16r8C176E8 s [] in MorphicProject>spawnNewProcess 16r1F3EEF0: a(n) MorphicProject
    16r8C177C8 s [] in FullBlockClosure(BlockClosure)>newProcess 16r8C177A0: a(n) FullBlockClosure
    

    16r160118 M OrderedCollection>reset 16r3700D8: a(n) OrderedCollection
    16r160128: rcvr/clsr: 16r3700D8 =a(n) OrderedCollection
    16r160120: caller ip: 16r16D8=5848 (ceReturnToInterpreterTrampoline)ceReturnToInterpreter
    FP: 16r160118: saved fp: 16r160170=1442160
    16r160110: method: 16r1FD0 16r1A15338: a(n) CompiledMethod
    16r160110: mcfrm flags: 0x0 numArgs: 0 noContext notBlock
    16r160108: context: 16r8AEE08 =nil
    16r160100: receiver: 16r3700D8 =a(n) OrderedCollection
    16r1600F8: stck: 16r3700D8 =a(n) OrderedCollection
    16r1600F0: stck: 16r9 =1(16r1)
    SP: 16r1600E8: frame ip: 16r2057=8279 (OrderedCollection>>reset@87) 135

If you have any ideas how to further investigate or fix these issues, please let me know.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions