EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  <19961997  1998  1999  2000  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  <19961997  1998  1999  2000  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: Re: Anyone using Tornado yet?
From: [email protected] (Jeff Hill)
To: [email protected], [email protected]
Date: Thu, 29 Feb 96 16:53:44 MST
Nick,

> Sometimes (but not always) I got the following after
> calling iocInit:
> 
> task: 0X785ec0 tShell
> Assertion failed: semStatus==OK, file ../iocLogClient.c, line 445
> 
> The relevant lines are:
> 
>        /*
>         * mutex on
>         */
>         semStatus = semTake(iocLogMutex, WAIT_FOREVER);
> 	assert(semStatus==OK);


This problem was discovered in January:

	From: [email protected] (Jeff Hill)
	Date: Fri, 12 Jan 96 11:36:30 MST
	Subject: Re: Incorrect error handling by 'dbLoad' ?
	Message-Id: <[email protected]>
	
	
	
	
	> I get the following message from dbLoad:
	> ----
	> -> dbLoad "../../camacDev/db/camac.database"
	> task: 0Xf9a8c0 tShell
	> Assertion failed: semStatus==OK, file ../iocLogClient.c, line 448
	> ----
	> At this point the shell locks up, and all I can do is reboot.
	> 
	> I found that I was loading a db with the "default.sdrSum" file out of date.
	> When I re-created the db with the correct "default.sdrSum" file the problem
	> goes away.  I looked at the code for dbLoad(), and I believe it should
	> print an error message and return -1.
	> 
	> I am using EPICS R3.12.2. 
	
	This is a known problem in R3.12.2. The problem occurs when db load 
	detects a problem and then attempts to print a message. The log system 
	ends up getting called by db load prior to its getting initialized in 
	iocInit().
	
	A fix (adding a lazy init to the log system) has been commited
	into CVS at APS.
	
	The problem can be fixed by adding the following code to the top of
	the function iocLogVPrintf() in $(EPICS)/base/src/libvxWorks/iocLogClient.c
	
		/*
		 * Check for init
		 */
		if (!iocLogMutex) {
			status = iocLogInit();
			if (status) {
				return 0;
			}
		}

	Jeff
	
	______________________________________________________________________
	Jeffrey O. Hill                 Internet        [email protected]
	LANL MS H820                    Voice           505 665 1831
	Los Alamos, NM 87545 USA        FAX             505 665 5107
	
Unfortunately even the above patch does not prevent the problem
(calling the log system before it has been initialized) in all 
situations. A final solution will be commited at APS soon.


Jeff


Navigate by Date:
Prev: Re: Anyone using Tornado yet? Peregrine McGehee
Next: Events lost, discard count was XXX Gabor Csuka
Index: 1994  1995  <19961997  1998  1999  2000  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: Re: Anyone using Tornado yet? Peregrine McGehee
Next: Stepper motors Ric Claus
Index: 1994  1995  <19961997  1998  1999  2000  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 ·