2017-07-13 35 views
1

我開發了一個基於gtk +和webkit2gtk的Rust網頁瀏覽器,有時所有的GTK +窗口都變黑了。黑窗問題

即使我們用環境變量GTK_DEBUG=interactive得到的gtk檢查器窗口也是黑色的。 即使認爲窗口是黑色的,由於我可以用鍵盤瀏覽網頁(我看到窗口標題更新,顯示新的頁面URL和加載進度),UI仍然是響應式的。

下面是每次觸發這個問題,他們發生的兩個動作:

  • 銷燬Web視圖
  • 運行應用程序時第二次,它會發送通過Unix域套接字的消息給第一過程,從而它會創建一個新的Web視圖。

我不幸沒有一個小例子來重現這個問題。如果你願意,我可以向你展示這個項目的代碼,但它很大,不平凡,並且通過gtk +使用了許多抽象層。

我知道我不會給你很多幫助,但如果你能給我一些關於如何工作以及如何調試的解釋,那將非常感激。

你能給我一些關於如何調試這個問題的提示嗎?

是否有GTK +窗口的全局OpenGL(或其他)上下文?

是否有一些調試工具可以幫助我? (設置G_MESSAGES_DEBUG=all沒有顯示任何有關。)

回答

1

隨着strace,我能夠調試此問題: 我發現了FD用於IPC通信被關閉後仍在接受調查,因此它被返回POLLNVAL。 用g_source_remove_unix_fd()刪除FD修復了這個問題。