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

Ben Coman btc at openinworld.com
Tue Nov 24 12:41:02 UTC 2015


On Tue, Nov 24, 2015 at 10:29 AM, Mariano Martinez Peck
<marianopeck at gmail.com> wrote:
>
> 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
>>>>> >>

<snipped long backtrace>


More information about the Vm-dev mailing list