EPICS Home

Experimental Physics and Industrial Control System


 
1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: MIPS epicsEventWaitWithTimeout(()
From: Matt Rippa <[email protected]>
To: [email protected]
Date: Tue, 09 May 2006 15:49:19 -1000
Hi all,

We're getting a floating point exception running iocInit()
on a mips hkbaja47 with 3.14.8.2 exampleApp. Specifically this is the "timerQueue" task. Tracking this down it points to epicsEventWaitWithTimeout() inside base-3.14.8.2/src/libCom/osi/os/vxWorks/osdEvent.c


The double timeOut passed in is DBL_MAX size (1.79769e+308)
and used to calculate a semTake timeout. Basically, semTake and wait
a very long time:

int ticks = timeOut*sysClkRateGet();
status = semTake((SEM_ID)id,ticks);

The mips can't seem to handle the double to int conversion and ends up with an FPE and I think it's FPE_INVALID_OP.

It can handle this when ticks is clipped to LONG_MAX*1.0. LONG_MAX*1.1 fails. We're wondering if there's any other gotchas if we do this for
our mips targets?


Of course it would be better if we could all run the same code. :-) Maybe we need to disable some FPE's for the mips? Does EPICS rely on disabling FPE's for all tasks?


Many thanks, -Matt


iocInit() Starting iocInit ############################################################################ ### EPICS IOC CORE built on May 8 2006 ### EPICS R3.14.8.2 $R3-14-8-2$ $2006/01/06 15:55:13$ ############################################################################

FPE Exception
Exception Program Counter: 0x80d3c22c
Status Register: 0x30006701
Cause Register: 0x0000003c
Task: 0x80f20870 "timerQueue"
iocInit: All initialization complete


-> tt 0x80ac70f0 80024434 vxTaskEntry +c : epicsThreadSleepQuantum (&epicsThreadCallEntryPoint, 80acf48c, 0, 0) 808cea18 epicsThreadSleepQuantum+78 : epicsThreadCallEntryPoint (eeeeeeee, eeeeeeee, eeeeeeee, eeeeeeee) 808c2f04 epicsThreadCallEntryPoint+a4 : timerQueueActive::run(void) (eeeeeeee, eeeeeeee, eeeeeeee, eeeeeeee) 808d4ee4 timerQueueActive::run(void)+40 : epicsEvent::wait(double) (800cfb5c, eeeeeeee, eeeeeeee, eeeeeeee) 808c8804 epicsEvent::wait(double)+28 : epicsEventWaitWithTimeout (eeeeeeee, 80acf494, 808c7a48, 80acfe10) --------------------------------

-> ti 0x80f20870

 NAME        ENTRY       TID    PRI   STATUS      PC       SP     ERRNO  DELAY
---------- ------------ -------- --- ---------- -------- -------- ------- -----
timerQueue 80d3c028     80f20870 129 SUSPEND    80d3c22c 80f205b8       0     0

stack: base 0x80f20870 end 0x80f1d990 size 11840 high 1464 margin 10376

options: 0xc
VX_DEALLOC_STACK    VX_FP_TASK

$0   =                0   at   = ffffffff80d60000   v0   =               3c
v1   = ffffffff80f20870   a0   = ffffffff80f28c90   a1   =                0
a2   =         7fefffff   a3   = ffffffffffffffff   t0   =         30006701
t1   =         30006700   t2   =                4   t3   =                0
t4   =                0   t5   =                0   t6   =                0
t7   =                0   s0   = ffffffff80f28c90   s1   = ffffffff80f20870
s2   = ffffffff80f28e6c   s3   = ffffffff80d34080   s4   =                0
s5   =                0   s6   =                0   s7   =                0
t8   =                0   t9   =                0   k0   = 8007823ceeeeeeee
k1   =                0   gp   = ffffffff80119dd8   sp   = ffffffff80f205b8
s8   =                0   ra   = ffffffff80d3c21c
sr   = 30006701           pc   = 80d3c22c


fpcsr = 1000014 fp0 = Inf fp2 = 2 fp4 = 6.31152e+08 fp6 = 0 fp8 = 0 fp10 = 0 fp12 = 0 fp14 = 0 fp16 = 0 fp18 = 0 fp20 = 1.79769e+308 fp22 = 0 fp24 = 0 fp26 = 0 fp28 = 0 fp30 = 0

FPE Exception
Exception Program Counter: 0xvalue = 80d3c22c0
Status Register: 0x = 0x30006701
Cause Register: 0x00000003c



Replies:
RE: MIPS epicsEventWaitWithTimeout(() Jeff Hill
RE: MIPS epicsEventWaitWithTimeout(() Jeff Hill

Navigate by Date:
Prev: Re: php epics module Andrew Johnson
Next: RE: MIPS epicsEventWaitWithTimeout(() Walters, M (Malcolm)
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: EDM Command Options Question Devin Bougie
Next: RE: MIPS epicsEventWaitWithTimeout(() Jeff Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024