EDCD / EDDI

Companion application for Elite Dangerous
Other
444 stars 81 forks source link

VA ED event handlers not called and similar EDDI errors: "inaccessible due to its protection level" #2260

Closed Paleri closed 3 years ago

Paleri commented 3 years ago

What's Wrong

The EDDI ED events were not being called in VA handlers. Many error log entries of flavor: "inaccessible due to its protection level" upon EDDI attempt to process events.

Expected

VA starts up as it normally does with the EDDI plugin enabled, should see calls to EDDI VA events such as Docking Requested and the like as well as Welcome Commander flavor announcements. This was working fine for years.

Observed

VA reports nominal startup: 9:15:58 PM - Plugin support enabled. 9:15:58 PM - VoiceAttack privileges not elevated. If you are having trouble with key presses, try running as an administrator. 9:16:03 PM - The EDDI plugin is fully operational. 9:16:03 PM - Plugin 'EDDI 4.0.1' initialized.

I can retrieve state data from VA like Commander Name but do not get any of the ED game event VA handlers called. No errors are reported in VA; the events handlers are just not called. [Note: I have never run VA as admin; never had any issues all these years.]

Steps to reproduce

  1. Run VA with EDDI plugin enabled and note nominal VA start-up status messages.
  2. Run ED and start the game and generate a handled in-game event for which there is a VA EDDI event handler and note no call is noted on the VA log screen and no event handler is called.

Configuration

My Investigation

I could not find any reference to this problem on the web or here. Only information was from log files as noted below.

Investigation Notes

Checking the EDDI logs, I see a fairly normal startup:

2021-09-18T18:04:05 [Info] VoiceAttackPlugin:VA_Init1 Initialising EDDI VoiceAttack plugin 2021-09-18T18:04:05 [Info] EDDI:.ctor EDDI 4.0.1 starting 2021-09-18T18:04:06 [Warning] StarMapService:SetEdsmCredentials EDSM Responder not configured: API key not set. 2021-09-18T18:04:06 [Info] CargoMonitor:initializeCargoMonitor Initialized Cargo monitor 2021-09-18T18:04:06 [Info] CrimeMonitor:initializeCrimeMonitor Initialized Crime monitor 2021-09-18T18:04:06 [Info] MaterialMonitor:.ctor Initialized Material monitor 2021-09-18T18:04:06 [Warning] StarMapService:SetEdsmCredentials EDSM Responder not configured: API key not set. 2021-09-18T18:04:06 [Warning] StarMapService:SetEdsmCredentials EDSM Responder not configured: API key not set. 2021-09-18T18:04:06 [Info] StarSystemSqLiteRepository:CreateOrUpdateDatabase Starsystem repository schema is version 2 2021-09-18T18:04:06 [Info] MissionMonitor:initializeMissionMonitor Initialized Mission monitor 2021-09-18T18:04:06 [Info] EDDNResponder:.ctor Initialized EDDN responder 2021-09-18T18:04:06 [Warning] StarMapService:SetEdsmCredentials EDSM Responder not configured: API key not set. 2021-09-18T18:04:06 [Info] EDSMResponder:.ctor Initialized EDSM responder 2021-09-18T18:04:06 [Info] ShipMonitor:.ctor Initialized Ship Monitor 2021-09-18T18:04:06 [Info] StatusMonitor:.ctor Initialized Status monitor 2021-09-18T18:04:06 [Warning] StarMapService:SetEdsmCredentials EDSM Responder not configured: API key not set. 2021-09-18T18:04:06 [Info] SpeechResponder:.ctor Initialized Speech responder 2021-09-18T18:04:06 [Info] VoiceAttackResponder:.ctor Started VoiceAttack responder 2021-09-18T18:04:06 [Info] EDDI:.ctor EDDI 4.0.1 initialised 2021-09-18T18:04:06 [Info] EDDI:Start Starting keepalive for EDDP monitor 2021-09-18T18:04:06 [Info] EDDI:Start Starting keepalive for Journal monitor 2021-09-18T18:04:06 [Info] EDDI:Start Starting keepalive for Mission monitor 2021-09-18T18:04:06 [Info] EDDI:Start Starting keepalive for Status monitor 2021-09-18T18:04:06 [Info] EDDI:Start Started EDDN responder 2021-09-18T18:04:06 [Info] EDDI:keepAlive Starting EDDP monitor (0) 2021-09-18T18:04:06 [Info] EDDI:keepAlive Starting Mission monitor (0) 2021-09-18T18:04:06 [Warning] StarMapService:SetEdsmCredentials EDSM Responder not configured: API key not set. 2021-09-18T18:04:06 [Info] EDDI:keepAlive Starting Journal monitor (0) 2021-09-18T18:04:06 [Info] EDDI:Start Started EDSM responder 2021-09-18T18:04:06 [Info] EDDI:keepAlive Starting Status monitor (0) 2021-09-18T18:04:06 [Info] EDDI:Start Started VoiceAttack responder 2021-09-18T18:04:06 [Info] EDDI:Start Started Speech responder 2021-09-18T18:04:06 [Info] JournalMonitor:ParseJournalEntry GameVersion: 3.8.0.104, Build r269978/r0. 2021-09-18T18:04:06 [Info] EDDI:eventFileHeader On live 2021-09-18T18:04:07 [Warning] StarMapService:SetEdsmCredentials EDSM Responder not configured: API key not set. 2021-09-18T18:04:07 [Info] JournalMonitor:ParseJournalEntry Active expansions... Horizons: True, Odyssey: False. 2021-09-18T18:04:07 [Warning] JournalMonitor:ParseJournalEntry Object reference not set to an instance of an object./r/nRaw event:/r/n{ "timestamp":"2021-09-18T17:23:42Z", "event":"Progress", "Combat":100, "Trade":100, "Explore":46, "Empire":100, "Federation":100, "CQC":0 }: {"ClassName":"System.NullReferenceException","Message":"Object reference not set to an instance of an object.","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at EddiJournalMonitor.JournalMonitor.ParseJournalEntry(String line, Boolean fromLogLoad)","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nParseJournalEntry\nEddiJournalMonitor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\nEddiJournalMonitor.JournalMonitor\nSystem.Collections.Generic.List1[EddiEvents.Event] ParseJournalEntry(System.String, Boolean)","HResult":-2147467261,"Source":"EddiJournalMonitor","WatsonBuckets":null} 2021-09-18T18:04:07 [Warning] JournalMonitor:ParseJournalEntry Object reference not set to an instance of an object./r/nRaw event:/r/n{ "timestamp":"2021-09-18T17:23:42Z", "event":"Rank", "Combat":8, "Trade":8, "Explore":7, "Empire":14, "Federation":14, "CQC":0 }: {"ClassName":"System.NullReferenceException","Message":"Object reference not set to an instance of an object.","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at EddiJournalMonitor.JournalMonitor.ParseJournalEntry(String line, Boolean fromLogLoad)","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nParseJournalEntry\nEddiJournalMonitor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\nEddiJournalMonitor.JournalMonitor\nSystem.Collections.Generic.List1[EddiEvents.Event] ParseJournalEntry(System.String, Boolean)","HResult":-2147467261,"Source":"EddiJournalMonitor","WatsonBuckets":null} 2021-09-18T18:04:07 [Info] VoiceAttackPlugin:VA_Init1 EDDI VoiceAttack plugin initialization complete

But then a slew of runtime binder errors like this first one shown here for ease of reverence:

2021-09-18T18:04:07 [Error] VoiceAttackPlugin:triggerVACommands Failed to trigger local VoiceAttack command ((EDDI va initialized)): {"ClassName":"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException","Message":"'VoiceAttack.VoiceAttackInitProxyClass.Command' is inaccessible due to its protection level","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at CallSite.Target(Closure , CallSite , Object )\r\n at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)\r\n at EddiVoiceAttackResponder.VoiceAttackPlugin.triggerVACommands(Event event, Object& vaProxy)","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":null,"HResult":-2146233088,"Source":"Anonymously Hosted DynamicMethods Assembly","WatsonBuckets":null}

EDDI Logs

See attached for the full log file. eddi1.log

Player journals

Did a Docking Request to trigger that event handler but it was never called in VA.

Journal.210918140536.01.log

Tkael commented 3 years ago

Does this occur consistently for you?

You seem to be running a rather old version of VoiceAttack. I suspect that the version you're running is no longer compatible with EDDI (due to some changes to VoiceAttack's API and some corresponding changes to how we invoke VoiceAttack commands). Please try updating VoiceAttack to version 1.7.4 or later?

Paleri commented 3 years ago

It does accure consistantly.

I am running on XP. 1.7.4 of VA is not supported on XP as per their web site:

From the VA Support page: $$$$$ "As of version 1.5 of VoiceAttack, Windows XP can no longer be supported. The good news is that the last-tested version of VoiceAttack under XP can still be downloaded (VoiceAttack version 1.4).

Windows XP does not come with a speech recognition engine like Windows Vista and up. The installer for the Microsoft Speech Recognition Engine 5.1 is over 30 megs, so it was decided that a separate download would be made for it. What is suggested is that you first download and run VoiceAttack. If VoiceAttack does not find a speech recognition engine, you will get a link back to this page. At that point, simply click the, 'Download Additional Components' link below and run the installer. Go back Download VoiceAttack v1.4 for XP Download Additional Components" $$$$$

However, I was running 1.6.1 on XP for years without issue; including using the EDDI callbacks. Other than the EDDI callbacks, VA still works fine; VA's qualification above not withstanding.

EDDI's VoiceAttack Responder tab says that: "EDDI will only work with versions of VoiceAttack 1.5.12.22 and higher."

I am running VA 1.6.1 and, according to that, should still be good with EDDI.

Pretty sure you are right and it is some kind of a XP/VA/EDDI/ED version compatibility issue. But I'm not super sure how to proceed from here to resolve the problem under XP. If I downgrade from 1.6 to 1.4, I know my VA programs will not run as they uses 1.6 features. I'm not positive 1.7 will run 1.6-written code but likely so as to backward compatibility.

What to try next to get it working under XP? Since 1.6 worked for years should I just try installing 1.7 and see if it works in spite of VA's stated limitation? Or maybe Download the VA "Additional Components" but stay at 1.6? Or try an older version of EDDI?

Thanks for your help. I love EDDI ED-event-handling and would love to get it working again.

Tkael commented 3 years ago

I think EDDI version 4.0.0 will likely work for the time being - that version used the older method for invoking VoiceAttack commands.

If version 1.6.1 has been working for you then I'd imagine later versions might also. Downloading VA "Additional Components" should be unnecessary if VoiceAttack and EDDI have been working on your system.

If you have the installer for version 1.6.1 then I'd suggest backing up your profile data then giving an updated version of VoiceAttack a try. If not then I'm not sure there's any guarantee that you'll be able to roll back to the same version under Windows XP without a full system restore (I think System Restore Points were first introduced in Windows 7?).

Paleri commented 3 years ago

Steps for Voice Attack EDDI callback handling restoration:

Solution Option A: Upgrade VA to latest version to see if it will run on my XP PC and handle EDDI ED events.

I. Prepare to fall back to to VA 1_6_1 in case the latest VA version will not run on my XP PC.

  1. Found VA 1_6_1 installer in downloads folder (VoiceAttackInstaller.exe) and copied the file to another folder in case the new VA installation overwrites the 1_6_1 file.
  2. Copied C:\Program Files (x86)\VoiceAttack and sub directories to another folder
  3. Copied VA profiles to another folder.
  4. Manually created a new System Restore Point.

II. Install latest version of VA

  1. : Installed VA v1.8.9 into a different directory and registered with purchase key. VA ran fine and recognized voice commands.
  2. Moved old VoiceAttack Apps EDDI folder to new install folder.
  3. Moved old VoiceAttack Sounds folder to new install folder to pick up old voice packs.
  4. Selected my old default VA profile to load at startup.
  5. Checked "Enable Plugin Support" box on VA General Settings tab.
  6. Restarted VA

Results: Got VA messages Plugin support enabled, The EDDI plugin is fully operational, and Plugin EDDI 'EDDI 4.0.1' initialized. My legacy v1.6.1 VA code seems to run without issue and it seems fully compatible with VA v1.8.9. Ran ED and in-game events were now handled properly as noted in the on-screen VA log: 11:47:53.425 ((EDDI docked)) 11:47:53.403 Plugin command : '((EDDI docked))' 11:47:19.779 Recognized : 'deploy landing gear' 11:46:16.533 ((EDDI docking requested))

Lessons learned:

  1. VA v1.6.1 does not work with EDDI Version 4.0.1 on my XP PC
  2. VA v1.8.9 runs fine on my XP PC and works well with EDDI Version: 4.0.1
  3. The VA code written under v1.6.1 ran fine on v1.8.9 and so it seems VA has maintained backward compatibility with prior versions; nice!
  4. And most important: ED is 100 times more fun and immersive running with my EDDI in-game event handlers. Thank you!