[GRASS-dev] Win32 DBMI lockups: change to nonblocking pipes?
Glynn Clements
glynn at gclements.plus.com
Wed Jul 11 01:12:08 EDT 2007
Benjamin Ducke wrote:
> After doing some more testing (QGIS and GRASS on Linux,
> GRASS native w/o QGIS from http://qgis.org/uploadfiles/testbuilds/),
> I still think that possible pipe blocking is the hottest lead so far.
>
> There are some comments (maybe written by Radim Blazek?) in start.c
> which suggest the same:
>
> /* I have seen problems with pipes on NT 5.1 probably related
> * to buffer size (psize, originaly 512 bytes).
> * But I am not sure, some problems were fixed by bigger
> * buffer but others remain.
> * Simple test which failed on NT 5.1 worked on NT 5.2
> * But there are probably other factors.
>
> I would like to change the pipes in lib/db/dbmi_client/start.c to
> nonblocking I/O. If those hints are right, then this should fix the
> problem, I guess.
Unlikely. The XDR library uses ANSI stdio (fread/fwrite), which
(AFAICT) never return short counts. Even if you make the underlying
pipes non-blocking, fread/fwrite are going to block until they have
read/written all of the data.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list