[squeak-dev] Re: Crash Dump on OS X (was: New Cog VMs available)
Bernhard Pieber
bernhard at pieber.com
Sun Apr 24 13:45:32 UTC 2016
Hi Eliot,
I just found a way to reproduce it: Maximise the window by holding alt and click the green window button.
Cheers,
Bernhard
> Am 24.04.2016 um 10:38 schrieb Bernhard Pieber <bernhard at pieber.com>:
>
> Hi Eliot,
>
> Thanks for your VMs.
>
> I just had a crash on OS X 10.11.4. Maybe it’s helpful:
> <crash.dmp.zip>
>
> Cheers,
> Bernhard
>
>> Am 23.04.2016 um 21:48 schrieb Eliot Miranda <eliot.miranda at gmail.com>:
>>
>> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3684
>>
>> CogVM binaries as per VMMaker.oscog-eem.1834/r3684
>>
>> General:
>> Correct undue sign extension wile promoting 32 to 64 bits int in
>> fetchLong64:ofObject: This was causing trouble in non spur object memory (V3).
>>
>> Fix slowdown of update on 64-bit x64 by using int variables for the tides in
>> sqExternalSemaphores.c and inline assembler for the sqCompareAndSwap in
>> sqAtomicOps.h.
>>
>> Fix slips in offset time primitives. They need to pop argumentCount + 1, not
>> argumentCount.
>>
>> Define an optional primitive as the fast primitive fail code so that unselected
>> optional primitives are in the prmitiveTable as fast primitive fails.
>>
>>
>> Spur:
>> Have WideString>>at: fail to answer an out-of-range character in the
>> interpreter primitive (as well as in the JIT).
>>
>> Fix bug in following state on primitive failure. The old code would
>> always follow to depth 1, even if the accessor depth was 0.
>> Hard-code primitiveSize's depth to 0 (accessing length in at:[put:]
>> and size causes the stack depth computation to answer 1 instead of
>> 0 for these primitives.
>>
>> Fix assert and dequeueMourner for case where mournQueue is nil.
>>
>> - fixed a bug in receiver accessing in immutability primitive for
>> mirror primitive.
>>
>> - change primitiveSetOrHasIdentityHash to patch the class table if
>> the new hash is set to a behavior (the primitive knows it's a
>> behavior if the second (optional) argument is true)
>> For example:
>> FullBlockClosure tryPrimitive: 161 withArgs: {38.true}
>>
>> No longer follow the method and context fields in a closure in
>> activateNewClosureMethod:numArgs:mayContextSwitch:; the caller will
>> have failed if these are forwarders, so no need to check again.
>>
>>
>> Cogit:
>> Add a primitive that answers pc map data for methods which can be
>> used to better decorate methods in the VM Profiler. Refactor the pc
>> map enumeration facilities so that the Sista pic data primitive can
>> share the same enumerator. Do this by collapsing the
>> isBackwardBranch and annotation parameters into a single parameter.
>>
>> Follow selectors in the openPICList post Spur become.
>>
>> Fix the ARM's caller-saved register mask now that we can name all the actual
>> registers.
>>
>> Reworked machine code generation of immutability so for common stores it
>> uses a single trampoline for both store checks and immutability checks.
>>
>> - improved support for register allocation: branch merge
>> successfully compiled with register moved instead of spilling.
>>
>> Sista Cogit:
>> Don't bother to add counters to conditional jumps implementing and:
>> and or:. Added the remote inst var access bytecode in sista V1
>> bytecode set without interfering with existing code.
>>
>>
>> Plugins:
>> Upgrade LargeIntegersPlugin to v2.0
>> LargeInteger primitives now deal with 32-bits digits. No change to image code.
>>
>> Memory is 8 bytes aligned on Spur. When storing 32/64 bits large
>> integers values, allways fill the eight bytes whatever the
>> effectivily used size, rather than bother with dissertion of size.
>>
>> Generate integer type checking as C macros rather than direct/indirect
>> interpreterProxy function call in plugins. This, and 32-bit accessing mean
>> singificantly faster large integer arithmetic.
>>
>> Fix primAlienReplace to use positiveMachineIntegerValueOf: instead of
>> positive32BitValueOf:.
>>
>> BitBltPlugin operates on 32bit word units, therefore it's better to declare its
>> operands as 'unsigned int' rather than sqInt. On 32bit VM, this doesn't change
>> anything, but on 64bits spur, it makes this snippet work:
>>
>> | wideString source pos blt expectedWideString |
>> source := #[1 64 255 14 1 64 48 251].
>> expectedWideString := WideString fromByteArray: source.
>> wideString := WideString new: source size // 4.
>> pos := 0.
>> blt := (BitBlt
>> toForm: (Form new hackBits: wideString))
>> sourceForm: (Form new hackBits: source).
>> blt
>> combinationRule: Form over;
>> sourceX: 0;
>> sourceY: pos // 4;
>> height: wideString byteSize // 4;
>> width: 4;
>> destX: 0;
>> destY: 0;
>> copyBits.
>> wideString restoreEndianness.
>> self assert: wideString = expectedWideString
>>
>> Hence it fixes loading/diffing MCZ with wide character.
>>
>>
>> Mac OS Builds:
>> Don't link with -fvisibility=hidden; it breaks external plugins. Use
>> -fvisibility=default instead. This fixes e.g. UnixOSProcessPlugin on Mac OS X.
>>
>>
>> Windows Builds:
>> The Windows VMs are no longer "dpiAware". If you want one-to-one pixel mapping check the README for ins ructions. It's a simple edit.
>> _,,,^..^,,,_
>> best, Eliot
>
More information about the Squeak-dev
mailing list
|