2011-08-22 77 views
0

我已經開發了基於npruntime的firefox/chrome插件,並且它的ff3.6/chrome 10可以正常工作,但是當我在加載我的插件後在Firefox 4.0或更高版本中加載任何其他插件時,那麼Firefox會掛起 即,如果我的插件已被加載後打開gmail,則Firefox會停止響應,並且我已驗證它與插件容器有關。 任何人都可以建議我到哪裏去錯了嗎?任何指針將不勝感激。 預先感謝npapi插件有問題與Firefox 4.0及更高版本

這是FF6調用堆棧

[email protected]()
[email protected]()
[email protected]( ) [email protected]()
nspr4.dll!_PR_MD_WAIT_CV(_MDCVar * CV,_MDLock *鎖,無符號整型超時)
nspr4.dll!_PR_WaitCondVar(PRThread *線程,PRCondVar * CVaR的,PRLock *鎖,unsigned int timeout)
nspr4.dll!PR_WaitCondVar(PRCondVar * CVaR的,無符號整型超時)
xul.dll!Mozilla瀏覽器:: CondVar ::等待(unsigned int的區間)
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瀏覽器插件:: :: 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) ...

+0

你正在運行什麼操作系統?你有沒有試過附加一個調試器來查看它掛起的代碼在哪裏? – taxilian

+0

我正在運行Windows 7 ...和調用堆棧添加... – mohit

回答

1

我會嘗試先關閉IPC模式;你的堆棧似乎表明它在等待插件進程啓動時掛起,但我不知道爲什麼它會掛在那裏,因爲它應該有一個超時。如果關閉IPC模式有幫助,那麼這個問題可能會干擾瀏覽器與插件主機進程之間的IPC。

接下來我會嘗試添加斷點到DLL中的所有入口點。您可以通過在DllMain中放入sleep(10000)或類似的東西來連接調試器;當插件開始加載時,它應該在做任何潛在的破壞性事件之前首先點擊它,然後用調試器連接到插件主機進程,然後檢查你所做的入口點等等。足夠長的時間應該會產生一些線索關於可能發生的事情。

您也可以嘗試將其移植到類似FireBreath之類的東西,該工具已知可以正常工作,並消除了您必須製作一個像這樣的模糊錯誤的大多數機會,可能是某些瀏覽器不喜歡。

0

我爲每個瀏覽器開發了npruntime。 它在每個瀏覽器工作良好,但Firefox得到了在Windows 7

僅凍結我解決了編輯Firefox的配置「dom.ipc.plugins.enabled」假問題。 我不知道它會工作,但它值得嘗試。

相關問題