Okay, short update: First, thanks to everybody who has been helping to test this. With all the data points, and some help from bacek last night, I think we have the problem isolated. Originally, Moritz was seeing two distinct sets of failures that both manifested as weird segfaults and assertion failures during the build and spectests for Rakudo. The first set of failures was caused by GC running during packfile packing and output to file, typically during the build. This was a problem with gms and ms2 GC cores alike. Patches from plobsing and myself have fixed this set of issues.
The second set of problems occurs only with the GMS GC, typically during program execution. This typically manifests as failures during test or spectest. This happens because the imcc_compreg_pmc branch is returning PtrObj PMCs from IMCC instead of raw PackFile* pointers. Those PMCs, while registered in the root set, are not being writebarriered when the PackFile* structure is modified. These modifications are more common than I originally had thought. bacek has started a new branch to work around the problem "the right way". I don't know if that branch will be ready before the release. Here's my plan of attack: Plan A: I'm going to conjure up an evil hack today to try and add write barriers to PackFile operations. Plan B: If my evil hack does not work by the end of the day today, I'm going to try to unmerge the imcc_compreg_pmc branch until after the release, when we can merge it and bacek's fixes together. I'll start on the unmerge tomorrow morning if needed. Plan C: If all else fails, and the unmerge is not possible for whatever reason (there's no reason to suspect it won't be), we can release as-is. The caveat being that the GMS GC won't be usable in the release, although it's not the default supported GC anyway. This is obviously a bad option, and we won't come to it unless there are severe problems. Thanks again to everybody who's helped run tests. The effort has been extremely valuable narrowing down the problem and helping us to find a solution. --Andrew Whitworth On Fri, Apr 15, 2011 at 7:02 AM, Vasily Chekalkin <[email protected]> wrote: > Hello. > > Long story short - "our packfiles handling suck". Major problem > PackFile* interp->initial_pf (which is quite misleadig name for it) > gets updated behind the scene. "Scene" is PtrObj created by new API. > > Proper solution is to switch to Packfile PMCs internally. But it's > quite big project (and we missed opportunity for gsocing it). > > For time being can you test packfile_wrap branch? > > -- > Bacek > > On Fri, Apr 15, 2011 at 7:15 PM, Moritz Lenz <[email protected]> wrote: >> On 04/15/2011 11:00 AM, Gerd Pokorra wrote: >>> $ make spectest >>> >>> from today from current rakudo on top of current parrot on x86_64 >>> configured without options finished fine. >> >> It only segfaults when parrot is configured with --gc=gms >> >> Cheers, >> Moritz >> _______________________________________________ >> http://lists.parrot.org/mailman/listinfo/parrot-dev >> > _______________________________________________ > http://lists.parrot.org/mailman/listinfo/parrot-dev > _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
