簡體   English   中英

使用Functory模塊時的Unix.Error 31寫入

[英]Unix.error 31 write when using Functory module

我正在使用功能模塊,並且代碼面臨一個非常奇怪的問題。

我的代碼運行良好,並且能夠並行處理游戲中的游戲,但是當我嘗試再次進行游戲(再次啟動並行化功能)時,會引發一個非常奇怪的錯誤。

在這里您可以找到錯誤:

Fatal error: exception Unix.Unix_error(43, "write", "")
Raised by primitive operation at file "unix.ml", line 252, characters 7-34
Called from file "protocol.ml", line 45, characters 10-32
Re-raised at file "network.ml", line 536, characters 10-11
Called from file "network.ml", line 565, characters 47-80
Called from file "list.ml", line 73, characters 12-15
Called from file "network.ml", line 731, characters 4-27
Called from file "map_fold.ml", line 98, characters 4-242
Called from file "game_ia.ml", line 111, characters 10-54
Called from file "gameplay.ml", line 34, characters 12-48
Called from file "gameplay.ml", line 57, characters 22-37
Called from file "gameplay.ml", line 85, characters 5-22

因此,我決定在以下文件夾中進行搜索,以查看進行了哪些原始操作:

(unix.ml) external rename : string -> string -> unit = "unix_rename"
(network.ml) Some jid when w.state <> Disconnected -> send w (Protocol.Master.Kill jid)

因此,出於某種原因,看來我的工人自己斷開了連接。 我想知道你們中是否有人已經遇到過這個問題,該怎么做才能解決?

你可以在這里找到我的游戲。 涉及的主要文件是game_ia.ml(best_move_parallelized)和gameplay.ml(在最底部)。

預先感謝您的幫助。

您得到的錯誤是(在toploop中鍵入以下內容)¹:

# (Obj.magic 43: Unix.error);;
- : Unix.error = Unix.EPROTOTYPE

這意味着: socket的協議錯誤類型 因此,您必須檢查如何初始化套接字。

¹知道第一個E2BIG0 ,您也可以在unix.mli計算異常。 Emacs Cu 43 ↓幫助。

暫無
暫無

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

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