[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Cezary Kaliszyk <ck189400@z...> |
| Subject: | [Caml-list] Ocaml 3.06 bug |
Concerning Ocaml version 3.06 on i686/Linux There is a bug in the Unix library, which makes my program exit with no warning message. It happens when I call Unix.write two times on a descriptor closed by the other side. When I connect to the server and close the connection during 5 seconds (ie using telnet) the server somehow exits the 'while true do'. The first write is ok, the second exits the program. Putting a "try .. with _ -> ()" inside the loop doesn't correct it. It works the same way when compiled with ocamlc and ocamlopt. The maximally simplifided server code producing the error: open Unix;; let addr = ADDR_INET (inet_addr_any, 1717);; let sock = socket PF_INET SOCK_STREAM 0;; bind sock addr; listen sock 10; while true do let (desc,caller) = accept sock in sleep 5; let _ = write desc "asd" 0 3 in let _ = write desc "qwe" 0 3 in () done;; --