[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