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: bug#14569: 24.3.50; bootstrap fails on Cygwin


On Sun, Jun 16, 2013 at 09:11:21AM -0400, Ken Brown wrote:
>[Adding the bug address back to the CC so that this gets archived.]
>
>On 6/15/2013 9:54 AM, Angelo Graziosi wrote:
>> Christopher Faylor wrote
>>>> On 06/14/2013 11:03 AM, Christopher Faylor wrote:
>>>>> You pointed to an archived mail messages which implies that was fixed
>>>>> more than a year ago.  What makes you think it is still a problem?
>>>>
>>>> The message I pointed to
>>>> <http://cygwin.com/ml/cygwin/2012-05/msg00472.html> says this:
>>>>
>>>>> Testcase signal/kill: Signals may or may not reach the correct thread
>>>>> with 1.7.12-1 and newer.
>>>>
>>>> Confirmed.  I think the reason is that we only have a single event to
>>>> signal that a POSIX signal arrived instead of a per-thread event, but
>>>> I'm not sure.  This is cgf's domain so I leave it at that for now.
>>>>
>>>> I interpreted this to mean "the existence of the bug is confirmed,
>>>> here's why the bug occurs, and I'll let cgf deal with it".  I didn't
>>>> see any followup message where cgf (is that you?) dealt with it.  My
>>>> apologies if I misinterpreted the email.
>>>
>>> Oops.  I didn't read Corinna's message as thoroughly as I should have.
>>> Sorry.
>>>
>>> That particular issue was supposed to have been fixed in Cygwin 1.7.17,
>>> released in October 2012.
>>
>> Out of curiosity, I tried the test cases I found in that thread, more
>> precisely here:
>>
>>    http://cygwin.com/ml/cygwin/2012-05/msg00434.html
>>
>>
>> and the results are:
>>
>> $ gcc otto_test1.c -o otto_test1
>> $ ./otto_test1
>> Testing deferred pthread_cancel()
>>
>> Thread 0 starting (0x200102c0)
>> Thread 1 starting (0x20010360)
>> Thread 2 starting (0x20010400)
>>
>> Cancelling thread 2 (0x20010400)
>> Thread 2 exiting (0x20010400)
>> Cancelling thread 1 (0x20010360)
>> Thread 1 exiting (0x20010360)
>> Cancelling thread 0 (0x200102c0)
>> Thread 0 exiting (0x200102c0)
>>
>> Thread 0 is gone (0x200102c0)
>> Thread 1 is gone (0x20010360)
>> Thread 2 is gone (0x20010400)
>>
>> $ gcc otto_test2.c -o otto_test2
>> $ ./otto_test2
>> Testing asynchronous pthread_cancel()
>>
>> Thread 0 starting (0x200102c0)
>> Changing canceltype from 0 to 1
>> Thread 1 starting (0x20010360)
>> Changing canceltype from 0 to 1
>> Thread 2 starting (0x20010400)
>> Changing canceltype from 0 to 1
>>
>> Cancelling thread 2 (0x20010400)
>> Thread 2 exiting (0x20010400)
>> Cancelling thread 1 (0x20010360)
>> Thread 1 exiting (0x20010360)
>> Cancelling thread 0 (0x200102c0)
>> Thread 0 exiting (0x200102c0)
>>
>> Thread 0 is gone (0x200102c0)
>> Thread 1 is gone (0x20010360)
>> Thread 2 is gone (0x20010400)
>>
>> $ gcc otto_test3.c -o otto_test3
>> $ ./otto_test3
>> Testing pthread_kill()
>>
>> Thread 0 starting (0x200102c0)
>> Thread 1 starting (0x20010360)
>> Thread 2 starting (0x20010400)
>>
>> Sending SIGUSR1 to thread 2 (0x20010400)
>> Thread 2 executes signal handler (0x20010400)
>> Thread 2 encountered an error: Interrupted system call (0x20010400)
>> Sending SIGUSR1 to thread 1 (0x20010360)
>> Thread 1 executes signal handler (0x20010360)
>> Thread 1 encountered an error: Interrupted system call (0x20010360)
>> Sending SIGUSR1 to thread 0 (0x200102c0)
>> Thread 0 executes signal handler (0x200102c0)
>> Thread 0 encountered an error: Interrupted system call (0x200102c0)
>>
>> Are the errors in the last test case to be expected under the 20130612
>> snapshot (CYGWIN_NT-5.1, 1.7.21s 20130612 21:06:59, i686 Cygwin)?
>
>I can replicate this on my system, consistently.  There's clearly a 
>problem, but it's not the same as in the original Cygwin bug report.  In 
>the present case, the signal is received by the right thread, but 
>something goes wrong afterwards.

Try it on Linux.  I don't see any difference.  "An error" in this case
seems to be the script working as designed.

% man sem_wait

    SEM_WAIT(3)   Linux Programmer's Manual      SEM_WAIT(3)



    NAME
	   sem_wait, sem_timedwait, sem_trywait - lock a semaphore

    ...

    ERRORS
	   EINTR  The call was interrupted by a signal handler; see signal(7).

    ...

cgf

--
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]