[Vm-dev] Re: [Pharo-project] GZipWriteStream crashing my VM when serializing ?

Mariano Martinez Peck marianopeck at gmail.com
Fri Dec 9 18:31:56 UTC 2011


So...after debugging the VM, it looks it is crashing in DeflatePlugin >>
encodeMatch: length distance: dist

encodeMatch: length distance: dist
    "Encode the given match of length length starting at dist bytes ahead"
    | literal distance |
    <inline: true>
    zipLiterals at: zipLiteralCount put: length - DeflateMinMatch.
    zipDistances at: zipLiteralCount put: dist.
    literal := (zipMatchLengthCodes at: length - DeflateMinMatch).
    zipLiteralFreq at: literal put: (zipLiteralFreq at: literal) + 1.
    dist < 257
        ifTrue:[distance := zipDistanceCodes at: dist - 1]
        ifFalse:[distance := zipDistanceCodes at: 256 + (dist - 1 bitShift:
-7)].
    zipDistanceFreq at: distance put: (zipDistanceFreq at: distance) + 1.
    zipLiteralCount := zipLiteralCount + 1.
    zipMatchCount := zipMatchCount + 1.
    ^zipLiteralCount = zipLiteralSize "We *must* flush"
        or:[(zipLiteralCount bitAnd: 16rFFF) = 0 "Only check every N kbytes"
            and:[self shouldFlush]]

When it does:     zipDistanceFreq at: distance put: (zipDistanceFreq at:
distance) + 1.
it gives a EXC_BAD_ACCESS.
distance value is 1444965993

The sender is #deflateBlock: lastIndex chainLength: chainLength goodMatch:
goodMatch
and sender #primitiveDeflateBlock

If I do a call printAllStacks(), I get this part:

(gdb) call printAllStacks()
Process 0x1f70c924 priority 40
0xbff65968 M GZipWriteStream(DeflateStream)>deflateBlock 555574892: a(n)
GZipWriteStream
0xbff6598c M GZipWriteStream(DeflateStream)>nextPutAll: 555574892: a(n)
GZipWriteStream
0xbff659a8 M GZipWriteStream(DeflateStream)>next:putAll:startingAt:
555574892: a(n) GZipWriteStream
0xbff659cc M FLBufferedWriteStream>flushBuffer 556072120: a(n)
FLBufferedWriteStream
0xbff659e4 M FLBufferedWriteStream>nextBytesPutAll: 556072120: a(n)
FLBufferedWriteStream
0xbff65a04 M FLBufferedWriteStream>nextStringPut: 556072120: a(n)
FLBufferedWriteStream
0xbff65a24 M [] in FLVariablesMapping>serializeMappingOn: 557179132: a(n)
FLVariablesMapping
0xbff65a44 M OrderedCollection>do: 557179148: a(n) OrderedCollection
0xbff65a64 M FLVariablesMapping>serializeMappingOn: 557179132: a(n)
FLVariablesMapping
0xbff65a80 M
FLFixedObjectCluster(FLPointerObjectCluster)>serializeInstancesStepWith:
556081188: a(n) FLFixedObjectCluster
0xbff65a9c M FLSerialization>clusterInstancesStepOf: 556076884: a(n)
FLSerialization
0xbff65ab8 M [] in FLSerialization>instancesStep 556076884: a(n)
FLSerialization


And from the gdb I get:

#0    0x000b3721 in deflateBlockchainLengthgoodMatch at ZipPlugin.c:303
#1    0x000b4a62 in primitiveDeflateBlock at ZipPlugin.c:719
#2    0x1f400858 in ??
#3    0x00067820 in threadSchedulingLoop at gcc3x-cointerpmt.c:45853
#4    0x0003d79b in initialEnterSmalltalkExecutive at
gcc3x-cointerpmt.c:18372
#5    0x0003e45f in initStackPagesAndInterpret at gcc3x-cointerpmt.c:18839
#6    0x00022ae8 in interpret at gcc3x-cointerpmt.c:2076
#7    0x0006df20 in -[sqSqueakMainApplication runSqueak] at
sqSqueakMainApplication.m:174
#8    0x92ee186c in __NSFirePerformWithOrder
#9    0x967fadd2 in __CFRunLoopDoObservers
#10    0x967b6ced in __CFRunLoopRun
#11    0x967b63c4 in CFRunLoopRunSpecific
#12    0x967b61f1 in CFRunLoopRunInMode
#13    0x98262e04 in RunCurrentEventLoopInMode
#14    0x98262af5 in ReceiveNextEventCommon
#15    0x98262a3e in BlockUntilNextEventMatchingListInMode
#16    0x93159595 in _DPSNextEvent
#17    0x93158dd6 in -[NSApplication
nextEventMatchingMask:untilDate:inMode:dequeue:]
#18    0x9311b1f3 in -[NSApplication run]
#19    0x93113289 in NSApplicationMain
#20    0x0006bec9 in main at main.m:52


Any pointer is appreaciated.

THanks



On Fri, Dec 2, 2011 at 11:57 PM, Diogenes Moreira <
diogenes.moreira at gmail.com> wrote:

> en que SO estas corriendo..primitiva ??
> por otro lado que tenes en el PharoDebug.Log
>
> http://about.me/diogenes.moreira
>
>
>
> 2011/12/2 Mariano Martinez Peck <marianopeck at gmail.com>:
> > Hi guys. We are doing some experiments with Fuel and GZip streams... Now
> I
> > have a beatiful test like this:
> >
> > testMethodContextThisContext
> >
> >     | materializedContext context |
> >     context := thisContext copy.
> >     materializedContext := self resultOfSerializeAndMaterialize: context.
> >
> > and it crashes like crazy. From the VM crash stack, I can see:
> >
> >
> > Smalltalk stack dump:
> > 0xbff66ba4 M GZipWriteStream(DeflateStream)>deflateBlock 447551436: a(n)
> > GZipWriteStream
> > 0xbff66bc8 M GZipWriteStream(DeflateStream)>nextPutAll: 447551436: a(n)
> > GZipWriteStream
> > 0xbff66be4 M GZipWriteStream(DeflateStream)>next:putAll:startingAt:
> > 447551436: a(n) GZipWriteStream
> > 0xbff66c08 M FLBufferedWriteStream>flushBuffer 448048664: a(n)
> > FLBufferedWriteStream
> > 0xbff66c20 M FLBufferedWriteStream>nextBytesPutAll: 448048664: a(n)
> > FLBufferedWriteStream
> > 0xbff66c40 M FLBufferedWriteStream>nextStringPut: 448048664: a(n)
> > FLBufferedWriteStream
> > 0xbff66c5c M FLByteStringCluster>serialize:on: 448054196: a(n)
> > FLByteStringCluster
> > 0xbff66c7c M
> FLByteStringCluster(FLPrimitiveCluster)>serializeInstance:with:
> > 448054196: a(n) FLByteStringCluster
> > 0xbff66ca0 M [] in
> > FLByteStringCluster(FLIteratingCluster)>serializeInstances: 448054196:
> a(n)
> > FLByteStringCluster
> > 0xbff66cc8 M IdentitySet(Set)>do: 451711680: a(n) IdentitySet
> > 0xbff66ce4 M FLByteStringCluster(FLIteratingCluster)>serializeInstances:
> > 448054196: a(n) FLByteStringCluster
> > 0xbff66d00 M
> > FLByteStringCluster(FLIteratingCluster)>serializeInstancesStepWith:
> > 448054196: a(n) FLByteStringCluster
> > 0xbff66d1c M FLSerialization>clusterInstancesStepOf: 448053428: a(n)
> > FLSerialization
> > 0xbff66d38 M [] in FLSerialization>instancesStep 448053428: a(n)
> > FLSerialization
> > 0xbff66d58 M OrderedCollection>do: 449989736: a(n) OrderedCollection
> > 0xbff66d74 M FLSerialization>instancesStep 448053428: a(n)
> FLSerialization
> > 0xbff66d8c M FLSerialization>run 448053428: a(n) FLSerialization
> > 0xbff66db0 I [] in FLSerializer>defaultSerialization 447550464: a(n)
> > FLSerializer
> > 0xbff66dd8 M [] in FLSerializer>serialize:on: 447550464: a(n)
> FLSerializer
> > 0xbff66df8 M BlockClosure>ensure: 448052884: a(n) BlockClosure
> > 0xbff66e18 M FLSerializer>serialize:on: 447550464: a(n) FLSerializer
> > 0xbff66e3c M [] in
> > FLMethodContextSerializationTest(FLSerializationTest)>serialize:
> 447235380:
> > a(n) FLMethodContextSerializationTest
> > 0xbff66e60 M [] in GZipWriteStream class(PositionableStream class)>on:do:
> > 419845144: a(n) GZipWriteStream class
> > 0xbff66e80 M BlockClosure>ensure: 448048616: a(n) BlockClosure
> > 0xbff66ea0 M GZipWriteStream class(PositionableStream class)>on:do:
> > 419845144: a(n) GZipWriteStream class
> > 0xbff66ec4 M [] in FLGZipStrategy>writeStreamDo: 447550896: a(n)
> > FLGZipStrategy
> > 0xbff66ee0 M FLByteArrayStreamStrategy>writeStreamDo: 447550884: a(n)
> > FLByteArrayStreamStrategy
> > 0xbff66efc M FLGZipStrategy>writeStreamDo: 447550896: a(n) FLGZipStrategy
> > 0xbff66f18 M
> > FLMethodContextSerializationTest(FLSerializationTest)>serialize:
> 447235380:
> > a(n) FLMethodContextSerializationTest
> > 0xbff66f34 M
> >
> FLMethodContextSerializationTest(FLSerializationTest)>resultOfSerializeAndMaterialize:
> > 447235380: a(n) FLMethodContextSerializationTest
> > 0xbff66f58 M
> FLMethodContextSerializationTest>testMethodContextThisContext
> > 447235380: a(n) FLMethodContextSerializationTest
> >
> >
> > any idea of where I should start to look at?
> >
> > Thanks
> >
> >
> > --
> > Mariano
> > http://marianopeck.wordpress.com
> >
>



-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20111209/1dc5325d/attachment.htm


More information about the Vm-dev mailing list