[Vm-dev] New warnings with new BitBlt primitive

Clément Bera bera.clement at gmail.com
Wed Jun 6 09:07:52 UTC 2018


Hi all,

Since the recent changes in the BitBlt primitive I now have new warning
failures.
I can't reproduce my use-case in the simulator AFAIK (I use non simulable
code).
Here's the trace I get [1], looks like the code is accessing the byteSizeOf
an oop without checking for forwarders, in my case I have the warning
because the object is a forwarder.

Any idea what this is about? I guess I can provide an image to reproduce
but it's a 150Mb wide 64 bits image...

[1]
* thread #1: tid = 0x44223d, 0x0000000100001783
Squeak`warning(s="(classIndexOf(oop)) > (isForwardedObjectClassIndexPun())
34576") + 19 at gcc3x-interp.c:40, queue = 'com.apple.main-thread', stop
reason = breakpoint 1.1
    frame #0: 0x0000000100001783 Squeak`warning(s="(classIndexOf(oop)) >
(isForwardedObjectClassIndexPun()) 34576") + 19 at gcc3x-interp.c:40
[...]

*(lldb)* bt
* thread #1: tid = 0x44223d, 0x0000000100001783
Squeak`warning(s="(classIndexOf(oop)) > (isForwardedObjectClassIndexPun())
34576") + 19 at gcc3x-interp.c:40, queue = 'com.apple.main-thread', stop
reason = breakpoint 1.1
  * frame #0: 0x0000000100001783 Squeak`warning(s="(classIndexOf(oop)) >
(isForwardedObjectClassIndexPun()) 34576") + 19 at gcc3x-interp.c:40
    frame #1: 0x00000001000438f4 Squeak`byteSizeOf(oop=4633303952) + 100 at
gcc3x-interp.c:34576
    frame #2: 0x0000000100107a4f
Squeak`loadBitBltFromwarping(bbObj=4423438048, aBool=0) + 2351 at
BitBltPlugin.c:3373
    frame #3: 0x00000001000fd955 Squeak`primitiveDisplayString + 341 at
BitBltPlugin.c:5185
    frame #4: 0x0000000100097148 Squeak`primitiveExternalCall + 664 at
gcc3x-interp.c:66133
    frame #5: 0x000000010000bc64 Squeak`interpret + 41892 at
gcc3x-interp.c:5679
    frame #6: 0x00000001000019b8 Squeak`interpret + 248 at
gcc3x-interp.c:2430

*(lldb)* up
frame #1: 0x00000001000438f4 Squeak`byteSizeOf(oop=4633303952) + 100 at
gcc3x-interp.c:34576
   34573 /* begin numBytesOf: */
   34574 fmt = (((usqInt) (longAt(oop))) >> (formatShift())) &
(formatMask());
   34575 /* begin numSlotsOf: */
-> 34576 assert((classIndexOf(oop)) > (isForwardedObjectClassIndexPun()));
   34577 numSlots = byteAt(oop + 7);
   34578 numBytes = (numSlots == (numSlotsMask())
   34579 ? ((usqInt) (((usqInt)(((sqInt)((usqInt)((longAt(oop -
BaseHeaderSize))) << 8)))))) >> 8

-- 
Clément Béra
https://clementbera.github.io/
https://clementbera.wordpress.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20180606/5fb18908/attachment-0001.html>


More information about the Vm-dev mailing list