[parisc-linux] Re: do_page_fault() infinite loop running 2.4.20-pa18 #9 SMP

John David Anglin dave@hiauly1.hia.nrc.ca
Wed, 8 Jan 2003 12:35:59 -0500 (EST)


> saturn:/usr/local/src# dmesg | more
> Linux version 2.4.20-pa18 (bame@dsl2) (gcc version 3.0.3) #1 Tue Jan 7
> 06:44:31
> MST 2003
> FP[0] enabled: Rev 1 Model 15
> The 32-bit Kernel has started...
> Determining PDC firmware type: System Map.
> [*SNIP*]
> Adding Swap: 249232k swap-space (priority -1)
> eth0: link ok.
> 
> do_page_fault() pid=266 command='sendmail' type=6 address=0x00000003
> 
>      YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
> PSW: 00000000000001001111111100001111 Not tainted
> r00-03  00000000 400c78f0 40315e07 00000000
> r04-07  40326bec 40316230 00000010 00000001
> r08-11  00000000 402d3c98 0008df50 0008df54
> r12-15  00000076 00000073 00000006 00000000
> r16-19  000b3348 ffffffff 000bc248 40326bec
> r20-23  00000000 faf02a58 00000000 00000001
> r24-27  00000000 40316230 000f6dd0 000b3348
> r28-31  00000016 400e19dc faf029c0 40315e07
> sr0-3   00000000 0000016e 00000000 0000016e
> sr4-7   0000016e 0000016e 0000016e 0000016e
> 
> IASQ: 0000016e 0000016e IAOQ: 00000003 00000007

The code has branched to address 0.  If there is a core dump,
you might get some idea what happened by disassembling the
code just before and after $rp (0x40315e04).  Branches to address
0 can occur if the code tries to call an undefined weak function
or if there is a problem with function pointers.  I suspect an
indirect call since $r22 is 0 (this register contains the address
of the callee in an indireect call).

Page faults often occur when there is a problem in user code.
In the SMP case, certain page faults cause an infinite loop
in do_page_fault().  Do you see the above repeated indefinitely?

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)