Access Violation Unity DLL Plugin Pocketsphinx

0

Problem: Unity crashes when loading a native plugin.

Goal: Use Pocketsphinx in Unity - Windows. The libpocketsphinxwrap.dll is the interface for pocketsphinx.dll and sphinxbase.dll.

So far:

I compiled both Sphinxbase and Pocketsphinx projects flawlessly. Then I created a project called libpocketsphinxwrap in Visual Studio which on LINKING, looks for sphinxbase.lib, pocketsphinx.lib. No problems at all, the DLL is built.

In Unity, I add all three plugins, libpocketsphinxwrap.dll, sphinxbase.dll and pocketsphinx.dll. Set them for the right platform (I built all in release/x64 and Windows 8.1 SDK).

During runtime, Unity crashes due to "Access Violation" on dll sphinxbase. Below are the Editor.log and crash.log files:

========== OUTPUTING STACK TRACE ==================

0x00000000378FF725 (pocketsphinx) [c:\users\fgera\development\tools\cmusphinx\pocketsphinx\src\libpocketsphinx\pocketsphinx.c:936] ps_start_utt 
0x00007FFEEB981B09 (libpocketsphinxwrap) [c:\users\fgera\development\tools\cmusphinx\libpocketsphinxwrap\src\pocketsphinx.c:1360] CSharp_Pocketsphinx_Decoder_StartUtt 
0x000000003801A594 (Mono JIT Code) (wrapper managed-to-native) Pocketsphinx.PocketSphinxPINVOKE:Decoder_StartUtt (System.Runtime.InteropServices.HandleRef)
0x000000003801A43D (Mono JIT Code) [C:\Users\fgera\Development\Git\Computer-Graphics\Motional.AI\Assets\Libraries\Pocketsphinx\Wrappers\Decoder.cs:99] Pocketsphinx.Decoder:StartUtt () 
0x0000000038011E75 (Mono JIT Code) [C:\Users\fgera\Development\Git\Computer-Graphics\Motional.AI\Assets\Scripts\NPC\NPC Modules\Audio_Listener_Module\NPCAudioListener.cs:226] NPCAudioListener:InitLocalTranscriber () 
0x000000003800BC4A (Mono JIT Code) [C:\Users\fgera\Development\Git\Computer-Graphics\Motional.AI\Assets\Scripts\NPC\NPC Modules\Audio_Listener_Module\NPCAudioListener.cs:132] NPCAudioListener:InitializeModule () 
0x0000000038001C67 (Mono JIT Code) [C:\Users\fgera\Development\Git\Computer-Graphics\Motional.AI\Assets\Scripts\NPC\NPC Agent\NPCController.cs:192] NPC.NPCController:LoadNPCModules () 
0x000000003800099C (Mono JIT Code) [C:\Users\fgera\Development\Git\Computer-Graphics\Motional.AI\Assets\Scripts\NPC\NPC Agent\NPCController.cs:280] NPC.NPCController:Awake () 
0x000000000B5D7392 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
0x00007FFE91635B63 (mono) [c:\buildslave\mono\build\mono\mini\mini.c:4937] mono_jit_runtime_invoke 
0x00007FFE9158872D (mono) [c:\buildslave\mono\build\mono\metadata\object.c:2623] mono_runtime_invoke 
0x000000014140A365 (Unity) scripting_method_invoke
0x0000000141402311 (Unity) ScriptingInvocation::Invoke
0x000000014140486E (Unity) ScriptingInvocation::InvokeChecked
0x0000000141159894 (Unity) MonoBehaviour::CallMethodInactive
0x0000000141159DCD (Unity) MonoBehaviour::CallAwake
0x0000000141172C6F (Unity) MonoBehaviour::AddToManager
0x000000014115ACA2 (Unity) MonoBehaviour::AwakeFromLoad
0x0000000141427491 (Unity) AwakeFromLoadQueue::InvokePersistentManagerAwake
0x00000001414301B9 (Unity) AwakeFromLoadQueue::PersistentManagerAwakeFromLoad
0x00000001413C8117 (Unity) LoadSceneOperation::CompleteAwakeSequence
0x00000001413C85FA (Unity) LoadSceneOperation::CompletePreloadManagerLoadSceneEditor
0x00000001413CCE03 (Unity) LoadSceneOperation::IntegrateMainThread
0x00000001413CBCA8 (Unity) PreloadManager::UpdatePreloadingSingleStep
0x00000001413CBE48 (Unity) PreloadManager::WaitForAllAsyncOperationsToComplete
0x00000001406E72C5 (Unity) EditorSceneManager::RestoreSceneBackups
0x000000014012C165 (Unity) Application::EnterPlayMode
0x000000014012D307 (Unity) Application::SetIsPlaying
0x0000000140130B72 (Unity) Application::TickTimer
0x0000000141A87E5D (Unity) MainMessageLoop
0x0000000141A89827 (Unity) WinMain
0x0000000141CEC8BC (Unity) __tmainCRTStartup
0x00007FFEF0772774 (KERNEL32) BaseThreadInitThunk
0x00007FFEF3270D51 (ntdll) RtlUserThreadStart

========== END OF STACKTRACE ===========

error.log

Unity Editor [version: Unity 2017.1.0f3_472613c02cf7]

pocketsphinx.dll caused an Access Violation (0xc0000005)
  in module pocketsphinx.dll at 0033:378ff725.

Error occurred at 2017-08-07_153424.
C:\Program Files\Unity\Editor\Unity.exe, run by fgera.
46% memory in use.
16276 MB physical memory [8663 MB free].
19220 MB paging file [9598 MB free].
134217728 MB user address space [134214536 MB free].
Read from location 00000010 caused an access violation.

Context:
RDI:    0x3c4c4c68  RSI: 0x0b5d7290  RAX:   0x66bbca20
RBX:    0x3d1d58e0  RCX: 0x00000000  RDX:   0x7bda7348
RIP:    0x378ff725  RBP: 0x005fd500  SegCs: 0x00000033
EFlags: 0x00010202  RSP: 0x005fd370  SegSs: 0x0000002b
R8:    0x00000000  R9: 0x00000000  R10:   0x3d1c5650
R11:    0xeb981af0  R12: 0x005fdca8  R13:   0x20e367f8
R14:    0x005fdd20  R15: 0x00000000

Bytes at CS:EIP:
48 8b 41 10 48 8b f9 0f b6 90 b8 00 00 00 fe ca 


Module 1
C:\Program Files\Unity\Editor\OpenRL_pthread.dll
Image Base: 0x80000000  Image Size: 0x0000f000
File Size:  42496       File Time:  2017-07-07_082120

Module 2
C:\Program Files\Unity\Editor\FreeImage.dll
Image Base: 0x80000000  Image Size: 0x005e0000
File Size:  6125568     File Time:  2017-07-07_082140


Module 3
C:\Users\fgera\Development\Git\Computer- Graphics\Motional.AI\Assets\Libraries\Pocketsphinx\x86_64\sphinxbase.dll
Image Base: 0x80000000  Image Size: 0x0004c000
File Size:  284160      File Time:  2017-08-07_151352

Module 4
C:\Users\fgera\Development\Git\Computer-Graphics\Motional.AI\Assets\Libraries\Pocketsphinx\x86_64\pocketsphinx.dll
Image Base: 0x80000000  Image Size: 0x00041000
File Size:  251904      File Time:  2017-08-07_151540


Module 5
C:\Windows\SYSTEM32\xinput1_3.dll
Image Base: 0x00400000  Image Size: 0x0001e000
File Size:  107368      File Time:  2007-04-04_185422

Module 6
C:\Windows\SYSTEM32\MSVCP100.dll
Image Base: 0x63a40000  Image Size: 0x00098000
File Size:  608080      File Time:  2011-02-20_015156

Module 7
C:\Windows\SYSTEM32\MSVCR100.dll
Image Base: 0x63bc0000  Image Size: 0x000d2000
File Size:  829264      File Time:  2011-02-19_035232

== [end of error.log] ==

Example of a signature definition for the dll

 [global::System.Runtime.InteropServices.DllImport("libpocketsphinxwrap", EntryPoint="CSharp_Pocketsphinx_FrontEnd_ProcessUtt")]
 public static extern int FrontEnd_ProcessUtt(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, uint jarg3, global::System.Runtime.InteropServices.HandleRef jarg4);
unity3d
dll
pocketsphinx
asked on Stack Overflow Aug 7, 2017 by Fer

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0