This is the mail archive of the 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]

/dev/com1 definitely broken between 1.5.5-1 and 20031218

    Good morning (%$TZ) everyone,

  Right.  The attached sertest.c is a very simple program that attempts to
open the serial port, does a select () call waiting for a byte to read with
a 250ms timeout, and closes it.

  It works fine with the released version 1.5.5-1 of the .dll, but it locks
up when run with the 20040103 snapshot of the .dll.  In fact, I've just
quickly retested it with the cygwin1-20031218.dll and that also locks up.
So the bug was introduced between Sep19 and Dec18 last year.

  Looking through the changelog for the relevant period, there are some
select-related changes by cgf and some serial-related changes from Brian
Ford.  I would be trying to debug my way through the source at the moment,
but when I checked out the latest from the CVS, I ended up with a completely
non-functioning .dll (100% fails on 'make check', any attempt to launch a
cygwin process crashes on startup).... So I'm kinda stuck there.  I'll maybe
try again after the weekend, but right now I got to get on with some work,
so I hope this is a useful bug report.



  Details attached: (sorry for the .bz2 format, but two sets of cygcheck
output already take me to 60kb, and the list mailer refuses anything over

 * release-dll.log and snapshot-dll.log:  Traces from sysinternals' PORTMON
utility.  These show that the behaviour of the two dll versions is identical
through setup and initialisation of the com port up to the point when an
IOCTL_SERIAL_WAIT_ON_MASK is sent; for some reason, the call succeeds
quickly with the release dll, but with the snapshot version, the call blocks
seemingly indefinitely, and remains so until you manually kill the
sertest.exe process, at which point it gets cancelled.

 * release-dll.txt and snapshot-dll.txt:  Output generated by running the
same build of the testcase under each .dll, and cygcheck -s output to
confirm the dll versions used in each testrun.

 * strace-release-dll.out and strace-snapshot-dll.out:  strace output from
each of the test runs.  I notice two things about these:

 1) the last output from the snapshot version of the dll says
"select_stuff::cleanup: calling cleanup routines", which suggests that it's
one of those that has hung.
 2) the release version of the dll appears to be repeatedly peeking the
serial port, there are *loads* of lines that say "[select_serial] sertest
1896 peek_serial: fh->overlapped_armed 1", whereas with the snapshot version
of the dll there's only one line saying peek_serial, and it has the value 0
for overlapped_armed.


Attachment: sertest.c
Description: Text document

Attachment: makefile
Description: Binary data

Attachment: release-dll.txt.bz2
Description: Binary data

Attachment: snapshot-dll.txt.bz2
Description: Binary data

Attachment: strace-snapshot-dll.out.bz2
Description: Binary data

Attachment: strace-release-dll.out.bz2
Description: Binary data

Attachment: release-dll.LOG
Description: Binary data

Attachment: snapshot-dll.LOG
Description: Binary data

Unsubscribe info:
Problem reports:

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