You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 150 Reporter: administrator Status: closed Resolution: not a bug Priority: normal Severity: minor Category: ~DO NOT USE (was: OCaml general)
Bug description
Full_Name: Georges Brun-Cottan
Version: 2.99 and 3.00
OS: SunOS 5.6
Submission from: los0150.lss.emc.com (168.159.28.150)
Problems:
On Solaris, writing on a raw device beyond its capacity hangs the process.
Recreation:
Choose a unused raw device. Issue write above its capacity.
Process will hang.
Internal Reason:
Writing on a raw device beyond its capacity returns 0 (with no error) on
Solaris.
Caml wraps the Unix write in a loop that terminate either on error or when
all
requested bytes have been written (write.c:unix_write).
The easiest fix would be to suppress the loop, although it might possibly break
some existing code relying on the "atomicity" of the write (Is such a code
exist?
this is not provided by Unix...).
The text was updated successfully, but these errors were encountered:
Problems:
On Solaris, writing on a raw device beyond its capacity hangs the process.
Internal Reason:
Writing on a raw device beyond its capacity returns 0 (with no error) on
Solaris.
This is unfortunate, because it doesn't conform with the Single Unix
Specification (Unix98): write() should either return a number > 0
if some bytes were written, or the ENOSPC error otherwise. This said,
raw disk partitions aren't explicitly covered by the spec, so...
The easiest fix would be to suppress the loop, although it might
possibly break some existing code relying on the "atomicity" of the
write (Is such a code exist? this is not provided by Unix...).
The main problem is that Unix.write is declared as returning "unit"
rather than "int", so the application wouldn't be informed of a short
write. The reason for this and for the loop was to simplify the
application, which doesn't have to check for short writes. On the
other hand, it's questionable, since when the application
gets an ENOSPC error, it doesn't know whether some bytes have been
written or not.
Thanks for the bug report. I don't promise to fix it immediately, but
I'll keep it in mind.
Original bug ID: 150
Reporter: administrator
Status: closed
Resolution: not a bug
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)
Bug description
Full_Name: Georges Brun-Cottan
Version: 2.99 and 3.00
OS: SunOS 5.6
Submission from: los0150.lss.emc.com (168.159.28.150)
Problems:
On Solaris, writing on a raw device beyond its capacity hangs the process.
Recreation:
Choose a unused raw device. Issue write above its capacity.
Process will hang.
Internal Reason:
Solaris.
all
requested bytes have been written (write.c:unix_write).
The easiest fix would be to suppress the loop, although it might possibly break
some existing code relying on the "atomicity" of the write (Is such a code
exist?
this is not provided by Unix...).
The text was updated successfully, but these errors were encountered: