1994 1995 1996 1997 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 2025 | Index | 1994 1995 1996 1997 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Asyn/VXI-11 problems |
From: | Eric Norum <[email protected]> |
To: | [email protected] |
Cc: | TECHTALK tech-talk <[email protected]> |
Date: | Fri, 21 Sep 2007 08:54:21 -0500 |
On Friday 21 September 2007 12:30, Benjamin Franksen wrote:I have not produced a fix for this problem. I guess you (Eric) know better how to approach this.
Well, my current, very crude, solution is to replace all (seven) clnt_destroy calls by
if (pvxiPort->rpcClient) { clnt_destroy(pvxiPort->rpcClient); pvxiPort->rpcClient = 0; } else { if(pasynUser) asynPrint(pasynUser,ASYN_TRACE_ERROR, "%s internal error: RPC handle already destroyed\n",pvxiPort->portName); }
In fact I can see the above 'internal error' messages appearing when I run
our test setup.
There is yet another problem: the error checking after calls to clnt_call si
wrong. The code is
if(stat!=RPC_SUCCESS || errno!=0) { /* error handling */ }
which leads to pseudo errors; errno should be checked only if the return
value is abnormal. It should be just
if(stat!=RPC_SUCCESS) { /* error handling */ }
Also, the error message should not output the numerical value of errno, but
the number converted to a string (via strerror) as is done in all other
parts of the file.
Cheers Ben
-- Eric Norum <[email protected]> Advanced Photon Source Argonne National Laboratory (630) 252-4793