Frequent SegFaults in PharoVM with Pharo 3.0
Hi 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: http://files.pharo.org/vm/pharo/linux/stable.zip I use a newer version from October on my machine: http://files.pharo.org/vm/pharo/mac/273.zip 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 methods. - 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'; load. ((Smalltalk at: #ConfigurationOfFuel) project version: #bleedingEdge) load: 'DevelopmentGroup'. HDTestReport 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 :) Max
participants (1)
-
Max Leske