[Vm-dev] Frequent SegFaults in PharoVM with Pharo 3.0
Mariano Martinez Peck
marianopeck at gmail.com
Wed Nov 6 21:23:47 UTC 2013
Max, did you try with Eliot VMs besides the pharo ones?
On Wed, Nov 6, 2013 at 6:04 PM, Max Leske <maxleske at gmail.com> wrote:
> We’ve been encountering frequent SegFaults when running the Fuel tests on
> the Pharo CI (https://ci.inria.fr/pharo-contribution/job/Fuel/). Since
> today I’ve also been able to reproduce the SegFaults on my MacBook Pro (OS
> X 10.9) too. We have not been able to determine the cause of the SegFault
> but we can produce SegFaults often, although not reliable (more reliable on
> the CI).
> The CI uses the stable VM:
> I use a newer version from October on my machine:
> I’ve attached all the dumps of the crashes I was able to produce on my
> machine, together with Apple’s crash logs.
> I’ve been able to deduce the following:
> - garbage collection seems to be a trigger for the SegFault. When one of
> the methods FLMethodContextSerialization>>testFuelShouldIgnoreFuel and
> FLMethodContextSerialization>>testMethodContextWithNilPc contain the line
> “3 timesRepeat: [Smalltalk garbageCollect]” the SegFault appears nearly
> always (on CI). When I remove the line the builds run through.
> - Not all methods with the garbage collect line trigger a SegFault (I
> could only identify those two)
> - the garbage collect line itself suffices as a trigger in the mentioned
> - The number of tests (amount of used memory?) seems to influence the
> appearence of the SegFault (e.g. loading "DevelopmentGroup" seems to
> trigger it more often than loading “Benchmarks”)
> - the SegFault always appears after the tests with the garbage collect
> line have been run, never before
> - the VM can’t write the crash.dmp every time
> Since the SegFaults are so random I cannot give you an image to reproduce
> the problem. I’ve had the best results using a fresh 3.0 image (
> http://files.pharo.org/image/30/30549.zip) and then evaluating the
> following in a workspace:
> Gofer it
> smalltalkhubUser: 'Pharo' project: 'Fuel';
> package: 'ConfigurationOfFuel';
> ((Smalltalk at: #ConfigurationOfFuel) project version: #bleedingEdge)
> load: 'DevelopmentGroup'.
> runClasses: (TestCase allSubclasses select: [ :class | class name
> beginsWith: 'FL'])
> named: ‘foo'
> If it doesn’t work, try using the TestRunner manually. Select the default
> Fuel tests (alphabetically at F) and the additional Fuel tests (at the
> bottom of the list) and run them.
> If anybody has any clue about what could be going on I’d really appreciate
> any input. I’ll happily provide more information if I can.
> Thanks for reading :)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vm-dev