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@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@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