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: RE: MIPS epicsEventWaitWithTimeout(()
From: "Jeff Hill" <johill@lanl.gov>
To: "'Matt Rippa'" <mrippa@gemini.edu>, <tech-talk@aps.anl.gov>
Date: Wed, 10 May 2006 08:42:22 -0600
> 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?

>From my perspective, it would be better to fix bugs generating FPE, and that
sweeping them under the carpet wouldn't be the better alternative.

Jeff

> -----Original Message-----
> From: Matt Rippa [mailto:mrippa@gemini.edu]
> Sent: Tuesday, May 09, 2006 7:49 PM
> To: tech-talk@aps.anl.gov
> Subject: MIPS epicsEventWaitWithTimeout(()
> 
> 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



References:
MIPS epicsEventWaitWithTimeout(() Matt Rippa

Navigate by Date:
Prev: RE: MIPS epicsEventWaitWithTimeout(() Jeff Hill
Next: June EPICS Meeting reminder Andrew Johnson
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: MIPS epicsEventWaitWithTimeout(() Jeff Hill
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 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·