Mail Archives: cygwin/2004/01/21/14:09:05
This is just to prove that I'm not a total idiot :). I'll let this issue
die now.
On Wed, 21 Jan 2004, Christopher Faylor wrote:
> On Wed, Jan 21, 2004 at 12:27:52PM -0600, Brian Ford wrote:
> >On Wed, 21 Jan 2004, Christopher Faylor wrote:
> >> Ok. So, I took ten minutes and debugged the problem myself and I'll
> >> check in a fix.
> >>
> >Thank you.
> >
> >That is why I asked. You know your way around, so it takes you *much*
> >less time.
> >
> This was only a little knowing my way around. It was really pretty
> basic debugging.
>
> The code was hanging in read. So, I set a breakpoint in readv, which,
> on code inspection, is what read calls. Single stepping along, I came
> to the function that was hanging. Tracing that along I came to the
> Windows API function that was hanging.
>
I got here fast by attaching with gdb and backtracing. Pretty simple.
> Realizing that this function obviously wasn't supposed to be hanging, I
> theorized that the com port wasn't being opened properly.
>
Not knowing the Windows API at all, that was not obvious to me. After
all, the call was named WaitCommEvent.
I did gather that the port wasn't being opened properly, though. I
assumed that the nonblocking flag had gotten lost somewhere, and we
weren't even supposed to be here.
> So, I set a breakpoint on fhandler_serial::open and notice nothing
> special there. Then I noticed that fhandler_serial::open calls
> fhandler_base::open.
>
Saw that. At this point, I started comparing strace output from 1.5.5
with 1.5.7. Then, I got lost in some minor parameter differences to the
open and CreateFile calls. There are some that I still don't understand.
Strace printed the mode argument as 6 in 1.5.5 and 1 in 1.5.7. It
is supposed to be 0, and was via gdb, in both cases. I'll see if I can
figure out why.
> I noticed that fhandler_base::open has special serial considerations.
>
I noticed this too, but failed to make the next leap (although I did
briefly consider it). I was still puzzled by the above.
> Stepping over those, I saw they weren't being exercised. So I fixed
> that using the same technique you used here:
>
> 2003-11-12 Brian Ford <ford AT vss DOT fsi DOT com>
>
> * dtable.cc (build_fh_pc): Use DEV_SERIAL_MAJOR to catch all serial
> ports.
>
In a way, that was just my dumb luck :^D. I do appreciate the
explanation, though. And, I wouldn't have been able to extrapolate this
fix to all applicable calls and devices that quickly.
Anyway, thanks again.
--
Brian Ford
Senior Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
Phone: 314-551-8460
Fax: 314-551-8444
--
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/
- Raw text -