疑難排解 zx_err_peer_closed

zx_err_peer_closed 錯誤表示嘗試從對等互連的 Zircon 物件讀取或寫入失敗。這通常意味著對等端的遠端端會關閉。這可能發生於許多不同類型的 Zircon 物件,包括:

  • 版本
  • 通訊端
  • FIFO

當系統發出向對等互連物件 (例如 zx_object_signal_peer) 發出的信號時,也可能會發生這個錯誤。

本文件可協助您排解以下造成 zx_err_peer_closed 錯誤的原因。

錯誤原因

以下是發生 zx_err_peer_closed 錯誤的可能原因。

不相容的 FIDL 通訊協定

當用戶端和伺服器之間使用不相容的 FIDL 通訊協定,而伺服器關閉連線時,系統會擲回 zx_err_peer_closed 錯誤。

如要解決這個問題,請確認您的用戶端和伺服器使用相同的 FIDL 通訊協定。如要進一步瞭解 FIDL 通訊協定,請參閱 FIDL 語言規格

元件資訊清單中未定義要求的通訊協定

與不相容的 FIDL 通訊協定類似,如果元件資訊清單中未定義要求的通訊協定,您會收到 zx_err_peer_closed 錯誤。

請確認您的資訊清單檔案包含要求的通訊協定。您可以使用 fidlcat 協助診斷缺少的通訊協定。

詳情請參閱:

無法存取要求的檔案

當您無法開啟檔案時,系統會擲回 zx_err_peer_closed 錯誤。發生這種情況的可能原因如下:

  • 你嘗試開啟的檔案不存在
  • 您嘗試開啟的檔案要求過多權限。

如果是這種情況,請確認您要求的是現有檔案,或者檔案和目錄是否擁有適當的權限。進一步瞭解目錄權限及其指定方式

對等點當機,程序已終止

如果對等點當機,系統會處理當機,並終止產生錯誤的程序和所有相關聯的物件,導致發生 zx_err_peer_closed 錯誤。

您可以查看記錄以確認對等端是否當機。如果發生這種情況,您可以使用 Just in Time Debugger 對對等點進行偵錯,找出當機來源,然後再次執行作業。

以元件作者的形式為錯誤新增章節

身為元件作者,請務必讓使用者在看到 zx_err_peer_closed 錯誤時,看到其他有意義的錯誤訊息。為此,您的程式碼應使用 binding::Close(zx_status_t epitaph_value) 繫結來設定劇集。