Hi,

Thanks very much!

I find the following crash

When I run this command:

WebClient httpHead: 'https://www.google.ch'

I see the following crash below on a x8664 system:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu Jammy Jellyfish"

If I apply the following patch the crash goes away.

diff --git a/src/plugins/SqueakSSL/SqueakSSL.c b/src/plugins/SqueakSSL/SqueakSSL.c
index 05dc5c0a6..d8f54e5ae 100644
--- a/src/plugins/SqueakSSL/SqueakSSL.c
+++ b/src/plugins/SqueakSSL/SqueakSSL.c
@@ -247,9 +247,9 @@ primitiveConnect(void)
        dstPtr = firstIndexableField(dstOop);
        srcPtr = (srcPtr + start) - 1;
        dstLen = byteSizeOf(dstOop);
-       vmHandle = disownVM(DisownVMForThreading);
+       //vmHandle = disownVM(DisownVMForThreading);
        result = sqConnectSSL(handle, srcPtr, srcLen, dstPtr, dstLen);
-       ownVM(vmHandle);
+       //ownVM(vmHandle);
        if (!wasSrcPinned) {
                unpinObject(srcOop);
        }

Sorry, I realize that patch is quite trivial and just removes the added feature.

I also see a crash running the same command on Raspberry PIs running the latest OS based on Debian 12.4.

Thanks

cheers
bruce



================
x86-64 Linux crash
================
Segmentation fault Wed Feb 14 11:28:29 2024


/home/edoneel/local/squeak/squeak
Squeak VM version: 5.0-202402132331  Wed Feb 14 10:44:19 CET 2024 gcc 11 [Production Spur 64-bit x86_64 VM]
Built from: CoInterpreter VMMaker.oscog-eem.3349 uuid: 09001547-129a-4b6b-9fed-ccdd6790c8f4 Feb 14 2024
With: StackToRegisterMappingCogit VMMaker.oscog-eem.3347 uuid: 7e4df21b-b561-434b-b2d3-45e8806d7875 Feb 14 2024
Revision: VM: 202402132331 edoneel@water:tmp/opensmalltalk-vm
Date: Tue Feb 13 15:31:15 2024 CommitHash: c1cd03540
Plugins: 202402132331 edoneel@water:tmp/opensmalltalk-vm
Build host: Linux water 5.15.0-94-generic #104-Ubuntu SMP Tue Jan 9 15:25:40 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /home/edoneel/local/squeak/ [default: /home/edoneel/local/squeak/]


C stack backtrace & registers:
    rax 0x100018e01010316 rbx            0x1 rcx            0x6 rdx 0x7ffef3d73ec0
    rdi            0x1 rsi          (nil) rbp 0x7ffef3d4c490 rsp 0x7ffef3d4c3d0
    r8  0x55f7557898e0 r9  0xfffffffffffffff9 r10          (nil) r11 0x7f86b762ea70
    r12 0x7ffef3d73f30 r13 0x55f75733ddcb r14 0x55f7540737e0 r15 0x7ffef3d73ed0
    rip 0x55f75404469f
*/home/edoneel/local/squeak/squeak(+0x3869f)[0x55f75404469f]
/home/edoneel/local/squeak/squeak(+0xc7155)[0x55f7540d3155]
/home/edoneel/local/squeak/squeak(+0xc750d)[0x55f7540d350d]
/lib/x86_64-linux-gnu/libc.so.6(+0x42520)[0x7f86ba03f520]
/home/edoneel/local/squeak/squeak(+0x3869f)[0x55f75404469f]
/home/edoneel/local/squeak/squeak(interpret+0x72b)[0x55f75408459b]
/home/edoneel/local/squeak/squeak(interpret+0x78b3)[0x55f75408b723]
[0x55f754d19e8e]
[0x0]


Smalltalk stack dump:
0x7ffef3d73ec0 I [] in UndefinedObject>(nil) 0x55f7557898e0: a(n) UndefinedObject
0x7ffef3d73f30 I SqueakSSL>connect:from:to:into: 0x55f7555bc060: a(n) SqueakSSL
0x7ffef3d73f90 M [] in SecureSocketStream>sslConnectTo: 0x55f7555b3108: a(n) SecureSocketStream
0x7ffef3d73fd0 M FullBlockClosure(BlockClosure)>ifCurtailed: 0x55f7555bc248: a(n) FullBlockClosure
0x7ffef3d74028 I SecureSocketStream>sslConnectTo: 0x55f7555b3108: a(n) SecureSocketStream
0x7ffef3d74070 I WebClient>sslConnect:to: 0x55f75552d0b0: a(n) WebClient
0x7ffef3d740d0 I WebClient>sslConnect 0x55f75552d0b0: a(n) WebClient
0x7ffef3d74120 I WebClient>connect 0x55f75552d0b0: a(n) WebClient
0x7ffef3d74180 I WebClient>sendRequest:contentBlock: 0x55f75552d0b0: a(n) WebClient
0x7ffef3d741d0 I WebClient>sendRequest:content:size: 0x55f75552d0b0: a(n) WebClient
0x7ffef3d74228 I WebClient>sendRequest: 0x55f75552d0b0: a(n) WebClient
0x7ffef3d74278 I WebClient>httpHead:do: 0x55f75552d0b0: a(n) WebClient
0x7ffef3d742c8 I WebClient>httpHead: 0x55f75552d0b0: a(n) WebClient
0x7ffef3d74308 M [] in WebClient class>httpHead: 0x55f755c43eb0: a(n) WebClient
0x7ffef3d74350 M [] in WebClient class>httpDo: 0x55f755c43eb0: a(n) WebClient
0x7ffef3d74388 M [] in WebUtils class>handleAuth: 0x55f755c43d80: a(n) WebUtils
0x7ffef3d743c8 M FullBlockClosure(BlockClosure)>on:do: 0x55f7555ae3c8: a(n) FullBlockClosure
0x7ffef3d74420 I WebUtils class>handleAuth: 0x55f755c43d80: a(n) WebUtils
0x7ffef3d74478 I WebClient class>httpDo: 0x55f755c43eb0: a(n) WebClient
  0x55f75552cfc8 s WebClient class>httpHead: 0x55f755c43eb0: a(n) WebClient
  0x55f75557ec18 s UndefinedObject>DoIt 0x55f7557898e0: a(n) UndefinedObject
  0x55f7554990d0 s Compiler>evaluateCue:ifFail: 0x55f755498c98: a(n) Compiler
  0x55f755498fe8 s Compiler>evaluateCue:ifFail:logged: 0x55f755498c98: a(n) Compiler
  0x55f75557ecd0 s Compiler>evaluate:in:to:environment:notifying:ifFail:logged: 0x55f755498c98: a(n) Compiler
  0x55f755498e00 s [] in SmalltalkEditor>evaluateSelectionAndDo: 0x55f755031610: a(n) SmalltalkEditor
  0x55f7554992a0 s FullBlockClosure(BlockClosure)>on:do: 0x55f755498c38: a(n) FullBlockClosure
  0x55f755497268 s SmalltalkEditor(TextEditor)>evaluateSelectionAndDo: 0x55f755031610: a(n) SmalltalkEditor
  0x55f755497188 s SmalltalkEditor(TextEditor)>printIt 0x55f755031610: a(n) SmalltalkEditor
  0x55f7555734e8 s SmalltalkEditor(TextEditor)>printIt: 0x55f755031610: a(n) SmalltalkEditor
  0x55f7555735a0 s SmalltalkEditor(TextEditor)>dispatchOnKeyboardEvent: 0x55f755031610: a(n) SmalltalkEditor
  0x55f755573658 s SmalltalkEditor(TextEditor)>keyStroke: 0x55f755031610: a(n) SmalltalkEditor
  0x55f755573710 s [] in TextMorphForEditView>keyStroke: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f7555737c8 s TextMorphForEditView(TextMorph)>handleInteraction:fromEvent: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755573880 s TextMorphForEditView>handleInteraction:fromEvent: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755496360 s [] in TextMorphForEditView>keyStroke: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755573938 s StandardToolSet class>codeCompletionAround:textMorph:keyStroke: 0x55f755b00788: a(n) StandardToolSet
  0x55f7555739f0 s ToolSet class>codeCompletionAround:textMorph:keyStroke: 0x55f755af9750: a(n) ToolSet
  0x55f755496278 s TextMorphForEditView(TextMorph)>keyStroke: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755573aa8 s TextMorphForEditView>keyStroke: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755573b60 s TextMorphForEditView(Morph)>handleKeystroke: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755573c18 s TextMorphForEditView(TextMorph)>handleKeystroke: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755573cd0 s KeyboardEvent>sentTo: 0x55f755495c88: a(n) KeyboardEvent
  0x55f755573d88 s TextMorphForEditView(Morph)>handleEvent: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755573e40 s TextMorphForEditView(Morph)>handleFocusEvent: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755495db0 s MorphicEventDispatcher>doHandlingForFocusEvent:with: 0x55f755494600: a(n) MorphicEventDispatcher
  0x55f755495cf8 s MorphicEventDispatcher>dispatchFocusEvent:with: 0x55f755494600: a(n) MorphicEventDispatcher
  0x55f7555713b0 s TextMorphForEditView(Morph)>processFocusEvent:using: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755571468 s TextMorphForEditView(Morph)>processFocusEvent: 0x55f75502e918: a(n) TextMorphForEditView
  0x55f755571520 s [] in HandMorph>sendFocusEvent:to:clear: 0x55f755ffdd60: a(n) HandMorph
  0x55f7555715d8 s [] in ActiveEventVariable class>value:during: 0x55f755fbf218: a(n) ActiveEventVariable
  0x55f755571690 s FullBlockClosure(BlockClosure)>ensure: 0x55f755494568: a(n) FullBlockClosure
  0x55f755494480 s ActiveEventVariable class(DynamicVariable class)>value:during: 0x55f755fbf218: a(n) ActiveEventVariable
  0x55f755571748 s [] in ActiveEventVariable class>value:during: 0x55f755fbf218: a(n) ActiveEventVariable
  0x55f755571800 s FullBlockClosure(BlockClosure)>ensure: 0x55f755494400: a(n) FullBlockClosure
  0x55f755494348 s ActiveEventVariable class>value:during: 0x55f755fbf218: a(n) ActiveEventVariable
  0x55f7555718b8 s KeyboardEvent(MorphicEvent)>becomeActiveDuring: 0x55f755493290: a(n) KeyboardEvent
  0x55f755494090 s [] in HandMorph>sendFocusEvent:to:clear: 0x55f755ffdd60: a(n) HandMorph
  0x55f755571970 s [] in ActiveHandVariable class>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f755571a28 s FullBlockClosure(BlockClosure)>ensure: 0x55f755494010: a(n) FullBlockClosure
  0x55f755493f28 s ActiveHandVariable class(DynamicVariable class)>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f755571ae0 s [] in ActiveHandVariable class>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f755571b98 s FullBlockClosure(BlockClosure)>ensure: 0x55f755493ea8: a(n) FullBlockClosure
  0x55f755493df0 s ActiveHandVariable class>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f755571c50 s HandMorph>becomeActiveDuring: 0x55f755ffdd60: a(n) HandMorph
  0x55f755493c18 s [] in HandMorph>sendFocusEvent:to:clear: 0x55f755ffdd60: a(n) HandMorph
  0x55f755493a90 s [] in ActiveWorldVariable class>value:during: 0x55f755fbf358: a(n) ActiveWorldVariable
  0x55f75556ef88 s FullBlockClosure(BlockClosure)>ensure: 0x55f755493a10: a(n) FullBlockClosure
  0x55f755493928 s ActiveWorldVariable class(DynamicVariable class)>value:during: 0x55f755fbf358: a(n) ActiveWorldVariable
  0x55f75556f040 s [] in ActiveWorldVariable class>value:during: 0x55f755fbf358: a(n) ActiveWorldVariable
  0x55f75556f0f8 s FullBlockClosure(BlockClosure)>ensure: 0x55f7554938a8: a(n) FullBlockClosure
  0x55f7554937f0 s ActiveWorldVariable class>value:during: 0x55f755fbf358: a(n) ActiveWorldVariable
  0x55f75556f1b0 s PasteUpMorph>becomeActiveDuring: 0x55f755fd2a88: a(n) PasteUpMorph
  0x55f755493618 s HandMorph>sendFocusEvent:to:clear: 0x55f755ffdd60: a(n) HandMorph
  0x55f75556f268 s HandMorph>sendEvent:focus:clear: 0x55f755ffdd60: a(n) HandMorph
  0x55f755493518 s HandMorph>sendKeyboardEvent: 0x55f755ffdd60: a(n) HandMorph
  0x55f75556f320 s HandMorph>handleEvent: 0x55f755ffdd60: a(n) HandMorph
  0x55f75556f3d8 s HandMorph>processEvents 0x55f755ffdd60: a(n) HandMorph
  0x55f75556f490 s [] in WorldState>doOneCycleNowFor: 0x55f755fc9cb8: a(n) WorldState
  0x55f75556f548 s [] in ActiveHandVariable class>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f75556f600 s FullBlockClosure(BlockClosure)>ensure: 0x55f75548baa8: a(n) FullBlockClosure
  0x55f75548b9c0 s ActiveHandVariable class(DynamicVariable class)>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f75556f6b8 s [] in ActiveHandVariable class>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f75556f770 s FullBlockClosure(BlockClosure)>ensure: 0x55f75548b940: a(n) FullBlockClosure
  0x55f75548b888 s ActiveHandVariable class>value:during: 0x55f755fbf2b8: a(n) ActiveHandVariable
  0x55f75556f828 s HandMorph>becomeActiveDuring: 0x55f755ffdd60: a(n) HandMorph
  0x55f75548b4f8 s [] in WorldState>doOneCycleNowFor: 0x55f755fc9cb8: a(n) WorldState
  0x55f75556f8e0 s Array(SequenceableCollection)>do: 0x55f7557ae078: a(n) Array
  0x55f75556f998 s WorldState>handsDo: 0x55f755fc9cb8: a(n) WorldState
  0x55f75548b410 s WorldState>doOneCycleNowFor: 0x55f755fc9cb8: a(n) WorldState
  0x55f75556fa50 s WorldState>doOneCycleFor: 0x55f755fc9cb8: a(n) WorldState
  0x55f75556fb08 s PasteUpMorph>doOneCycle 0x55f755fd2a88: a(n) PasteUpMorph
  0x55f758759730 s [] in MorphicProject>spawnNewProcess 0x55f7563b5728: a(n) MorphicProject
  0x55f7587598d8 s [] in FullBlockClosure>newProcess 0x55f758759990: a(n) FullBlockClosure

Most recent primitives
String>>#compareWith:collated:
String>>#compareWith:collated:
Context>>#findNextHandlerContextStarting
Context>>#tempAt:
Context>>#tempAt:
Context>>#tempAt:put:
Context>>#tempAt:
Context>>#findNextUnwindContextUpTo:
Context>>#tempAt:
Context>>#tempAt:put:
Context>>#tempAt:
Behavior>>#basicNew:
Context>>#stackp:
**StackOverflow**
Context>>#stackp:
Context>>#at:put:
Context>>#stackp:
Context>>#at:put:
Context>>#at:
Context>>#stackp:
Context>>#stackp:
Context>>#at:put:
Object>>#at:
Object>>#at:
Object>>#at:
Object>>#at:
Context>>#stackp:
Context>>#at:put:
Context>>#at:
Context>>#stackp:
Context>>#tempAt:put:
Context>>#stackp:
Context>>#at:put:
Context>>#at:
Context>>#stackp:
Context>>#findNextUnwindContextUpTo:
Context>>#terminateTo:
String>>#compareWith:collated:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
Behavior>>#basicNew
FullBlockClosure>>#value
FullBlockClosure>>#value
FullBlockClosure>>#value:
ByteString>>#findSubstring:in:startingAt:matchTable:
String>>#compareWith:collated:
Character>>#asciiValue
ByteString>>#indexOfAscii:inString:startingAt:
Character>>#asciiValue
ByteString>>#indexOfAscii:inString:startingAt:
String>>#compareWith:collated:
FullBlockClosure>>#value
Behavior>>#basicNew
ByteString>>#findSubstring:in:startingAt:matchTable:
ArrayedCollection>>#size
SmallInteger>>#+
ArrayedCollection>>#size
SmallInteger>>#-
SmallInteger>>#-
SmallInteger>>#+
SmallInteger>>#>=
Behavior>>#basicNew
FullBlockClosure>>#value:
Behavior>>#basicNew
FullBlockClosure>>#value:
String>>#compareWith:collated:
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
FullBlockClosure>>#value
Object>>#species
String>>#compareWith:collated:
NetNameResolver>>#primNameResolverStatus
Behavior>>#basicNew
Semaphore>>#wait
FullBlockClosure>>#valueNoContextSwitch
SmalltalkImage>>#specialObjectsArray
Object>>#at:
Object>>#at:
Object>>#at:put:
Object>>#at:
Object>>#at:put:
ProtoObject>>#identityHash
Object>>#at:
Behavior>>#basicNew
Object>>#at:put:
SmallInteger>>#*
SmallInteger>>#*
Semaphore>>#signal
FullBlockClosure>>#value:value:
NetNameResolver>>#primInitializeNetwork:
NetNameResolver>>#primHostNameSize
ByteString>>#at:
Character>>#asInteger
Character>>#asInteger
Object>>#at:
Time>>#utcMicrosecondClock
Semaphore>>#wait
FullBlockClosure>>#valueNoContextSwitch
NetNameResolver>>#primNameResolverStatus
NetNameResolver>>#primStartLookupOfName:
NetNameResolver>>#primNameResolverStatus
NetNameResolver>>#primNameLookupResult
Semaphore>>#signal
NetNameResolver>>#primNameResolverStatus
SmallInteger>>#=
FullBlockClosure>>#value
Behavior>>#basicNew
Array>>#new:
Behavior>>#basicNew
Object>>#at:put:
Object>>#at:put:
Object>>#at:put:
Array>>#new:
Semaphore>>#wait
FullBlockClosure>>#valueNoContextSwitch
**StackOverflow**
SmalltalkImage>>#specialObjectsArray
Object>>#at:
Object>>#at:
SmallInteger>>#>
Object>>#at:
Object>>#at:put:
Object>>#at:
Object>>#at:put:
SmallInteger>>#\\
Object>>#at:put:
SmallInteger>>#*
SmallInteger>>#*
SmallInteger>>#//
Object>>#at:
Object>>#at:
Array>>#new:
Object>>#at:
SmallInteger>>#\\
Object>>#at:
Object>>#at:put:
Semaphore>>#signal
Object>>#at:
Object>>#at:
Object>>#at:
Object>>#at:
Object>>#at:
FullBlockClosure>>#valueNoContextSwitch
FullBlockClosure>>#valueWithArguments:
Socket>>#primSocketCreateNetwork:type:receiveBufferSize:sendBufSize:semaIndex:readSemaIndex:writeSemaIndex:
Object>>#shallowCopy
ProtoObject>>#identityHash
SmallInteger>>#\\
Object>>#at:
Object>>#at:
SmallInteger>>#\\
Object>>#at:
FullBlockClosure>>#value
Semaphore>>#wait
FullBlockClosure>>#value
FullBlockClosure>>#value
Behavior>>#basicNew:
Object>>#at:put:
Behavior>>#basicNew
**StackOverflow**
Array>>#new:
Object>>#at:put:
Semaphore>>#signal
FullBlockClosure>>#value
FullBlockClosure>>#value:
Socket>>#primSocketConnectionStatus:
NetNameResolver>>#primNameResolverStatus
Socket>>#primSocketConnectionStatus:
Socket>>#primSocket:connectTo:port:
Time>>#utcMicrosecondClock
SmallInteger>>#//
Socket>>#primSocketConnectionStatus:
Time>>#utcMicrosecondClock
Behavior>>#basicNew
FullBlockClosure>>#valueNoContextSwitch
Semaphore>>#wait
Semaphore>>#signal
Time>>#utcMicrosecondClock
SmallInteger>>#*
Delay>>#primSignal:atUTCMicroseconds:
Semaphore>>#wait
Semaphore>>#signal
Semaphore>>#wait
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
FullBlockClosure>>#value
Semaphore>>#wait
FullBlockClosure>>#valueNoContextSwitch
Semaphore>>#signal
Time>>#utcMicrosecondClock
Object>>#at:
Object>>#at:
Object>>#at:put:
Delay>>#primSignal:atUTCMicroseconds:
Semaphore>>#wait
Semaphore>>#signal
Socket>>#primSocketConnectionStatus:
Behavior>>#basicNew
Behavior>>#basicNew:
Behavior>>#basicNew:
String>>#compareWith:collated:
ProtoObject>>#identityHash
Behavior>>#basicNew
Behavior>>#basicNew:
Behavior>>#basicNew:
Behavior>>#basicNew:
Behavior>>#adoptInstance:
Behavior>>#basicNew:
Behavior>>#basicNew:
ArrayedCollection>>#size
ProtoObject>>#identityHash
SmallInteger>>#\\
Object>>#basicAt:
Behavior>>#basicNew
SqueakSSL>>#primitiveSSLCreate
FullBlockClosure>>#value
SqueakSSL>>#primitiveSSL:setStringProperty:toValue:
FullBlockClosure>>#valueNoContextSwitch
ArrayedCollection>>#size
SqueakSSL>>#primitiveSSL:connect:startingAt:count:into:

stack page bytes 8192 available headroom 5576 minimum unused headroom 6024

(Segmentation fault)
Aborted (core dumped)


================
Raspberry Pi ARM64 crash
================

Segmentation fault Wed Feb 14 11:33:39 2024


/home/edoneel/local/squeak/squeak
Squeak VM version: 5.0-202402132331  Wed Feb 14 10:49:51 AM CET 2024 gcc 12 [Production Spur 64-bit aarch64 VM]
Built from: CoInterpreter VMMaker.oscog-eem.3349 uuid: 09001547-129a-4b6b-9fed-ccdd6790c8f4 Feb 14 2024
With: StackToRegisterMappingCogit VMMaker.oscog-eem.3349 uuid: 09001547-129a-4b6b-9fed-ccdd6790c8f4 Feb 14 2024
Revision: VM: 202402132331 edoneel@water:tmp/opensmalltalk-vm
Date: Tue Feb 13 15:31:15 2024 CommitHash: c1cd03540
Plugins: 202402132331 edoneel@water:tmp/opensmalltalk-vm
Build host: Linux neve 6.1.0-rpi7-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.63-1+rpt1 (2023-11-24) aarch64 GNU/Linux
plugin path: /home/edoneel/local/squeak/ [default: /home/edoneel/local/squeak/]


C stack backtrace & registers:
     x0            0x1  x1 0x100019201010316  x2            0x6  x3   0x7ffb8de2e0
     x4   0x555b6f1530  x5     0x7fffffff  x6          (nil)  x7   0x7fb9fb008c
     x8           0x16  x9 0xffffffffffffed5f x10 0xffffffffffff006b x11 0xffffffffffff00a7
    x12 0xffffffffffff00b0 x13 0xffffffffffff00ff x14           0x10 x15          (nil)
    x16            0x2 x17          (nil) x18          (nil) x19   0x555b6f1000
    x20          (nil) x21   0x555b6f1530 x22            0x1 x23          (nil)
    x24   0x555b6e0000 x25          (nil) x26   0x7ffb8de350 x27   0x5560e3ddcb
    x29   0x555b5a66e0  fp   0x7ffb8b47e0  lr   0x555b5b65e4  sp   0x7ffb8b47e0
*/home/edoneel/local/squeak/squeak(+0x3abc0)[0x555b57abc0]
/home/edoneel/local/squeak/squeak(+0xc2c64)[0x555b602c64]
/home/edoneel/local/squeak/squeak(+0xc300c)[0x555b60300c]
linux-vdso.so.1(__kernel_rt_sigreturn+0x0)[0x7fbc5307bc]
/home/edoneel/local/squeak/squeak(+0x3abc0)[0x555b57abc0]
/home/edoneel/local/squeak/squeak(interpret+0x644)[0x555b5b65e4]
/home/edoneel/local/squeak/squeak(interpret+0x870)[0x555b5b6810]
/home/edoneel/local/squeak/squeak(main+0x49c)[0x555b574bdc]
/lib/aarch64-linux-gnu/libc.so.6(+0x27780)[0x7fbc2d7780]
/lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0x98)[0x7fbc2d7858]
/home/edoneel/local/squeak/squeak(_start+0x30)[0x555b574d30]
[0x0]


Smalltalk stack dump:
0x7ffb8de2e0 I [] in UndefinedObject>(nil) 0x555f2898e0: a(n) UndefinedObject
0x7ffb8de350 I SqueakSSL>connect:from:to:into: 0x555eccea48: a(n) SqueakSSL
0x7ffb8de3b0 M [] in SecureSocketStream>sslConnectTo: 0x555ecc5af0: a(n) SecureSocketStream
0x7ffb8de3f0 M FullBlockClosure(BlockClosure)>ifCurtailed: 0x555eccec30: a(n) FullBlockClosure
0x7ffb8de448 I SecureSocketStream>sslConnectTo: 0x555ecc5af0: a(n) SecureSocketStream
0x7ffb8de490 I WebClient>sslConnect:to: 0x555ec42ce8: a(n) WebClient
0x7ffb8de4f0 I WebClient>sslConnect 0x555ec42ce8: a(n) WebClient
0x7ffb8de540 I WebClient>connect 0x555ec42ce8: a(n) WebClient
0x7ffb8de5a0 I WebClient>sendRequest:contentBlock: 0x555ec42ce8: a(n) WebClient
0x7ffb8de5f0 I WebClient>sendRequest:content:size: 0x555ec42ce8: a(n) WebClient
0x7ffb8de648 I WebClient>sendRequest: 0x555ec42ce8: a(n) WebClient
0x7ffb8de698 I WebClient>httpHead:do: 0x555ec42ce8: a(n) WebClient
0x7ffb8de6e8 I WebClient>httpHead: 0x555ec42ce8: a(n) WebClient
0x7ffb8de728 M [] in WebClient class>httpHead: 0x555f743eb0: a(n) WebClient
0x7ffb8de770 M [] in WebClient class>httpDo: 0x555f743eb0: a(n) WebClient
0x7ffb8de7a8 M [] in WebUtils class>handleAuth: 0x555f743d80: a(n) WebUtils
0x7ffb8de7e8 M FullBlockClosure(BlockClosure)>on:do: 0x555ecc0c40: a(n) FullBlockClosure
0x7ffb8de840 I WebUtils class>handleAuth: 0x555f743d80: a(n) WebUtils
0x7ffb8de898 I WebClient class>httpDo: 0x555f743eb0: a(n) WebClient
    0x555ec42c00 s WebClient class>httpHead: 0x555f743eb0: a(n) WebClient
    0x555ec8a128 s UndefinedObject>DoIt 0x555f2898e0: a(n) UndefinedObject
    0x555ea02998 s Compiler>evaluateCue:ifFail: 0x555ea02980: a(n) Compiler
    0x555ea02ad0 s Compiler>evaluateCue:ifFail:logged: 0x555ea02980: a(n) Compiler
    0x555ec8a1e0 s Compiler>evaluate:in:to:environment:notifying:ifFail:logged: 0x555ea02980: a(n) Compiler
    0x555ea02bd8 s [] in SmalltalkEditor>evaluateSelectionAndDo: 0x55629406b0: a(n) SmalltalkEditor
    0x555ec8a298 s FullBlockClosure(BlockClosure)>on:do: 0x555ea02c90: a(n) FullBlockClosure
    0x555ea02cf0 s SmalltalkEditor(TextEditor)>evaluateSelectionAndDo: 0x55629406b0: a(n) SmalltalkEditor
    0x555ea023f8 s SmalltalkEditor(TextEditor)>printIt 0x55629406b0: a(n) SmalltalkEditor
    0x555ec87c48 s SmalltalkEditor(TextEditor)>printIt: 0x55629406b0: a(n) SmalltalkEditor
    0x555ec87d00 s SmalltalkEditor(TextEditor)>dispatchOnKeyboardEvent: 0x55629406b0: a(n) SmalltalkEditor
    0x555ec87db8 s SmalltalkEditor(TextEditor)>keyStroke: 0x55629406b0: a(n) SmalltalkEditor
    0x555ec87e70 s [] in TextMorphForEditView>keyStroke: 0x556291e628: a(n) TextMorphForEditView
    0x555ec87f28 s TextMorphForEditView(TextMorph)>handleInteraction:fromEvent: 0x556291e628: a(n) TextMorphForEditView
    0x555ec87fe0 s TextMorphForEditView>handleInteraction:fromEvent: 0x556291e628: a(n) TextMorphForEditView
    0x555ea02560 s [] in TextMorphForEditView>keyStroke: 0x556291e628: a(n) TextMorphForEditView
    0x555ec88098 s StandardToolSet class>codeCompletionAround:textMorph:keyStroke: 0x555f600788: a(n) StandardToolSet
    0x555ec88150 s ToolSet class>codeCompletionAround:textMorph:keyStroke: 0x555f5f9750: a(n) ToolSet
    0x555ea02648 s TextMorphForEditView(TextMorph)>keyStroke: 0x556291e628: a(n) TextMorphForEditView
    0x555ec88208 s TextMorphForEditView>keyStroke: 0x556291e628: a(n) TextMorphForEditView
    0x555ec882c0 s TextMorphForEditView(Morph)>handleKeystroke: 0x556291e628: a(n) TextMorphForEditView
    0x555ec88378 s TextMorphForEditView(TextMorph)>handleKeystroke: 0x556291e628: a(n) TextMorphForEditView
    0x555ec88430 s KeyboardEvent>sentTo: 0x555ea024b0: a(n) KeyboardEvent
    0x555ec884e8 s TextMorphForEditView(Morph)>handleEvent: 0x556291e628: a(n) TextMorphForEditView
    0x555ec885a0 s TextMorphForEditView(Morph)>handleFocusEvent: 0x556291e628: a(n) TextMorphForEditView
    0x555ea02700 s MorphicEventDispatcher>doHandlingForFocusEvent:with: 0x555ea01b20: a(n) MorphicEventDispatcher
    0x555ea01b38 s MorphicEventDispatcher>dispatchFocusEvent:with: 0x555ea01b20: a(n) MorphicEventDispatcher
    0x555ec85b10 s TextMorphForEditView(Morph)>processFocusEvent:using: 0x556291e628: a(n) TextMorphForEditView
    0x555ec85bc8 s TextMorphForEditView(Morph)>processFocusEvent: 0x556291e628: a(n) TextMorphForEditView
    0x555ec85c80 s [] in HandMorph>sendFocusEvent:to:clear: 0x555fafdd60: a(n) HandMorph
    0x555ec85d38 s [] in ActiveEventVariable class>value:during: 0x555fabf218: a(n) ActiveEventVariable
    0x555ec85df0 s FullBlockClosure(BlockClosure)>ensure: 0x555ea01c30: a(n) FullBlockClosure
    0x555ea01cc0 s ActiveEventVariable class(DynamicVariable class)>value:during: 0x555fabf218: a(n) ActiveEventVariable
    0x555ec85ea8 s [] in ActiveEventVariable class>value:during: 0x555fabf218: a(n) ActiveEventVariable
    0x555ec85f60 s FullBlockClosure(BlockClosure)>ensure: 0x555ea01d78: a(n) FullBlockClosure
    0x555ea01de8 s ActiveEventVariable class>value:during: 0x555fabf218: a(n) ActiveEventVariable
    0x555ec86018 s KeyboardEvent(MorphicEvent)>becomeActiveDuring: 0x555ea010c8: a(n) KeyboardEvent
    0x555ea01ea0 s [] in HandMorph>sendFocusEvent:to:clear: 0x555fafdd60: a(n) HandMorph
    0x555ec860d0 s [] in ActiveHandVariable class>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec86188 s FullBlockClosure(BlockClosure)>ensure: 0x555ea01f98: a(n) FullBlockClosure
    0x555ea02028 s ActiveHandVariable class(DynamicVariable class)>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec86240 s [] in ActiveHandVariable class>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec862f8 s FullBlockClosure(BlockClosure)>ensure: 0x555ea020e0: a(n) FullBlockClosure
    0x555ea02150 s ActiveHandVariable class>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec863b0 s HandMorph>becomeActiveDuring: 0x555fafdd60: a(n) HandMorph
    0x555ea02208 s [] in HandMorph>sendFocusEvent:to:clear: 0x555fafdd60: a(n) HandMorph
    0x555ec86468 s [] in ActiveWorldVariable class>value:during: 0x555fabf358: a(n) ActiveWorldVariable
    0x555ea02300 s FullBlockClosure(BlockClosure)>ensure: 0x555ea022c0: a(n) FullBlockClosure
    0x555ea01130 s ActiveWorldVariable class(DynamicVariable class)>value:during: 0x555fabf358: a(n) ActiveWorldVariable
    0x555ec83858 s [] in ActiveWorldVariable class>value:during: 0x555fabf358: a(n) ActiveWorldVariable
    0x555ec83910 s FullBlockClosure(BlockClosure)>ensure: 0x555ea01228: a(n) FullBlockClosure
    0x555ea01298 s ActiveWorldVariable class>value:during: 0x555fabf358: a(n) ActiveWorldVariable
    0x555ec839c8 s PasteUpMorph>becomeActiveDuring: 0x555fad2a88: a(n) PasteUpMorph
    0x555ea01360 s HandMorph>sendFocusEvent:to:clear: 0x555fafdd60: a(n) HandMorph
    0x555ec83a80 s HandMorph>sendEvent:focus:clear: 0x555fafdd60: a(n) HandMorph
    0x555ea01450 s HandMorph>sendKeyboardEvent: 0x555fafdd60: a(n) HandMorph
    0x555ec83b38 s HandMorph>handleEvent: 0x555fafdd60: a(n) HandMorph
    0x555ec83bf0 s HandMorph>processEvents 0x555fafdd60: a(n) HandMorph
    0x555ec83ca8 s [] in WorldState>doOneCycleNowFor: 0x555fac9cb8: a(n) WorldState
    0x555ec83d60 s [] in ActiveHandVariable class>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec83e18 s FullBlockClosure(BlockClosure)>ensure: 0x555ea01598: a(n) FullBlockClosure
    0x555ea01628 s ActiveHandVariable class(DynamicVariable class)>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec83ed0 s [] in ActiveHandVariable class>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec83f88 s FullBlockClosure(BlockClosure)>ensure: 0x555ea016e0: a(n) FullBlockClosure
    0x555ea01750 s ActiveHandVariable class>value:during: 0x555fabf2b8: a(n) ActiveHandVariable
    0x555ec84040 s HandMorph>becomeActiveDuring: 0x555fafdd60: a(n) HandMorph
    0x555ea01808 s [] in WorldState>doOneCycleNowFor: 0x555fac9cb8: a(n) WorldState
    0x555ec840f8 s Array(SequenceableCollection)>do: 0x555f2ae078: a(n) Array
    0x555ec841b0 s WorldState>handsDo: 0x555fac9cb8: a(n) WorldState
    0x555ea018f0 s WorldState>doOneCycleNowFor: 0x555fac9cb8: a(n) WorldState
    0x555ec84268 s WorldState>doOneCycleFor: 0x555fac9cb8: a(n) WorldState
    0x555ec84320 s PasteUpMorph>doOneCycle 0x555fad2a88: a(n) PasteUpMorph
    0x5562259730 s [] in MorphicProject>spawnNewProcess 0x555feb5728: a(n) MorphicProject
    0x55622598d8 s [] in FullBlockClosure>newProcess 0x5562259990: a(n) FullBlockClosure

Most recent primitives
Context>>#tempAt:
Behavior>>#basicNew:
Context>>#stackp:
Context>>#stackp:
Context>>#at:put:
Context>>#stackp:
Context>>#at:put:
Context>>#at:
Context>>#stackp:
Context>>#stackp:
Context>>#at:put:
Object>>#at:
Object>>#at:
Object>>#at:
Object>>#at:
Context>>#stackp:
Context>>#at:put:
Context>>#at:
Context>>#stackp:
Context>>#tempAt:put:
Context>>#stackp:
Context>>#at:put:
Context>>#at:
Context>>#stackp:
Context>>#findNextUnwindContextUpTo:
Context>>#terminateTo:
String>>#compareWith:collated:
Object>>#species
Behavior>>#basicNew:
ByteString>>#replaceFrom:to:with:startingAt:
ByteString>>#replaceFrom:to:with:startingAt:
ByteString>>#replaceFrom:to:with:startingAt:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
ByteString>>#byteAt:put:
Behavior>>#basicNew
Array>>#new:
FullBlockClosure>>#value
FullBlockClosure>>#value
FullBlockClosure>>#value:
Behavior>>#basicNew
ByteString>>#findSubstring:in:startingAt:matchTable:
String>>#compareWith:collated:
Character>>#asciiValue
ByteString>>#indexOfAscii:inString:startingAt:
Character>>#asciiValue
ByteString>>#indexOfAscii:inString:startingAt:
String>>#compareWith:collated:
FullBlockClosure>>#value
Behavior>>#basicNew
Behavior>>#basicNew
Array>>#new:
Behavior>>#basicNew
ByteString>>#findSubstring:in:startingAt:matchTable:
ArrayedCollection>>#size
SmallInteger>>#+
ArrayedCollection>>#size
SmallInteger>>#-
SmallInteger>>#-
SmallInteger>>#+
SmallInteger>>#>=
Behavior>>#basicNew
Object>>#at:put:
FullBlockClosure>>#value:
Behavior>>#basicNew
FullBlockClosure>>#value:
String>>#compareWith:collated:
Behavior>>#basicNew
Object>>#at:put:
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
ByteString>>#at:
Character>>#=
FullBlockClosure>>#value
Object>>#species
String>>#compareWith:collated:
NetNameResolver>>#primNameResolverStatus
Behavior>>#basicNew
Semaphore>>#wait
FullBlockClosure>>#valueNoContextSwitch
SmalltalkImage>>#specialObjectsArray
Object>>#at:
Object>>#at:put:
Object>>#at:
Object>>#at:put:
**StackOverflow**
ProtoObject>>#identityHash
SmallInteger>>#*
SmallInteger>>#\\
Object>>#at:put:
SmallInteger>>#*
SmallInteger>>#*
Semaphore>>#signal
FullBlockClosure>>#value:value:
NetNameResolver>>#primInitializeNetwork:
NetNameResolver>>#primHostNameSize
Behavior>>#basicNew:
Behavior>>#basicNew
ByteString>>#at:
Character>>#asInteger
Character>>#asInteger
Object>>#at:
Time>>#utcMicrosecondClock
Semaphore>>#wait
FullBlockClosure>>#valueNoContextSwitch
NetNameResolver>>#primNameResolverStatus
NetNameResolver>>#primStartLookupOfName:
NetNameResolver>>#primNameResolverStatus
NetNameResolver>>#primNameLookupResult
Semaphore>>#signal
NetNameResolver>>#primNameResolverStatus
SmallInteger>>#=
FullBlockClosure>>#value
Behavior>>#basicNew
**StackOverflow**
Array>>#new:
Behavior>>#basicNew
Object>>#at:put:
Object>>#at:put:
Object>>#at:put:
Array>>#new:
Semaphore>>#wait
FullBlockClosure>>#valueNoContextSwitch
SmalltalkImage>>#specialObjectsArray
Object>>#at:
Object>>#at:
SmallInteger>>#>
Object>>#at:
Object>>#at:put:
ProtoObject>>#identityHash
SmallInteger>>#\\
Object>>#at:put:
SmallInteger>>#*
SmallInteger>>#*
SmallInteger>>#//
Array>>#new:
SmallInteger>>#\\
Object>>#at:put:
Semaphore>>#signal
Object>>#at:
Object>>#at:
Object>>#at:
Object>>#at:
Object>>#at:
FullBlockClosure>>#valueNoContextSwitch
FullBlockClosure>>#valueWithArguments:
Socket>>#primSocketCreateNetwork:type:receiveBufferSize:sendBufSize:semaIndex:readSemaIndex:writeSemaIndex:
Object>>#shallowCopy
ProtoObject>>#identityHash
SmallInteger>>#\\
SmallInteger>>#\\
SmallInteger>>#=
FullBlockClosure>>#value
Semaphore>>#wait
FullBlockClosure>>#value
**StackOverflow**
FullBlockClosure>>#value
**StackOverflow**
Behavior>>#basicNew:
Object>>#at:put:
Behavior>>#basicNew
Array>>#new:
Object>>#at:put:
Semaphore>>#signal
FullBlockClosure>>#value
FullBlockClosure>>#value:
Socket>>#primSocketConnectionStatus:
NetNameResolver>>#primNameResolverStatus
Socket>>#primSocketConnectionStatus:
Socket>>#primSocket:connectTo:port:
Time>>#utcMicrosecondClock
SmallInteger>>#//
Socket>>#primSocketConnectionStatus:
Time>>#utcMicrosecondClock
Behavior>>#basicNew
FullBlockClosure>>#valueNoContextSwitch
Semaphore>>#wait
**StackOverflow**
Semaphore>>#signal
Time>>#utcMicrosecondClock
SmallInteger>>#*
Object>>#at:put:
Delay>>#primSignal:atUTCMicroseconds:
Semaphore>>#wait
Semaphore>>#signal
Semaphore>>#wait
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
ProcessorScheduler>>#relinquishProcessorForMicroseconds:
FullBlockClosure>>#value
Semaphore>>#wait
**StackOverflow**
FullBlockClosure>>#valueNoContextSwitch
Semaphore>>#signal
Time>>#utcMicrosecondClock
Object>>#at:
Object>>#at:
Object>>#at:put:
Delay>>#primSignal:atUTCMicroseconds:
Semaphore>>#wait
Semaphore>>#signal
Socket>>#primSocketConnectionStatus:
Behavior>>#basicNew
Behavior>>#basicNew:
Behavior>>#basicNew:
String>>#compareWith:collated:
ProtoObject>>#identityHash
Behavior>>#basicNew
Behavior>>#basicNew:
Behavior>>#basicNew
Behavior>>#basicNew:
Behavior>>#basicNew:
Behavior>>#adoptInstance:
Behavior>>#basicNew:
Behavior>>#basicNew:
ProtoObject>>#identityHash
SmallInteger>>#\\
Object>>#basicAt:
Behavior>>#basicNew
SqueakSSL>>#primitiveSSLCreate
FullBlockClosure>>#value
SqueakSSL>>#primitiveSSL:setStringProperty:toValue:
FullBlockClosure>>#valueNoContextSwitch
ArrayedCollection>>#size
SqueakSSL>>#primitiveSSL:connect:startingAt:count:into:

stack page bytes 8192 available headroom 5780 minimum unused headroom 6232

(Segmentation fault)
Aborted
edoneel@neve:~ $



On 2024-02-14T00:35:57.000+01:00, Eliot Miranda via Vm-dev <vm-dev@lists.squeakfoundation.org> wrote:
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: c1cd0354069516bfdecd939710f81c8ecdd49f7e
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c1cd0354069516bfdecd939710f81c8ecdd49f7e
Author: Eliot Miranda <eliot.miranda@gmail.com>
Date: 2024-02-13 (Tue, 13 Feb 2024)

Changed paths:
M platforms/iOS/plugins/ClipboardExtendedPlugin/sqMacExtendedClipboard.m
M scripts/revertIfEssentiallyUnchanged
M src/plugins/FilePlugin/FilePlugin.c
M src/plugins/Squeak3D/Squeak3D.c
M src/plugins/SqueakSSL/SqueakSSL.c
M src/spur32.cog.lowcode/cointerp.c
M src/spur32.cog.lowcode/gcc3x-cointerp.c
M src/spur32.cog.newspeak/cointerp.c
M src/spur32.cog.newspeak/gcc3x-cointerp.c
M src/spur32.cog/cointerp.c
M src/spur32.cog/cointerpmt.c
M src/spur32.cog/gcc3x-cointerp.c
M src/spur32.cog/gcc3x-cointerpmt.c
M src/spur32.sista/cointerp.c
M src/spur32.sista/gcc3x-cointerp.c
M src/spur64.cog.lowcode/cointerp.c
M src/spur64.cog.lowcode/gcc3x-cointerp.c
M src/spur64.cog.newspeak/cointerp.c
M src/spur64.cog.newspeak/gcc3x-cointerp.c
M src/spur64.cog/cogitARMv8.c
M src/spur64.cog/cointerp.c
M src/spur64.cog/cointerpmt.c
M src/spur64.cog/gcc3x-cointerp.c
M src/spur64.cog/gcc3x-cointerpmt.c
M src/spur64.sista/cogitARMv8.c
M src/spur64.sista/cointerp.c
M src/spur64.sista/gcc3x-cointerp.c
M src/spur64.stack.newspeak/gcc3x-interp.c
M src/spur64.stack.newspeak/interp.c
M src/v3.cog/cointerp.c
M src/v3.cog/gcc3x-cointerp.c

Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3349

Integrate VMMaker.threaded-LM.3339, 3341, 3342 & 3343.

Make vmThread>>#state an atomic_int

Allow -1 to be set as vmOwner.
This is currently used by the heartbeat thread.
In future this will be used by the ownVMFromUnidentifiedThread function.

This combines well with the additional change that makes disownVM return a CogVMThread* disguised as void*.

We can then ensure that the threads variable is only ever accessed by the vm owner.

Fix multiple issues regarding thread safety

1. vmOwner -1 can be used to lock the VM to a thread that is not a classical "VM Thread" (e.g. the heartbeat thread).
2. maxWaitingPriority is now an atomic.

Fix thread switch accidentally disowning the VM which causes an incorrect preemption.

Allow thread switching during the SqueakSSL primitiveConnect.

Rename ownerIndex to threadAffinity.

And update revertIfEssentiallyUnchanged to cope with the CryptographyPlugins.