[Vm-dev] Re: [Pharo-dev] vm crash in SmalltalkImage>garbageCollect

Mariano Martinez Peck marianopeck at gmail.com
Tue Nov 24 02:29:47 UTC 2015


OK, I made it work by compiling a VM with #checkForLeaks answering 1.
I see plenty of leaks but they are all of the pattern "cache tag leak in
CM".
See a piece of the gdb output:

-----------
cache tag leak in CM 0x1f4a8b58 @ 0x1f4a8bfa
cache tag leak in CM 0x1f4a9800 @ 0x1f4a98a9
cache tag leak in CM 0x1f4ad8a0 @ 0x1f4ad974
cache tag leak in CM 0x1f4ae380 @ 0x1f4ae3ea
cache tag leak in CM 0x1f4ae510 @ 0x1f4ae577
cache tag leak in CM 0x1f4af708 @ 0x1f4af94e

checkCodeIntegrity(0) 11637

fwdBlockValid(fwdBlock2) 40450

Program received signal SIGSEGV, Segmentation fault.
0x000ab672 in updatePointersInRangeFromto (memStart=525336576,
memEnd=555384320) at
/Users/mariano/Pharo/git/pharo-vm/src/vm/gcc3x-cointerp.c:40451
40451 targetObj = longAt(fwdBlock2);
-------------


There is none other type of leak displayed.

Any idea what does this mean?





On Mon, Nov 23, 2015 at 11:28 PM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:
>
>
>
>
> On Mon, Nov 23, 2015 at 11:15 PM, Mariano Martinez Peck <
> marianopeck at gmail.com> wrote:
>
>>
>>
>> On Mon, Nov 23, 2015 at 11:13 PM, Mariano Martinez Peck <
>> marianopeck at gmail.com> wrote:
>>
>>>
>>>
>>> On Mon, Nov 23, 2015 at 9:57 PM, Andrei Chis <chisvasileandrei at gmail.com
>>> > wrote:
>>>
>>>> Hi Eliot,
>>>>
>>>> Is an assert vm the same as a vm compiled with debugging support?
>>>> Also can you point me to any documentation about the leak checker.
>>>>
>>>>
>>> I was about to ask the same. I have the VM compiled with debug  support
>>> and gdb working. I can reproduce the crash.
>>> After checking a bit in the VM about what Eliot says, I found out
>>> methods like #clearLeakMapAndMapAccessibleObjects and #checkCodeIntegrity:.
>>>
>>> However, I tried, for example (clearLeakMapAndMapAccessibleObjects to
>>> later call checkCodeIntegrity(0) )  from gdb:
>>>
>>> ------
>>> *fwdBlockValid(fwdBlock2) 40450*
>>>
>>> *Program received signal SIGSEGV, Segmentation fault.*
>>> *0x000ab6d2 in ?? ()*
>>> *(gdb) call clearLeakMapAndMapAccessibleObjects()*
>>> -------
>>>
>>>
>>> And I get CPU at 100% never ending.
>>>
>>
>> I forgot to said..I also compiled the VM with a hardcoded #checkForLeaks
>> that answers 1 (to force the checker) but that did not work either.
>>
>>
>>
>>>
>>>
>>> Cheers,
>>>> Andrei
>>>>
>>>> On Nov 24, 2015 1:45 AM, "Eliot Miranda" <eliot.miranda at gmail.com>
>>>> wrote:
>>>> >
>>>> > Hi Andrei,
>>>> >
>>>> > On Mon, Nov 23, 2015 at 7:59 AM, Andrei Chis <
>>>> chisvasileandrei at gmail.com> wrote:
>>>> >>
>>>> >> Hi,
>>>> >>
>>>> >> With both the latest and stable vm I have an use case in which the
>>>> vm crashed in SmalltalkImage>>garbageCollect.
>>>> >>
>>>> >> To set up an image that exhibits the failure , execute this with the
>>>> latest pharo version:
>>>> >>
>>>> >> /pharo Pharo.image eval --save "{ { 'ConfigurationOfRubric'.
>>>> 'Pharo'. 'Rubric' }. { 'ConfigurationOfGlamourCore'. 'Moose'. 'Glamour' }.
>>>> { 'ConfigurationOfGTInspectorCore'. 'Moose'. 'GToolkit' }. {
>>>> 'ConfigurationOfGTPlaygroundCore'. 'Moose'. 'GToolkit' }. {
>>>> 'ConfigurationOfGTEventRecorder'. 'Moose'. 'GToolkit' }. {
>>>> 'ConfigurationOfGTSpotter'. 'Moose'. 'GToolkit' }. } do: [ :spec | Gofer
>>>> new smalltalkhubUser: spec second project: spec third; package: spec first;
>>>> load ]."
>>>> >>
>>>> >> ./pharo Pharo.image config
>>>> http://www.smalltalkhub.com/mc/Pharo/Pharo50Inbox/main
>>>> ConfigurationOfGToolkitCore --install=3.2
>>>> >>
>>>> >> Then  attempting to run the following code triggers the failure:
>>>> >>
>>>> >> ./pharo Pharo.image eval --save "TestRunner open model
>>>> packageSearchUpdate: 'gt-tests-inspector'; classSearchUpdate:
>>>> 'GTInspectorExamplesTest'; runAll"
>>>> >>
>>>> >> Based on the trace below the failure happens when the
>>>> test GTInspectorExamplesTest calls 'Smalltalk>>garbageCollect' in the setUp
>>>> method.
>>>> >>
>>>> >> That call can be removed, however, in other runs the failure happens
>>>>  in other methods calling Smalltalk>>garbageCollect.
>>>> >>
>>>> >> Is it possible that this is a bug with the image (some broken
>>>> object) or is it a vm bug?
>>>> >
>>>> >
>>>> > The way to test this is to build an assert VM and then use the leak
>>>> checker.  The leak checker will allow you to narrow down the cause.  If the
>>>> leak checker shows no corruption then its definitely a GC bug.  If there
>>>> leak checker does show corruption before GC then one still has to find out
>>>> what caused the heap corruption, but you can use the leak checker to narrow
>>>> the search.
>>>> >
>>>> > HTH
>>>> > Eliot
>>>>
>>>> >
>>>> >> Cheers,
>>>> >>
>>>> >> Andrei
>>>> >>
>>>> >>
>>>> >>
>>>> >> andrei$ ./pharo Pharo.image eval --save "{ {
>>>> 'ConfigurationOfRubric'. 'Pharo'. 'Rubric' }. {
>>>> 'ConfigurationOfGlamourCore'. 'Moose'. 'Glamour' }. {
>>>> 'ConfigurationOfGTInspectorCore'. 'Moose'. 'GToolkit' }. {
>>>> 'ConfigurationOfGTPlaygroundCore'. 'Moose'. 'GToolkit' }. {
>>>> 'ConfigurationOfGTEventRecorder'. 'Moose'. 'GToolkit' }. {
>>>> 'ConfigurationOfGTSpotter'. 'Moose'. 'GToolkit' }. } do: [ :spec | Gofer
>>>> new smalltalkhubUser: spec second project: spec third; package: spec first;
>>>> load ]."
>>>> >>
>>>> >> andrei$ ./pharo Pharo.image config
>>>> http://www.smalltalkhub.com/mc/Pharo/Pharo50Inbox/main
>>>> ConfigurationOfGToolkitCore --install=3.2
>>>> >>
>>>> >> andrei$ ./pharo Pharo.image eval --save "TestRunner open model
>>>> packageSearchUpdate: 'gt-tests-inspector'; classSearchUpdate:
>>>> 'GTInspectorExamplesTest'; runAll"
>>>> >>
>>>> >>
>>>> >> Segmentation fault Mon Nov 23 16:48:36 2015
>>>> >>
>>>> >>
>>>> >>
>>>> >> https://github.com/pharo-project/pharo-vm.git Commit:
>>>> 28d077d8df494ce050ca42c97c892471e8b8740c Date: 2015-10-16 12:02:43 +0200
>>>> By: Esteban Lorenzano <estebanlm at gmail.com> Jenkins build #15016
>>>> >>
>>>> >>
>>>> >> C stack backtrace:
>>>> >>
>>>> >> 0   Pharo                               0x0004cacf reportStackState
>>>> + 159
>>>> >>
>>>> >>
>>>> >>
>>>> >> Smalltalk stack dump:
>>>> >>
>>>> >> 0xbffbf1a0 M SmalltalkImage>garbageCollect 0x1fd49e30: a(n)
>>>> SmalltalkImage
>>>> >>
>>>> >> 0xbffbf1c0 I GTInspectorExamplesTest>setUp 0x2126bc80: a(n)
>>>> GTInspectorExamplesTest
>>>> >>
>>>> >> 0x2126cb90 is not a context
>>>> >>
>>>> >>
>>>> >> Most recent primitives
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> new
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> replaceFrom:to:with:startingAt:
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> replaceFrom:to:with:startingAt:
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> perform:with:
>>>> >>
>>>> >> perform:with:
>>>> >>
>>>> >> perform:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> perform:with:
>>>> >>
>>>> >> perform:with:
>>>> >>
>>>> >> perform:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> new
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> @
>>>> >>
>>>> >> @
>>>> >>
>>>> >> perform:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> primUTCMicrosecondsClock
>>>> >>
>>>> >> //
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> value
>>>> >>
>>>> >> valueNoContextSwitch
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> replaceFrom:to:with:startingAt:
>>>> >>
>>>> >> primitiveGarbageCollect
>>>> >>
>>>> >> **IncrementalGC**
>>>> >>
>>>> >> **FullGC**
>>>> >>
>>>> >> garbageCollectMost
>>>> >>
>>>> >> **IncrementalGC**
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> someInstance
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> someInstance
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> someInstance
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> replaceFrom:to:with:startingAt:
>>>> >>
>>>> >> primitiveGarbageCollect
>>>> >>
>>>> >> **IncrementalGC**
>>>> >>
>>>> >> **FullGC**
>>>> >>
>>>> >> garbageCollectMost
>>>> >>
>>>> >> **IncrementalGC**
>>>> >>
>>>> >> wait
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> signal
>>>> >>
>>>> >> wait
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> signal
>>>> >>
>>>> >> wait
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> shallowCopy
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> at:put:
>>>> >>
>>>> >> signal
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> basicNew
>>>> >>
>>>> >> new:
>>>> >>
>>>> >> replaceFrom:to:with:startingAt:
>>>> >>
>>>> >> primitiveGarbageCollect
>>>> >>
>>>> >> **IncrementalGC**
>>>> >>
>>>> >> **FullGC**
>>>> >>
>>>> >>
>>>> >> (Segmentation fault)
>>>> >>
>>>> >> ./pharo: line 11:  5224 Abort trap: 6
>>>> "$DIR"/"pharo-vm/Pharo.app/Contents/MacOS/Pharo" --headless "$@"
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > _,,,^..^,,,_
>>>> > best, Eliot
>>>>
>>>>
>>>
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.com
>>>
>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>
>
>
> --
> 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/20151123/178695d1/attachment-0001.htm


More information about the Vm-dev mailing list