簡體   English   中英

npapi插件在Firefox 4.0及更高版本中存在問題

[英]npapi plugin having issues with firefox 4.0 and later

我已經為firefox / chrome開發了基於npruntime的插件,並且可以與ff3.6 / chrome 10一起正常工作,但是當我在加載插件后在firefox 4.0或更高版本中加載任何其他插件時,firefox會掛起,即如果我在插件后打開gmail已經加載,然后Firefox停止響應,我已經證實它與插件容器有關。 任何人都可以建議我到底要去哪里了嗎? 任何指針,將不勝感激。 提前致謝

這是ff6的調用堆棧

ntdll.dll!_ZwWaitForSingleObject@12()
ntdll.dll!_ZwWaitForSingleObject@12()
kernel32.dll!_WaitForSingleObjectExImplementation@12()kernel32.dll!_WaitForSingleObject@8()
nspr4.dll!_PR_MD_WAIT_CV(_MDCVar * cv,_MDLock *鎖定,未簽名的int超時)
nspr4.dll!_PR_WaitCondVar(PRThread *線程,PRCondVar * cvar,PRLock *鎖定,未簽名的int超時)
nspr4.dll!PR_WaitCondVar(PRCondVar * cvar,無符號整數超時)
xul.dll!mozilla :: CondVar :: Wait(unsigned int interval)
xul.dll!mozilla :: ipc :: GeckoChildProcessHost :: SyncLaunch(std :: vector,std :: allocator>,std :: allocator,std :: allocator>>> aExtraOpts,int aTimeoutMs,base :: ProcessArchitecture arch)xul .dll!mozilla :: plugins :: PluginProcessParent :: Launch(int timeoutMs)
xul.dll!mozilla :: plugins :: PluginModuleParent :: LoadModule(const char * aFilePath)
xul.dll!GetNewPluginLibrary(nsPluginTag * aPluginTag)xul.dll!nsNPAPIPlugin :: CreatePlugin(nsPluginTag * aPluginTag,nsNPAPIPlugin * * aResult)
xul.dll!CreateNPAPIPlugin(nsPluginTag * aPluginTag,nsNPAPIPlugin * * aOutNPAPIPlugin)
xul.dll!nsPluginHost :: EnsurePluginLoaded(nsPluginTag *插件)
xul.dll!nsPluginHost :: GetPlugin(const char * aMimeType,nsNPAPIPlugin * * aPlugin)
xul.dll!nsPluginHost :: TrySetUpPluginInstance(const char * aMimeType,nsIURI * aURL,nsIPluginInstanceOwner * aOwner)xul.dll!nsPluginHost :: SetUpPluginInstance(const char * aMimeType,nsIURI * aURL,nsIPluginInstanceOwner * aOwner)
xul.dll!nsPluginHost :: InstantiateEmbeddedPlugin(const char * aMimeType,nsIURI * aURL,nsIPluginInstanceOwner * aOwner,int aAllowOpeningStreams)...

我會嘗試先關閉IPC模式; 您的堆棧似乎表明它在等待插件進程啟動時正在掛起,但是我不知道為什么它會掛在那里,因為它應該超時。 如果關閉IPC模式有幫助,則問題可能出在瀏覽器和插件宿主進程之間,這會干擾IPC。

接下來,我嘗試將斷點添加到DLL中的所有入口點。 您可以通過將sleep(10000)或類似的東西放在DllMain中來連接調試器。 當插件開始加載時,應該先執行該操作,然后再進行潛在的破壞,然后您可以使用調試器連接到插件宿主進程,然后檢查以查看進入該插件的入口點,依此類推。逐步進行足夠長的時間最終會產生一些線索關於可能發生的事情。

您還可以嘗試將其移植到FireBreath之類的工具 ,該工具可以正常工作,並且消除了大多數情況下可能會犯一些晦澀的錯誤的可能性,例如某些瀏覽器可能不喜歡的錯誤。

我為每種瀏覽器開發了npruntime。 它在每種瀏覽器中都可以正常工作,但是firefox僅在Windows 7中凍結。

我解決了將Firefox配置“ dom.ipc.plugins.enabled”編輯為false的問題。 我不知道它會起作用,但是值得嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM