Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: c1cd0354069516bfdecd939710f81c8ecdd49f7e https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c1cd0354069516bfdec... 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.
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/c1cd0354069516bfdec... 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.
Thank you Bruce!! And apologies for the inconvenience. Fix is on its way.
On Wed, Feb 14, 2024 at 2:37 AM Bruce O'Neel bruce.oneel@pckswarms.ch wrote:
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/c1cd0354069516bfdec... 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
- vmOwner -1 can be used to lock the VM to a thread that is not a classical "VM Thread" (e.g. the heartbeat thread).
- 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.
Hi,
Thanks very much! And the fix works.
And it never an inconvenience. You do amazing work.
cheers
bruce
On 2024-02-15T22:22:23.000+01:00, Eliot Miranda eliot.miranda@gmail.com wrote:
Thank you Bruce!! And apologies for the inconvenience. Fix is on its way. On Wed, Feb 14, 2024 at 2:37 AM Bruce O'Neel bruce.oneel@pckswarms.ch wrote:
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) [http://libc.so.6(+0x42520)%5D%5B0x7f86ba03f520] /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) [http://linux-vdso.so.1(__kernel_rt_sigreturn+0x0)%5D%5B0x7fbc5307bc] /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) [http://libc.so.6(+0x27780)%5D%5B0x7fbc2d7780] /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0x98) [http://libc.so.6(__libc_start_main+0x98)%5D%5B0x7fbc2d7858] /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/c1cd0354069516bfdec... 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.
-- _,,,^..^,,,_ best, Eliot
vm-dev@lists.squeakfoundation.org