This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: select() read() and write() on /dev/console


Christopher Faylor <cgf-no-personal-reply-please <at> cygwin.com> writes:

> 
> On Sun, Nov 21, 2004 at 07:00:42PM +0100, Jason Curl wrote:
> >Christopher Faylor wrote:
> >>On Fri, Nov 19, 2004 at 06:46:56PM +0100, Jason Curl wrote:
> >>
> >>>My question, how do I go about investigating what the root cause is? Has 
> >>>anybody else seen similar issues and been able to work around it? I'm 
> >>>stuck and I've never seen the source code to cygwin before.
> >>
> >>
> >>If you suspect a problem with the cygwin DLL then you can build a
> >>debugging version of the cygwin DLL and debug it using gdb.
> >>
> >>Most of the console handling is in fhandler_console.cc.  The select
> >>handling is in select.cc.  Look for the string "console" there.
> >>
> >>Instructions for building the DLL are in the FAQ:
> >>
> >>http://cygwin.com/faq/faq_3.html#SEC101
> >>
> >Hello,
> >
> >Is there a way I can use debug_printf() inside C source (not C++). I've 
> >found <sys/strace.h> and <sys/ipctrace.h>.
> >
> >Googling and I don't find information about what I need to include, and 
> >probably what I need to link.
> >
> >#define TRACE
> >#include <stdio.h>
> >#include <sys/ipctrace.h>
> >
> >int main(void)
> >{
> >  debug_printf("TEST\n");
> >}
> >
> >It won't link, not finding _err_handler.
> 
> Just use regular printf or fprintf.  debug_printf is not intended for
> use outside of the cygwin DLL.
> 
> 


Hello Chris,

I'll see how I go. Printf's aren't very useful in this case as data is on the
console so rapid it's not easy to see what's going on. The problem occurs only
when there is serial input, console input and console output. Remove the serial
input or the console output and the problem goes away.

I did an 'strace' with everything. There appears some kind of race condition (my
software is not running any threads, it's using select() to completely manage
data). What I find interesting are error codes reported by Windows 995 "The I/O
operation has been aborted because of either a thread exit or an application
request." that occurs in the serial handler.

When I am running strace, the keyboard events are being missed completely (I
modified my code to quit in this case, but it doesn't when I'm running strace).
Also as a variant, I changed the behaviour of the console to have blocking reads
and it blocks without strace, but doesn't block with strace. Admittedly, just
about everything is being logged with strace.

Thanks,
Jason.


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]