EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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

Subject: R3.13.1 RISC Arch IOC BUG Report (assertion failure in dbEvent.c)
From: [email protected] (Jeff Hill)
To: "Noboru Yamamoto" <[email protected]>, <[email protected]>
Cc: <[email protected]>
Date: Thu, 18 Nov 1999 12:37:45 -0700
Noboru,

It appears that you have found a bug which occurs only on IOC's
implemented on RISC architectures. Many thanks for bringing this
to my attention.

Symptoms:
Your IOC is running on a RISC CPU and you see the following message:
> CA event: A call to "assert (ev_que->evUser->nDuplicates>=1u)" failed

Cause:
A variable was maintained with the C increment (p->nDuplicates++)
and the C decrement (p->nDuplicates--) operators. These operations are
atomic
on CISC architectures such as M68k and the Intel Pentium, but not on RISC
architectures. I was well aware of this fact, and a mutex lock was applied
while
the variables were changed, but a low level lock was inadvertently applied
to protect
this counter, and unfortunately the locking granularity was incorrect and
the
variable was not protected.

Scope:
This problem was introduced in 'epics_R3_13_0_beta9'. Noboru indicates
that the problem is seen occasionally at KECK.

I have patched the next release 3.13 and also 3.14, but can not 100%
test the fix because we don't have a RISC arch IOC at this site.

Sorry about any inconvenience that this has caused.

Jeff

> -----Original Message-----
> From: Noboru Yamamoto [mailto:[email protected]]
> Sent: Wednesday, November 17, 1999 3:39 AM
> To: [email protected]
> Subject: assertion failiure in dbEvent.c
>
>
> Hi,
>
> We occasionary encounter the following error messages on IOC.
>
> CA event: A call to "assert (ev_que->evUser->nDuplicates>=1u)" failed in
> ../dbEvent.c at 977
> Please send a copy of the output from "tt (0xddc5f0)" and a copy
> of this message
> to the author or "[email protected]"
> This problem occurred in "@(#)Version R3.13.1.1 $$Date: 1999/05/13
> 05:35:28 $$"
> filename="../taskwd.c" line number=176
> task ddc5f0 CA event suspended
>
> -> tt (0xddc5f0)
> 173f5c vxTaskEntry    +60 : event_task ()
> 1c96778 event_task     +100: 1c96928 ()
> 1c96a68 event_task     +3f0: epicsAssert ()
> 1cb4320 epicsAssert    +d4 : taskSuspend ()
> value = 0 = 0x0
> -> ti (0xddc5f0)
>
>   NAME        ENTRY       TID    PRI   STATUS      PC       SP     ERRNO
>  DELAY
> ---------- ------------ -------- --- ---------- -------- --------
> ------- -----
> CA event   event_task     ddc5f0  49 SUSPEND+I    16f230   ddc510
> 0     0
>
> stack: base 0xddc5f0  end 0xddb208  size 4816   high 2840   margin 1976
>
> options: 0xc
> VX_DEALLOC_STACK    VX_FP_TASK
>
> r0     =  160620c   sp     =   ddc510   r2     =        0   r3     =
>    0
> r4     =    fcfbe   r5     =       32   r6     =        0   r7     =
>    3
> r8     =        2   r9     =       64   r10    =        1   r11    =
>    0
> r12    =        2   r13    =        0   r14    =        0   r15    =
>    0
> r16    =        0   r17    =        0   r18    =        0   r19    =
>    0
>
>
> As you see, this error suspend "CA event" task and noone can open new CA
> connection on this IOC, resulting IOC reboot.
> In the tech-talk archive, I can find the similar but slightly different
> post shown bellow.
>
> >
> > Hi Rosemary,
> > I think you must be running the sequencer and
> > there may be a problem with it.
> >
> > There were several bugs fixed in the sequencer between the
> > versions sent out with Beta11 and the one sent out with Beta12
> > and there is also a special version that William Lupton at Keck
> > is using, so it would be helpful to know which one you have.
> >
> >
> >
> > When you first start
> > up the sequencer on the ioc by
> > typing
> > seq &<your sequence program name>
> > it should tell you what version you are using.
> >
> > In my case I type:
> >  seq & llrfFillHistory
> > and it replies:
> > @(#)SNC/SEQ Version 1.9.2.Beta12 : Fri Sep  4 10:42:22 1998
> > which means it is Version 1.9.2.Beta12.
> >
> > Could you please tell us what Version of the sequencer you are using?
> >
> >
> > Thanks,
> > Rozelle
> >
> > ---------------------------------------------------------
> > |                                                       |
> > |Rozelle Wright              Phone (505) 667-4804       |
> > |Los Alamos Natl Labs LANSCE-8  FAX (505) 665-5107      |
> > |PO Box 1663 MS-H820         Group Office (505) 667-6087|
> > |Los Alamos, NM 87545        email : [email protected]   |
> > |                                                       |
> > ---------------------------------------------------------
> >
> >
> >
> >
> >
> > > From [email protected] Mon Oct  5 21:06 MDT 1998
> > > Date: Mon, 5 Oct 1998 17:00:47 -1000
> > > To: [email protected]
> > > Subject: Failure of assert within dbEvet.c
> > > Content-Type: text
> > > Content-Length: 1095
> > > X-Lines: 36
> > >
> > >
> > >
> > > Aloha,
> > >
> > > Any ideas with regard to the below?
> > >
> > >
> > > ------------------------------------------------------------
> > > EV seqAux: A call to "assert
> (ev_que->evUser->nDuplicates>=1u)" failed in ../dbEvent.c at 1036
> > > Please send a copy of the output from "tt (0xb635d8)" and a
> copy of this message
> > > to the author or "[email protected]"
> > > This problem occurred in "@(#)Version R3.13.0.beta.11 $$Date:
> 1997/07/14 14:04:12 $$"
> > >
> > >
> > > ###################################
> > > cp_control (ready): offset
> > > task: 0Xc7b338 taskwd
> > > task b635d8 EV seqAux suspended
> > >
> > >
> > > -> tt (0xb635d8)
> > >  2cb98 _vxTaskEntry   +c  : _event_task (c4e188, a63478,
> b6ce60, 0, 0, 0)
> > > e5367c _event_task    +cc : e53858 (a63478, ffffffff, 0,
> b2000, 4401fc3, 8)
> > > e53968 _event_task    +3b8: _epicsAssert (e53130, 40c,
> e53838, 0, e7a208, 4)
> > > e6fcd8 _epicsAssert   +8c : _taskSuspend (0, e6fc10, e53838,
> e53130, 40c, &_dtiPixX)
> > > value = 0 = 0x0
> > > ->
> > > ------------------------------------------------------------
> > >
> > > Mahalo,
> > > Rosemary Alles
> > > Software Engineer
> > > Canada France Hawaii Telescope
> > > e-mail: <[email protected]>
> > > Phone : 808-885-3178
> > > Fax   : 808-885-7288
> > >
>
>  Does anyone have any idea to avoid this error ?
>
> Thanks,
>
> Noboru Yamamoto
> KEKB control group
> KEK, Accelerator Lab.
>



References:
assertion failiure in dbEvent.c Noboru Yamamoto

Navigate by Date:
Prev: RE: Channel Archiving Jeff Hill
Next: Re: Channel Archiving Christopher A. Larrieu
Index: 1994  1995  1996  1997  1998  <19992000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: assertion failiure in dbEvent.c Noboru Yamamoto
Next: SDDS archiving Michael Borland
Index: 1994  1995  1996  1997  1998  <19992000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·