This is the mail archive of the
cygwin-developers
mailing list for the Cygwin project.
Re: Request for help debugging screen problem
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin-developers at cygwin dot com
- Date: Fri, 5 Feb 2010 14:46:48 +0100
- Subject: Re: Request for help debugging screen problem
- References: <4B6BF601.7020003@shaddybaddah.name>
- Reply-to: cygwin-developers at cygwin dot com
On Feb 5 10:42, Shaddy Baddah wrote:
> Hi,
>
> I'm trying to debug a problem with screen, rather than publish a bug
> report. I can do that as well if someone requests it, no problem.
>
> The issue I'm facing is with a read on the Windows named pipe
> associated with a tty device. I note that in this bit of code:
>
> http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygserver/transport_pipes.cc?annotate=1.12&cvsroot=src
>
> 223: ssize_t
> 224: transport_layer_pipes::read (void *const buf, const size_t len)
> 225: {
> 226: // verbose: debug_printf ("reading from pipe %p", _hPipe);
> 227:
> 228: assert (_hPipe);
> 229: assert (_hPipe != INVALID_HANDLE_VALUE);
> 230: assert (!_is_listening_endpoint);
> 231:
> 232: DWORD count;
> 233: if (!ReadFile (_hPipe, buf, len, &count, NULL))
> 234: {
> 235: debug_printf ("error reading from pipe (%lu)", GetLastError ());
> 236: SET_ERRNO (EINVAL); // FIXME?
> 237: return -1;
> 238: }
> 239:
> 240: return count;
> 241: }
> 242:
>
> before and after the ReadFile the error code can return a different
> value. ie. a call to the following function, returns different
> values:
>
> ssize_t client_request::error_code() const;
>
> I'm curious as to how this could be. Is there some callback function
> registered via the Windows API that ReadFile calls at various points
> in its execution? Or is another thread setting this value?
>
> Any help would be greatly appreciated.
Can yopu expolain this in more detail, please? What error codes
are returned, and how do you trigger the effect?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat