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: 1.7.15-1: pthread_cancel and pthread_kill not working as expected


On 2012-05-24 13:19, Corinna Vinschen wrote:
> You know that Cygwin is just a user space DLL, right?  There's no state
> information kept in the OS beyond the lifetime of any process using the
> Cygwin DLL.  In case of pthreads, there's no state at all shared with
> other processes.

Yes, thatâs exactly why Iâm confused about it.

> But even if so, if you stop *all* Cygwin processes and then start
> another one, all info from the old processes is gone and you should be
> back to normal.  If that's not the case, I would suspect a case of BLODA.

Yes, I tried that and it changed nothing. I took the chance to uninstall
some unused software and stopped all dodgy-sounding Windows services,
including Windows Defender, so that the only thing left from the BLODA
was the nVidia driver: No change.

Rebasing also didnât help.

>> If the test code includes semaphore.h but doesnât even use any of its
>> functions it fails right away, just like before. A reboot doesnât help.
> Is that with the same "read" testcases you sent two days ago?  If so, I
> can't reproduce it.  I ran both tests in a loop, with and without an
> additional semaphore.h, but to no avail.  They both just work.

Yes, same tests (the ones blocking on read()), but the semaphore.h was
probably unrelated after all.

I also ran the tests continuously and discovered the following:

Running the same test several times manually from a cmd shell works a
few times, then fails. Running the async and deferred tests alternating
from cmd works, even after they failed previously.

Running one of the tests manually from bash fails most of the time.

$ while :; do ./testcase_cancel_asynchronous; done
First test run usually fails, further runs succeed. Same for the
deferred testcase.

$ sleep 1; while :; do ./testcase_cancel_asynchronous; done
All test runs succeed, including the first one. Same for the deferred
testcase.

I am now convinced that my system is toying with me.

As I actually donât need to read from stdin with several threads and
only discovered this problem while you fixed async cancel (thanks for
that), Iâm inclined to ignore this âproblemâ and stop wasting your
time, unless you want me to try something else to debug this.

> This is under W7 on a dual-core machine.

Same here.

Otto

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


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