That is exactly the problem I fixed recently in the epics/extensions/src/ezcaIDL code. ezcaIDL calls functions in 2 other libraries:
ezca
EzcaScan
ezca calls ca_context_create with preemptive callbacks. EzcaScan does not call ca_context_create, it relies on automatic creation of a context. The problem was that if a function in ezca was called first, everything was fine. But if a function in EzcaScan was called first then the call to ca_context_create in ezca failed, and things did not work. I fixed it by guaranteeing that a function in ezca was always called before any function in EzcaScan.
Mark
________________________________________
From: [email protected] [[email protected]] on behalf of Tim Mooney [[email protected]]
Sent: Friday, April 19, 2013 9:31 AM
To: michael abbott
Cc: [email protected]
Subject: Re: Calling ca_context_create(1) too late
Is there any chance you've made any CA calls before calling ca_context_create()?
If so, CA might have made a call to ca_context_create() for you, and may not have
enabled preemptive callbacks, which I understand that you have to enable on an ioc.
saveData calls ca_context_create() after iocInit, so I'm pretty sure that's not
the problem.
Tim
----- Original Message -----
> From: "michael abbott" <[email protected]>
> To: [email protected]
> Sent: Friday, April 19, 2013 8:44:09 AM
> Subject: Calling ca_context_create(1) too late
>
> I've just discovered that calling ca_context_create(1) after
> iocInit() appears to succeed (it returns ECA_NORMAL) ... but the
> resulting context is not very healthy! In my particular case I find
> that ca_array_get_callback delivers zero length data, but I expect
> other deeper problems are to be found.
>
> I understand that I need to call ca_context_create() a good deal
> earlier, but I don't really understand why it appears to succeed --
> is it possible for an error code to be returned instead, please?
> (In some future version of EPICS, I'm testing this on 3.14.11.)
>
> Alternatively, is there some reliable way I can test whether it has
> succeeded? I don't have full control over when my library is
> initialised, so detecting an error immediately would be more
> friendly to the user.
>
> --
> This e-mail and any attachments may contain confidential, copyright
> and or privileged material, and are for the use of the intended
> addressee only. If you are not the intended addressee or an
> authorised recipient of the addressee please notify us of receipt by
> returning the e-mail and do not use, copy, retain, distribute or
> disclose the information in or attached to the e-mail.
> Any opinions expressed within this e-mail are those of the individual
> and not necessarily of Diamond Light Source Ltd.
> Diamond Light Source Ltd. cannot guarantee that this e-mail or any
> attachments are free from viruses and we cannot accept liability for
> any damage which you may sustain as a result of software viruses
> which may be transmitted in or with the message.
> Diamond Light Source Limited (company no. 4375679). Registered in
> England and Wales with its registered office at Diamond House,
> Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11
> 0DE, United Kingdom
>
>
>
>
>
>
- References:
- Calling ca_context_create(1) too late michael.abbott
- Re: Calling ca_context_create(1) too late Tim Mooney
- Navigate by Date:
- Prev:
Re: Calling ca_context_create(1) too late Tim Mooney
- Next:
Re: Calling ca_context_create(1) too late Andrew Johnson
- 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
- Navigate by Thread:
- Prev:
Re: Calling ca_context_create(1) too late Tim Mooney
- Next:
RE: Calling ca_context_create(1) too late michael.abbott
- 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
|