[parisc-linux] Mysterious hangs with parisc (a send_group_sig_info() analysis)
Michael S. Zick
mszick at morethan.org
Sat Jul 22 13:11:18 MDT 2006
On Sat July 22 2006 12:23, Carlos O'Donell wrote:
> > And here are a lot of questions:
> > Q2: some diff in routine like 2 times ldcw with gcc-3 and only one with gcc-4 (may be ok?)
> >
>
> Analyze the code. Is it doing functionally the same thing?
>
> I assert that yes, it's doing exactly the same thing. The older gcc
> has unwrapped one of the ldcw's, and thus has two copies of the inner
> loop in the assembly. The code on the right does exactly the same
> thing, but in less instructions. GCC has gotten better.
>
> There isn't a missing lock, we only needed one lock, the older gcc was
> doing a poorer job of code generation.
>
OK - will go with that theory.
> There may be other parts of the kernel that have problems, so keep looking!
>
Now that portion of the work is easy (not quick, easy) to reproduce.
Pick a fairly recent kernel (I think Joel has used both 2.6.16 & 2.6.17);
Use gcc-3.3 to build 64-bit-smp;
Use gcc-4.1 to build 64-bit-smp;
Pick a machine with two or more processors (Joel has PA8000 & PA8700);
Pick yourself a never-ending script that keeps all processors busy;
Run the gcc-4.1 built kernel; observe that machine locks up after some
time period ranging from hours to a few days;
Boot the gcc-3.3 built kernel; observe that machine runs for weeks.
Yes, there is something getting compiled differently than intended.
Q) Is the following an expected difference?
send_group_sig_info: send_group_sig_info:
.PROC .PROC
.CALLINFO FRAME=144,CALLS,SAVE_RP,ENTRY_GR=6 | .CALLINFO FRAME=160,CALLS,SAVE_RP,ENTRY_GR=7
Mike
More information about the parisc-linux
mailing list