[Vm-dev] New Cog VMs available

Tobias Pape Das.Linux at gmx.de
Fri Apr 17 00:12:43 UTC 2015


... which just crashed:

/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/lib/squeak/4.0-3311/squeak
Squeak VM version: 4.0-3311 #1 Thu Apr 16 15:59:02 PDT 2015 gcc 4.4.7 [Production ITHB VM]
Built from: CoInterpreter VMMaker.oscog-eem.1202 uuid: 992991db-47cc-4d19-85cf-4959c54bd41f Apr 16 2015
With: StackToRegisterMappingCogit VMMaker.oscog-eem.1204 uuid: 45d34c98-fee8-4874-95b4-842de9ba8cbc Apr 16 2015
Revision: VM: r3311 
http://www.squeakvm.org/svn/squeak/branches/Cog
 Date: 2015-04-16 15:27:01 -0700
Plugins: r3275 
http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins

Build host: Linux mclinux32 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux
plugin path: /tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311 [default: /tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/lib/squeak/4.0-3311/]


C stack backtrace & registers:
	eax 0xbf7af0f4 ebx 0xbf7af010 ecx 0xbf7af0a8 edx 0xbf7af05c
	edi 0xbf7aeee0 esi 0xbf7aeee0 ebp 0xbf7aef78 esp 0xbf7aefc4
	eip 0xbf7af1d8
*[0xbf7af1d8]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x805e830]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x805eb2f]
[0xf57fe40c]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x809b5db]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak(mapObjectReferencesInMachineCode+0xeb)[0x809b7bb]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x807520c]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x80764fd]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak(fullGC+0x24d)[0x807ba0d]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x807c745]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x8081de5]
[0x4750a2e3]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak(interpret+0x7b6)[0x8087a06]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak(main+0x2b4)[0x805f284]
/lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6)[0xb75f3cb6]
/tmp/d20150417-4921-hq8rf8/cog.r3311/coglinux/bin/../lib/squeak/4.0-3311/squeak[0x805bea1]
/lib/i686/nosegneg/libc.so.6(+0x150ff4)[0xb772dff4]


Smalltalk stack dump:
0xbf8310ac M ByteString class(String class)>new: 0x478667d0: a(n) ByteString class
0xbf8310d4 M INVALID RECEIVER>copyReplaceFrom:to:with: 0x4891e39c: a(n) bad class
0xbf831108 M INVALID RECEIVER>copyReplaceAll:with:asTokens: 0x488a3030: a(n) bad class
0xbf83112c M INVALID RECEIVER>copyReplaceAll:with: 0x488a3030: a(n) bad class
0xbf831164 M INVALID RECEIVER>asUUID: 0x4891e2d0: a(n) bad class
0xbf831184 M UUID class>fromString: 0x478666cc: a(n) UUID class
0xbf8311b4 M [] in MCWorkingCopy class>infoFromDictionary:cache: 0x47874e74: a(n) MCWorkingCopy class
0xbf8311dc M [] in INVALID RECEIVER>at:ifAbsentPut: 0x488c3310: a(n) bad class
0xbf8311f4 M INVALID RECEIVER>at:ifAbsent: 0x488c3310: a(n) bad class
0xbf831214 M INVALID RECEIVER>at:ifAbsentPut: 0x488c3310: a(n) bad class
0xbf831238 M MCWorkingCopy class>infoFromDictionary:cache: 0x47874e74: a(n) MCWorkingCopy class
0xbf83125c M [] in MCWorkingCopy class>ancestorsFromArray:cache: 0x47874e74: a(n) MCWorkingCopy class
0x4891e0c4 is not a context

Most recent primitives
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew
basicNew
basicNew
stringHash:initialHash:
basicNew
basicNew
**IncrementalGC**
shallowCopy
basicNew
basicNew
basicNew
indexOfAscii:inString:startingAt:
basicNew
basicNew
basicNew
basicNew
new:
at:put:
at:put:
at:put:
stringHash:initialHash:
stringHash:initialHash:
new:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
basicNew:
findSubstring:in:startingAt:matchTable:
basicNew:
**IncrementalGC**
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
shallowCopy
translate:from:to:table:
basicNew
basicNew:
**IncrementalGC**
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
**IncrementalGC**
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew
at:put:
stringHash:initialHash:
stringHash:initialHash:
basicNew
basicNew
basicNew:
basicNew
at:put:
at:put:
at:put:
basicNew:
replaceFrom:to:with:startingAt:
basicNew
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
basicNew:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew
basicNew
basicNew
stringHash:initialHash:
basicNew
**IncrementalGC**
basicNew
shallowCopy
basicNew
basicNew
basicNew
indexOfAscii:inString:startingAt:
basicNew
basicNew
basicNew
basicNew
new:
at:put:
at:put:
at:put:
stringHash:initialHash:
stringHash:initialHash:
new:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
basicNew:
**IncrementalGC**
findSubstring:in:startingAt:matchTable:
basicNew:
**IncrementalGC**
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
**IncrementalGC**
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
**IncrementalGC**
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
findSubstring:in:startingAt:matchTable:
basicNew:
**IncrementalGC**
**FullGC**

stack page bytes 4096 available headroom 3300 minimum unused headroom 2244

	(Segmentation fault)
Aborted
On 17.04.2015, at 02:10, Tobias Pape <Das.Linux at gmx.de> wrote:

> 
> Updated on CI,
> running at http://build.squeak.org/job/SqueakTrunk/1309/
> 
> On 17.04.2015, at 01:50, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> 
>> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3311/.
>> 
>> These should fix the regression introduced by the map changes in 3308.  They certainly fix the two crashes I've looked at, one an update of a squeak trunk image and the other the startup of recent Newspeak images.  Apologies for the inconvenience.
>> 
>> 
>> CogVM binaries as per VMMaker.oscog-eem.1204/r3311
>> 
>> Cogits:
>> 
>> Fix regression in map machinery due to adding AnnotationExtension scheme.
>> findMapLocationForMcpc:inMethod: must not be confused by IsDisplacementX2N
>> bytes.  This is likely the cause of the recent crashes with r3308 and earlier.
>> 
>> Introduce marryFrameCopiesTemps and use it to
>> not copy temps in Spur context creation trampolines.
>> 
>> Change initial usage counts to keep more recently jitted methods around for
>> longer, and do *not* throw away PICs in freeOlderMethodsForCompaction, so that
>> there's a better chance of Sista finding send and branch data for the tripping
>> method.
>> 
>> extendedPushBytecode /does/ need a frame.
>> 
>> Don't save the header in a scratch register unless
>> it is useful to do so in the Spur at:[put:] primitives.
>> 
>> Fix slip in genGetNumBytesOf:into:.  And notice that
>> genGetFormatOf:into:baseHeaderIntoScratch: et al can use byte access
>> to get at format, as intended in the Spur header design.
>> 
>> Fix unlinking dynamic super sends.
>> 
>> Reduce false positives in access control violation reporting by marking the
>> super send we actually use as privileged. Remove unused Newspeak bytecodes.
>> 
>> Internal:
>> 
>> Fix code generation bug surfaced by inline primitives.  On x86 movb N(%reg),%rl
>> can only store into al, bl, cl & dl, whereas movzbl can store into any reg.  On
>> ARM move byte also zero-extends.  So change definition of MoveMbrR to always
>> zero-extend, use movzbl on x86 and remove all the MoveCq: 0 R: used to zero the
>> bits of the target of a MoveMb:r:R:.  And now that we have
>> genGetNumSlotsOf:into:, use it.
>> 
>> Fix a slip in genTrinaryInlinePrimitive:, meet constraint that the target must
>> be in ReceiverResultReg, and do a better job of register allocation there-in.
>> 
>> Do dead code elimination for the branch following an inlined comparison (this
>> is done in genBinaryInlineComparison:opFalse:destReg: copying the scheme in
>> genSpecialSelectorEqualsEquals).
>> 
>> Do register allocation in the right place in genUnaryInlinePrimitive:.
>> 
>> Fix overflow slot access in genGetNumSlotsOf:into: et al.
>> 
>> Fix several slips in inline primitive generation: Object>>at:put: needs to
>> include a store check.  Some register allocation code was wrong.  Some results
>> needed converting to SmallIntegers and recording results as pushed on the sim
>> stack.
>> 
>> Change callPrimitiveBytecode to genCallPrimitiveBytecode in the Cogit.
>> remove the misnomer genConvertIntegerToSmallIntegerInScratchReg:
>> 
>> Type of AbstractInstruction opcode must be unsigned now that we have
>> more than 128 opcodes (XCHGRR pushed things over the top).
>> 
>> Lay the groundwork for 32-bit intra-zone jumps and calls on ARM by introducing
>> CallFull and JumpFull (and rewrites thereof) that are expected to span the full
>> address space, leaving Call/JumpLong to span merely the 16mb code zone.  On x86
>> CallFull and JumpFull simply default to Call/JumpLong.
>> 
>> Replace bytecode trapIfNotInstanceOf by jumpIfNotInstanceOfOrPop.
>> 
>> Rewrote the JIT logic for traps to be able to write trap trampolines calls at
>> the end of the cogMethod.
>> 
>> Refactor the slot store and store check machinery to take an inFrame: argument
>> and hence deal with the store check in genInnerPrimitiveAtPut: on ARM.
>> 
>> Fix limitation with MoveRXbrR; can only do movb from
>> %al through %dl, so swap with %eax around movb.
>> 
>> Fix mistake with genGetNumBytesOf:into: by refactoring
>> genGetFormatOf:into:baseHeaderIntoScratch: into
>> genGetBits:ofFormatByteOf:into:baseHeaderIntoScratch:
>> and hence fetching and subtracting only odd bits of format.
>> 
>> Correct the in-line primitive SmallInteger comparisons; CmpXR is confusing ;-)
>> 
>> Fix var op var unsafe byte at:.  Result must be converted to SmallInteger.
>> 
>> Correct the generated Slang for the new register allocation code by adding a
>> read-before-written pass to C generation that initializes variables
>> read-before-written with 0 (the C equivalent of nil).
>> 
>> fix a bug where sometimes register allocation was marking ReceiverResultReg as
>> dead whereas it was still alive.
>> 
>> Added some abstraction over register allocation. This is now used in inline
>> primitives.




More information about the Vm-dev mailing list