Argonne National Laboratory

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  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
<== Date ==> <== Thread ==>

Subject: MIPS epicsEventWaitWithTimeout(()
From: Matt Rippa <mrippa@gemini.edu>
To: tech-talk@aps.anl.gov
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 
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 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·