preventing floating point exception terminating applications.

Charles Lee charles at utstar.com
Tue Aug 17 05:54:07 EST 2004


Hello!

I am using Linux Kernel 2.4.7 package for PPC from TimeSys.  I am
experiencing the SIGFPE which cause some application processes terminating
after runnning for several hours
(I has 16 ping processes running, after 5 hours later, 4 to 5 ping processes
has terminated due to "Floating point exception).

I has capture several Program Exceptions due to floating point exception as
follows:
(Where MSR[FE0] & MSR[FE1] are set and the trap is 0x0700 ---program
exception due the floating point)
============================================================================
===========================
<#1>Entance: Exception signal  err=8
Created: 2004/08/12 18:21:02
System had run:    0 days 05:03:40
NIP: 10077590 XER: 20000000 LR: 1003210C SP: 7FFFF6B0 REGS: c408bf50 TRAP:
0700
MSR: 0011f932 EE: 1 PR: 1 FP: 1 ME: 1 IR/DR: 11
curr TASK=c408a000[29948] 'check_alive' Syscall:173 Thread Sleep On:0
Locked Mutex:0  how many Locks:0
MSR=00009032   HID0=8000c088  HID1=70000000
sc_siumcr=01400000, sc_sypcr=ffffff83, sc_swsr=af31,  sc_bcr=00000000
sc_ppc_acr=03  sc_ppc_alrh=30126457  sc_ppc_alrl=89abcdef   sc_lcl_acr=03
sc_lcl_alrh=01263457  sc_lcl_alrl=89abcdef  sc_tescr1=00000000
sc_tescr2=00000000
sc_ltescr1=00000000  sc_ltescr2=00000000  sc_pdtea=00227250
sc_pdtem=00000020
sc_ldtea=00	sc_ldtem=00
ic_sicr=0000  ic_sivec=00000000  ic_sipnrh=00000002  ic_sipnrl=00000000
ic_siprr=06305770  ic_scprrh=05309770  ic_scprrl=05309770  ic_simrh=0000f900
ic_simrl=80405000  ic_siexr=00005900


<#2> Entance: Exception signal 8
Created: 2004/08/12 18:21:02
System had run:    0 days 05:03:40
NIP: 0FF5CB84 XER: 00000000 LR: 0FF542C8 SP: 7FFFEAB0 REGS: c443bf50 TRAP:
0700
MSR: 0011f932 EE: 1 PR: 1 FP: 1 ME: 1 IR/DR: 11
curr TASK=c443a000[3206] 'ping' Syscall:167 Thread Sleep On:0
Locked Mutex:0  how many Locks:0

<#3> Entance: Exception signal 8
Created: 2004/08/12 18:21:03
System had run:    0 days 05:03:41
NIP: 0FF5CB84 XER: 00000000 LR: 0FF542C8 SP: 7FFFEAB0 REGS: c43bdf50 TRAP:
0700
MSR: 0011f932 EE: 1 PR: 1 FP: 1 ME: 1 IR/DR: 11
curr TASK=c43bc000[3273] 'ping' Syscall:167 Thread Sleep On:0
Locked Mutex:0  how many Locks:0
MSR=00009032   HID0=8000c088  HID1=70000000
sc_siumcr=01400000, sc_sypcr=ffffff83, sc_swsr=af31,  sc_bcr=00000000
sc_ppc_acr=03  sc_ppc_alrh=30126457  sc_ppc_alrl=89abcdef   sc_lcl_acr=03
sc_lcl_alrh=01263457  sc_lcl_alrl=89abcdef  sc_tescr1=800a0000
sc_tescr2=00000000
sc_ltescr1=00000000  sc_ltescr2=00000000  sc_pdtea=00227250
sc_pdtem=00000020
sc_ldtea=00	sc_ldtem=00
ic_sicr=0000  ic_sivec=00000000  ic_sipnrh=00000002  ic_sipnrl=00000000
ic_siprr=06305770  ic_scprrh=05309770  ic_scprrl=05309770  ic_simrh=0000e900
ic_simrl=80405000  ic_siexr=00005900
============================================================================
===========

*******I am urgent for any expert us the recommendatons to resovle this
problem********
[1] If we don't any floating point calculation in our Linux system,  Can we
set MSR[FE0] & MSR[FE1]= = 0,
will this cause any problem ?
Will I still have exceptional trap generated?
Will I still have problem that my application terminated due the floating
point exceptions?


[2] If set MSR[FE0]=1 & MSR[FE1]=0 in the MPC8270(imprecise recoverable
mode),  Would this help in the 2.4.7 kernel?
because I saw the 2.4.7 kernel already does "isync" and "lazy FPU switching"
in the "load_up_fpu", which called from "FPUnavailable" in
<arch/ppc/kernel/head.S>.

My goal is that:  I don't want to kernel crash & reset,  and I don't want
the application terminated due to the floating point program exception.

Would some-one please,  thank you very much,


Charles


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list