[Vm-dev] We need help from VM experts. Re: Freeze after Morph Activity

Dan Norton dnorton at mindspring.com
Sun Feb 5 21:51:06 UTC 2017


When the hang-up occurs, a #morphicStep is involved. I've never seen it 
otherwise.

Attached is what may be the minimal test case: an empty step loop. File 
in the attachment and in a workspace do:

Minish start

  - Dan


On 02/05/2017 03:42 PM, David T. Lewis wrote:
>   
> On Sun, Feb 05, 2017 at 04:09:39PM -0300, Juan Vuletich wrote:
>>   
>> Hi Folks,
>>
>> It seems we found a problem in Spur-64 on Linux. Eliot & VM developers
>> and experts, please, we need your help.
>>
>> Cuis users have been experiencing this problem since we started using
>> Spur-64. At random times, the image just stops working. No Smalltalk
>> process is run, and the VM needs to be killed from the OS.
>>
>> In my experience, most of the time it takes several hours for the
>> problem to happen. Dan found a simple way to make it happen rather
>> quickly. No FFI is involved, just pretty basic Smalltalk. I can confirm
>> that the problem does not happen using Spur-32 on the same platform.
>>
>
> I can confirm this on my Ubuntu laptop running Cuis5.0-3040-spur-64.image.
>
> I filed in the Tokenish.st demo, and started several Tokenish morphs that
> bounced along cheerfully until the image hung up.
>
> The VM is still running and using CPU. Top shows about 5% CPU, which several
> times greater than for an idle image, but certainly not abnormally high.
>
> The actual VM process shows a "waiting" state in /proc/<pid>/status, which
> is exactly like what I would expect for a normal running VM. Here is a sample
> of what I see for the hung image/VM:
>
>    lewis at lewis-Gazelle-Pro:/proc/32609$ cat /proc/32609/status
>    Name:	squeak
>    State:	S (sleeping)
>    Tgid:	32609
>    Ngid:	0
>    Pid:	32609
>    PPid:	2779
>    TracerPid:	0
>    Uid:	1000	1000	1000	1000
>    Gid:	1000	1000	1000	1000
>    FDSize:	256
>    Groups:	4 24 27 30 46 115 131 1000
>    VmPeak:	  147456 kB
>    VmSize:	  131156 kB
>    VmLck:	       0 kB
>    VmPin:	       0 kB
>    VmHWM:	   40468 kB
>    VmRSS:	   40464 kB
>    VmData:	   57496 kB
>    VmStk:	    1740 kB
>    VmExe:	    1304 kB
>    VmLib:	    5916 kB
>    VmPTE:	     240 kB
>    VmSwap:	       0 kB
>    Threads:	2
>    SigQ:	0/31381
>    SigPnd:	0000000000000000
>    ShdPnd:	0000000000000000
>    SigBlk:	0000000000000000
>    SigIgn:	0000000000001000
>    SigCgt:	0000000190000648
>    CapInh:	0000000000000000
>    CapPrm:	0000000000000000
>    CapEff:	0000000000000000
>    CapBnd:	0000003fffffffff
>    Seccomp:	0
>    Cpus_allowed:	ff
>    Cpus_allowed_list:	0-7
>    Mems_allowed:	00000000,00000001
>    Mems_allowed_list:	0
>    voluntary_ctxt_switches:	14946247
>    nonvoluntary_ctxt_switches:	2443
>    lewis at lewis-Gazelle-Pro:/proc/32609$
>
> The VM that I am using is:
>
>    Virtual Machine
>    ---------------
>    /usr/local/lib/squeak/5.0-201608171728-64/squeak
>    Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-cb.1919]
>    Unix built on Sep 25 2016 15:59:10 Compiler: 4.6.3
>    platform sources revision VM: 201608171728 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Wed Aug 17 10:28:01 2016 -0700 $ Plugins: 201608171728 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>    CoInterpreter VMMaker.oscog-cb.1919 uuid: 00a8dd2a-bc8d-4552-b400-be781c8aabec Sep 25 2016
>    StackToRegisterMappingCogit VMMaker.oscog-cb.1919 uuid: 00a8dd2a-bc8d-4552-b400-be781c8aabec Sep 25 2016
>
>
> I cannot see what is wrong, but maybe this will prompt some ideas.
>
> Dave
>

-------------- next part --------------
'From Cuis 5.0 of 7 November 2016 [latest update: #3043] on 5 February 2017 at 4:39:43 pm'!
!classDefinition: #Minish category: #Freeze!
EllipseMorph subclass: #Minish
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Freeze'!
!Minish commentStamp: '<historical>' prior: 0!
Example which experiences a freeze.!


!Minish methodsFor: 'stepping' stamp: 'dhn 2/5/2017 16:38:33'!
mini

	self when: #morphicStep evaluate: [ :a |].
	self startSteppingStepTime: 8. 	
! !

"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

!classDefinition: 'Minish class' category: #Freeze!
Minish class
	instanceVariableNames: ''!

!Minish class methodsFor: 'instance creation' stamp: 'dhn 2/5/2017 16:37:16'!
start

	^ self new openInHand mini! !


More information about the Vm-dev mailing list