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
協助診斷缺少的通訊協定。
詳情請參閱:
- 如要進一步瞭解元件資訊清單,請參閱建構元件一文。
- Fidlcat:監控 fidl 呼叫並進行偵錯,進一步瞭解
fidlcat
。 - 元件領域進一步瞭解運作範圍。
無法存取要求的檔案
當您無法開啟檔案時,系統會擲回 zx_err_peer_closed
錯誤。發生這種情況的可能原因如下:
- 你嘗試開啟的檔案不存在
- 您嘗試開啟的檔案要求過多權限。
如果是這種情況,請確認您要求的是現有檔案,或者檔案和目錄是否擁有適當的權限。進一步瞭解目錄權限及其指定方式。
對等點當機,程序已終止
如果對等點當機,系統會處理當機,並終止產生錯誤的程序和所有相關聯的物件,導致發生 zx_err_peer_closed
錯誤。
您可以查看記錄以確認對等端是否當機。如果發生這種情況,您可以使用 Just in Time Debugger 對對等點進行偵錯,找出當機來源,然後再次執行作業。
以元件作者的形式為錯誤新增章節
身為元件作者,請務必讓使用者在看到 zx_err_peer_closed
錯誤時,看到其他有意義的錯誤訊息。為此,您的程式碼應使用 binding::Close(zx_status_t epitaph_value) 繫結來設定劇集。