[Vm-dev] new Cog VMs

Levente Uzonyi leves at elte.hu
Fri Dec 31 19:58:18 UTC 2010


On Thu, 30 Dec 2010, Eliot Miranda wrote:

(pine can't quote your mail, sorry)

Thanks for the update, the numbers are impressive. I found an issue which 
is easily reproducible on windows. Just evaluate [Smalltalk 
garbageCollect] and the VM will crash. Since the crash is during GC the VM 
will also crash during the log writing, probably because the stack is 
corrupted. Here's the relevant part of crash.dmp:

Fri Dec 31 20:46:37 2010

Exception code: C0000005
Exception addr: 00407880
Access violation (read access) at B4650090
EAX:B4650090	EBX:B4650090	ECX:00000000	EDX:00000090
ESI:100353D7	EDI:00000000	EBP:008FDE48	ESP:008FDE1C
EIP:00407880	EFL:00010246
FP Control: FFFF027F
FP Status:  FFFF4022
FP Tag:     FFFFFFFF


Crashed in the VM thread
Stack backtrace:
 	[00407880] _remap + 8 in Croquet.exe
 	[004280F9] _mapForperformUntilarg + 88 in Croquet.exe
 	[004339F0] _mapObjectReferencesInMachineCode + 109 in Croquet.exe
 	[00407A35] _mapPointersInObjectsFromto + 420 in Croquet.exe
 	[00408CD1] _incCompBody + 261 in Croquet.exe
 	[0041A922] _fullGC + 686 in Croquet.exe
 	[00426584] _primitiveFullGC + 65 in Croquet.exe
 	[0041E5A9] _interpret + 513 in Croquet.exe
 	[00423147] _enterSmalltalkExecutiveImplementation + 97 in 
Croquet.exe
 	[00423625] _initStackPagesAndInterpret + 517 in Croquet.exe
 	[0043D1F5] _sqMain + 610 in Croquet.exe
 	[0043D503] _WinMain at 16 + 170 in Croquet.exe
 	[00517C18] _main + 264 in Croquet.exe
 	[0040124B] ___mingw_CRTStartup + 251 in Croquet.exe
 	[004012B8] _WinMainCRTStartup + 24 in Croquet.exe
 	[768DD0E9] AcquireSRWLockExclusive + 18 in kernel32.dll
 	[77BE19BB] RtlInitializeNtUserPfn + 99 in ntdll.dll
 	[77BE198E] RtlInitializeNtUserPfn + 54 in ntdll.dll

...

VM Version: Teleplace VM 1.0.15 (release) from Dec 30 2010
Compiler: gcc 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
Interpreter Build: CoInterpreter VMMaker-oscog.40 uuid: 
637db40c-33c6-4263-816e-1b8cc19e3c99 Dec 30 2010
Cogit Build: StackToRegisterMappingCogit VMMaker-oscog.40 uuid: 
637db40c-33c6-4263-816e-1b8cc19e3c99 Dec 30 2010

Current byte code: 16
Primitive index: 0

Another way to reliably crash the VM is to open a file list and wait a few 
seconds. I'm not sure if it's related to GC or not, but the smalltalk 
stack trace is incomplete, just like in the previous case. In this case 
the dump is:

Exception code: C0000005
Exception addr: 00433864
Access violation (read access) at 1D1B6659
EAX:0000003B	EBX:FFFF2308	ECX:1D1B6654	EDX:1D1B668F
ESI:00549E28	EDI:004337FB	EBP:008FDFB8	ESP:008FDFB0
EIP:00433864	EFL:00010202
FP Control: FFFF027F
FP Status:  FFFF4022
FP Tag:     FFFFFFFF


Crashed in the VM thread
Stack backtrace:
 	[00433864] _relocateIfCallOrMethodReferencemcpcdelta + 105 in 
Croquet.exe
 	[004280F9] _mapForperformUntilarg + 88 in Croquet.exe
 	[004334CA] _compactCogCompiledCode + 914 in Croquet.exe
 	[00402BFE] _commenceCogCompiledCodeCompaction + 146 in Croquet.exe
 	[0041B3E2] _checkForEventsMayContextSwitch + 742 in Croquet.exe
 	[0041B4F1] _handleStackOverflowOrEventAllowContextSwitch + 32 in 
Croquet.exe
 	[0041C3F8] _activateNewMethod + 607 in Croquet.exe
 	[0041D16B] _activateInterpreterMethodFromMachineCode + 194 in 
Croquet.exe
 	[1002005C] ceSend0Args + 44 in CogCode
 	[00423625] _initStackPagesAndInterpret + 517 in Croquet.exe
 	[0043D1F5] _sqMain + 610 in Croquet.exe
 	[0043D503] _WinMain at 16 + 170 in Croquet.exe
 	[00517C18] _main + 264 in Croquet.exe
 	[0040124B] ___mingw_CRTStartup + 251 in Croquet.exe
 	[004012B8] _WinMainCRTStartup + 24 in Croquet.exe
 	[768DD0E9] AcquireSRWLockExclusive + 18 in kernel32.dll
 	[77BE19BB] RtlInitializeNtUserPfn + 99 in ntdll.dll
 	[77BE198E] RtlInitializeNtUserPfn + 54 in ntdll.dll


Levente


More information about the Vm-dev mailing list