question

Upvotes
Accepted
1 0 1 4

RFA Exception Handler - Access Violation / Excel Vba Eikon

I implemented a VBA script which collects all options in a Chain (e.g. "0#ABBN*.EX") via

the AdfinXRtLib.AdxRtChain object. Next the script queries data for all options the chain via

AdfinXRtLib.AdxRtList (~300 RICS, 10 FID). So fare the script works as intended.

However, if this is done in a loop of ~100+ iterations excel crashes with the below error message.

Do you have an idea what goes wrong?

(In every loop new API objects are initialize, I have no other COM add-ins active.

I'm using AdfinX Real Time 6.0 Library.)

RFA Exception Handler

Application: EXCEL
Process Id: 0x330C
Thread Id: 0x47C0

File: ..\..\..\Common\Support\OS\Impl\Thread.cpp
Line: 51

Problem:
Exception "Access Violation" (0xC0000005) occured at 0x52BBF608: memory at 0x00000000 cannot be read

eikonrfaeikon-com-apierrorexcelvba
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Could you upload a sample Excel file with this issue? Thanks

Are these calls sequential, i.e. you are creating a new request after receiving a response for the previous iteration?

Upvotes
Accepted
1 0 1 4

@Zhenya Kovalyov the samplefile does not trigger an error. I assume the problem is triggered by creating a new AdxRtLists for each request. If I reuse the same object for each request the error does not trigger.

Maybe, I should keep one AdxRtLists object alive and register/unregister new items in each request.?

I do not request multiple instruments at the same time because I need the results for further calculations which should not be based on outdated market prices. Furthermore the sequence and time of each instrument is unknown.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Well, it looks like that the error is triggered when you destroy the object rather than create it. In the sample file I decouple the event handler routine from disposing of the created objects, and it works fine.

Reusing the object is also a possibility, make sure that you do it correctly by executing

mAdxRtList.StopUpdates 

mAdxRtList.CloseAllLinks 

mAdxRtList.UnregisterAllItems

@Zhenya Kovalyov

Thanks, with reusing the object it works very well now.

Upvotes
1 0 1 4

I created a simplified xslm file where the exeption still occures. Simply run the sub test. The script crashes between i=250 and i=300. Thanks for your support.

Yes, it creates a new request with each iteration.

rfaaccessviolation.zip


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@sascha.arican, is there a reason why you request the instruments with multiple AdxRtLists instead of running a single request for multiple instruments?

In the meantime, could you open this file adxrtlist-samplexlsm.zip run the following sequence:

1. Create()

2. Request()

and after "DONE" in the immediate window

3. Dispose()

Does it trigger an error?