Subject: Re: Kernel assertion failures while bootstrapping gcc
To: Steve Woodford <scw@netbsd.org>
From: Richard Earnshaw <rearnsha@arm.com>
List: current-users
Date: 02/13/2004 16:28:51
> On Friday 13 February 2004 3:15 pm, Richard Earnshaw wrote:
> > Can anybody come up with some theories as to why ARM kernels might be
> > tripping the assertion in "umap->refcount != 0" in ubc_map.c when
> > bootstrapping gcc?  Although it's not predictable as to when it will
> > fail, it does seem to happen pretty much every time, and it's been
> > doing this on all kernels since late October last year.
> 
> This is also mentioned in your PR; port-arm/23581, for which I'm still 
> saving up enough round-tuits to investigate. ;)
> 
> Seriously, if this started happening around October '03, then that 
> corresponds to the optimised arm/xscale mem* and copyin/out functions 
> going in.
> 
> Since I haven't seen this problem on my Xscale machines, it's a fair bet 
> the non-xscale code in those functions is suspect. My only two 
> non-xscale machines are running kernels which predate those changes 
> (though one of them was used to test the changes at the time).
> 
> Cheers, Steve
> 

That's a possibility, but I have a feeling it was later than that (the 
bcopy changes went in during the first half of the month, but I think it 
was nearer the end of the month that the problems started occurring) --  I 
really need to try a binary chop to get a better window, but so many times 
the kernel just fails to build, or just fails to even boot that it's very 
tedious trying to distinguish one failure from another.

I think the problems also started occurring at around the same time there 
were a number of changes made "to fix the benchmark tests" that were being 
discussed at around that time -- it wouldn't surprise me if one of those 
tests was interacting badly on the ARM.

Finally, it's not precisely predictable when it would happen.  AFAICT if 
it were a bcopy problem it could only be responsible if it were scribbling 
somewhere it shouldn't instead of where it should.

R.