[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