EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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

Subject: Re: A call to 'assert(capacity != 0)' by thread‏
From: Benjamin Franksen <[email protected]>
To: Emmanuel Mayssat <[email protected]>
Cc: EPICS mailing list <[email protected]>
Date: Fri, 17 Jan 2014 12:41:53 +0100
On Thursday, January 16, 2014 18:14:10 Emmanuel Mayssat wrote:
> This thread is related to
> http://www.aps.anl.gov/epics/tech-talk/2013/msg02331.php (csm as a
> replacement of breakpoint tables)

> Although csm package (i.e. the cvtRecord) is promising, I included it
> in many of my IOCs in preparation of a large adoption.
 It turns out
> this library/record needs at least one instance of the record in the
> EPICS database Even an empty record can do!
>
> record(cvt,     "FooCV")
> {
> }
>
> otherwise the same IOC without that database entry crashes
>
> [...]
> iocInit()
> Starting iocInit
> ######################################################################
> ######
 ## EPICS R3.14.11 $R3-14-11$ $2009/08/28 18:47:36$
> ## EPICS Base built Jun 23 2010
> ######################################################################
> ######

>
>
> A call to 'assert(capacity != 0)'
>     by thread '_main_' failed in
> ../../../src/libCom/osi/os/default/osdMessageQueue.cpp line 76.
> EPICS Release EPICS R3.14.11 $R3-14-11$ $2009/08/28 18:47:36$. Local
> time is 2014-01-16 18:13:26.269437831 PST
> Please E-mail this message to the author or to [email protected]
> Calling epicsThreadSuspendSelf()

Hi Emmanuel

thanks for the report. This is indeed a bug in the csm module, the
record support contains this initialization call:

  initConversionQ = epicsMessageQueueCreate(countCvtRecords(),
    REINIT_MSG_SIZE);

which fails due to an assertion in base if there are no cvt records.

BTW, the precondition (that the first argument 'capacity' must not be 0)
is undocumented.

I uploaded a new release 4.2 that fixes this issue.

Cheers
Ben

> From: [email protected]
> To: [email protected]
> Subject: RE: A call to 'assert(capacity != 0)' by thread‏
> Date: Mon, 13 Jan 2014 14:30:41 -0800
>
>
>
>
> Just to close this thread and for future reference:
>
> * There were no errors before or after the iocInit but the one posted
> herein.
 * The iocs were previously behaving correctly (i.e. were not
> in development) * The problems showed up in many of my IOCs at the
> same time.
> The culprit was a new record + associated library developed by third
> party I had compiled in my most of production IOCs.
 Although I had
> previously tested this new record, it was in a simple IOC. The issue
> showed up in my "bulky" IOCs which include also many other non-base
> libraries/records. I suspect there is a conflict between libraries
> (why? which ones? Well, this needs to be further investigated).
> The solution  was simply to recompile my IOCs without the new record.
>
> For your information,
> --
> Emmanuel
>
>
> > Date: Wed, 8 Jan 2014 17:26:32 +0100
> > From: [email protected]
> > To: [email protected]
> > Subject: Re: A call to 'assert(capacity != 0)' by thread‏
> >
> > On 08.01.2014 00:32, Michael Davidsaver wrote:
> >
> > >  > epicsMessageQueueCreate(capacity, maxMessageSize)
> > >
> > >
> > >
> > > Someone is unwittingly attempting to create a message queue with
> > > capacity=0.
>
> >
> > Feature request: Can assert() write a stack dump?
> > What is written at the moment is not as helpful as it could be:
> >
> > A call to 'assert(capacity != 0)'
> >
> >      by thread '_main_' failed in
> >
> > ../../../src/libCom/osi/os/default/osdMessageQueue.cpp line 76.
> >
> > Dirk
> >
> >
> > >
> > >
> > >
> > > https://github.com/epicsdeb/epics-base/blob/9813f3c5d6b4251bfcb33d
> > > fce8b8db3f8efbe7fe/src/libCom/osi/os/default/osdMessageQueue.cpp#L
> > > 76
> >
> > >
> > >
> > > (Code link to github since launchpad.net is having issue atm.)
> > >
> > >
> > >
> > > On 01/07/2014 05:45 PM, Emmanuel Mayssat wrote:
> > >
> > >> On our way to CE certification(required for export to Europe), we
> > >> have
 3rd party consultants who are playing with the building
> > >> electrical power. Although we have UPSs everywhere, the shutdown
> > >> was much longer than anticipated.
> > >> Now as I am trying to recover from the shutdown, several of my
> > >> IOC
> > >> come up with this message:
> > >>
> > >>
> > >>
> > >>
> > >> [...]
> > >> iocInit()
> > >> Starting iocInit
> > >> #################################################################
> > >> ###########
 ## EPICS R3.14.11 $R3-14-11$ $2009/08/28 18:47:36$
> > >> ## EPICS Base built Apr  9 2010
> > >> #################################################################
> > >> ###########
> >>
> > >>
> > >>
> > >> A call to 'assert(capacity != 0)'
> > >>
> > >>     by thread '_main_' failed in
> > >>
> > >> ../../../src/libCom/osi/os/default/osdMessageQueue.cpp line 76.
> > >> EPICS Release EPICS R3.14.11 $R3-14-11$ $2009/08/28 18:47:36$.
> > >> Local time is 2014-01-07 13:30:20.876609556 PST
> > >> Please E-mail this message to the author or to
> > >> [email protected]
> > >> Calling epicsThreadSuspendSelf()
> > >>
> > >>
> > >>
> > >> I am investigating the issue.
> > >> But as I have people breathing down my neck, pointers are
> > >> welcome.
> > >> Regards,
> > >> --
> > >> Emmanuel
> > >
> > >
> >
> >

--
"Make it so they have to reboot after every typo." ― Scott Adams

Attachment: signature.asc
Description: This is a digitally signed message part.


References:
A call to 'assert(capacity != 0)' by thread‏ Emmanuel Mayssat
RE: A call to 'assert(capacity != 0)' by thread‏ Emmanuel Mayssat
RE: A call to 'assert(capacity != 0)' by thread‏ Emmanuel Mayssat

Navigate by Date:
Prev: CAJ "AlreadyBoundException" Mezger Anton Christian
Next: RE: garbage in zero length arrays Hill, Jeff
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: A call to 'assert(capacity != 0)' by thread‏ Emmanuel Mayssat
Next: VLANS designing,Geographical vs functional? Zhang Yuliang
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 17 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·