Thank you for the report, this is a bug. Here are the relevant lines:
let r = Unix.read fd s 0 len in
(* TODO: recursive read ? *)
assert (len = r) ;
You encountered a partial read, and that is not supported in the code.
Our bad, this module has not been tested enough. (Blame the
predominance of ALSA, or the lack of BSD users.)
On Fri, May 7, 2010 at 1:10 PM, Andrew <andrew@...> wrote:
> 2010/05/07 11:51:12 [root:3] Broadcast starts up!
> 2010/05/07 11:51:22 [threads:1] Thread "root" aborts with exception File "io/oss_io.ml", line 102, characters 6-12: Assertion failed!
> Thread 4 killed on uncaught exception Assert_failure("io/oss_io.ml", 102, 6)
Is it you who killed liquidsoap explicitly, thus triggering the
problem, or does your liquidsoap instance crash immediately after the
"Broadcast start up"?
I'm assuming you're having a freeze here. It is not unusual that
errors in some places put liquidsoap in a bad state which prevents a
proper shutdown, creating a frozen up situation. (This is because we
try to be strict about shutdown, cleaning everything rather than
letting abnormal situations left unnoticed.) However, in this
particular instance, I cannot see why that error would result in such
PS: Regarding the fixing of OSS I/O, another problem is that the
operators have no cleanup procedure: the file descriptor is never
closed. This file really needs to be polished!