New warnings with new BitBlt primitive

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

New warnings with new BitBlt primitive

Clément Béra
 
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

--
Reply | Threaded
Open this post in threaded view
|

Re: New warnings with new BitBlt primitive

Eliot Miranda-2
 
Hi Clément,

On Wed, Jun 6, 2018 at 2:07 AM, Clément Bera <[hidden email]> wrote:
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.

Right.  It looks to be an old bug that the new primitiveDisplayString short-cut for zero-sided strings exposes.  I've fixed the VMMaker.oscog package.  Am just regenerating the plugin now.
 

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

--



--
_,,,^..^,,,_
best, Eliot