Unfortunately no crash.dmp has been created, the VM (3147) shows the error immediately after starting up, no image opened, just the info. But 3148 works fine so I guess you fixed it :)

 

From: Eliot Miranda
Sent: Tuesday, February 8, 2022 3:26
To: Open Smalltalk Virtual Machine Development Discussion
Subject: Re: [Vm-dev] VM Maker: VMMaker.oscog-eem.3147.mcz

 

can you post the crash.dmp?

 

On Sun, Feb 6, 2022 at 3:14 PM Jaromir Matas <mail@jaromir.net> wrote:

 

Hi,

I get this error when starting a fresh updated image with this squeak.cog.spur_win64x64 VM on latest Win 10 x64

Thanks for help,

jaromir

From: commits@source.squeak.org
Sent: Sunday, February 6, 2022 22:52
To: vm-dev@lists.squeakfoundation.org
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.3147.mcz

 


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3147.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.3147
Author: eem
Time: 6 February 2022, 1:51:16.763917 pm
UUID: 409be388-ed75-49dc-a648-c7051eb48168
Ancestors: VMMaker.oscog-eem.3146

Fix regressions in the stack interpreter generated sources from VMMaker.oscog-eem.3144, and in primitiveSupend[V2] from VMMaker.oscog-eem.3142,VMMaker.oscog-eem.3134,VMMaker.oscog-eem.3127.

=============== Diff against VMMaker.oscog-eem.3146 ===============

Item was removed:
- ----- Method: CoInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') -----
- accessorDepthForExternalPrimitiveMethod: methodObj
-        <option: #SpurObjectMemory>
-        | flags lit |
-        self assert: (self isLinkedExternalPrimitive: methodObj).
-        lit := self literal: 0 ofMethod: methodObj.
-         flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit.
-         ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!

Item was removed:
- ----- Method: CoInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') -----
- isLinkedExternalPrimitive: methodObj
-        | header primIdx literal targetFunctionIndex |
-        header := objectMemory methodHeaderOf: methodObj.
-        primIdx := self primitiveIndexOfMethod: methodObj header: header.
-        ^primIdx = PrimNumberExternalCall
-         and: [(objectMemory literalCountOfMethodHeader: header) > 0
-         and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj))
-         and: [(objectMemory numSlotsOf: literal) = 4
-         and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal.
-                (objectMemory isIntegerObject: targetFunctionIndex)
-         and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!

Item was added:
+ ----- Method: StackInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') -----
+ accessorDepthForExternalPrimitiveMethod: methodObj
+        <option: #SpurObjectMemory>
+        | flags lit |
+        self assert: (self isLinkedExternalPrimitive: methodObj).
+        lit := self literal: 0 ofMethod: methodObj.
+         flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit.
+         ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!

Item was added:
+ ----- Method: StackInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') -----
+ isLinkedExternalPrimitive: methodObj
+        | header primIdx literal targetFunctionIndex |
+        header := objectMemory methodHeaderOf: methodObj.
+        primIdx := self primitiveIndexOfMethod: methodObj header: header.
+        ^primIdx = PrimNumberExternalCall
+         and: [(objectMemory literalCountOfMethodHeader: header) > 0
+         and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj))
+         and: [(objectMemory numSlotsOf: literal) = 4
+         and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal.
+                (objectMemory isIntegerObject: targetFunctionIndex)
+         and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!

Item was changed:
  ----- Method: StackInterpreter>>transferTo: (in category 'process primitive support') -----
  transferTo: newProc
         "Record a process to be awoken on the next interpreter cycle."
         | activeContext sched oldProc |
         <inline: false>
         statProcessSwitch := statProcessSwitch + 1.
         self push: instructionPointer.
         self externalWriteBackHeadFramePointers.
         self assertValidExecutionPointe: instructionPointer + 1 r: framePointer s: stackPointer.
         sched := self schedulerPointer.
         oldProc := objectMemory fetchPointer: ActiveProcessIndex ofObject: sched.
         activeContext := self ensureFrameIsMarried: framePointer SP: stackPointer + objectMemory wordSize.
         objectMemory storePointer: SuspendedContextIndex ofObject: oldProc withValue: activeContext.
         objectMemory storePointer: ActiveProcessIndex ofObject: sched withValue: newProc.
         objectMemory storePointerUnchecked: MyListIndex ofObject: newProc withValue: objectMemory nilObject.
+        self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc.
+        ^0 "to allow primitiveSuspend[V2] to exit early by returning the result of transferTo:"!
-        self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc!

 


 

--

_,,,^..^,,,_

best, Eliot