public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* 1.7.14-2: pthread_cancel and pthread_kill not working as expected
@ 2012-05-09 17:50 Otto Meta
  2012-05-18 10:23 ` 1.7.15-1: " Otto Meta
  0 siblings, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-09 17:50 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 5359 bytes --]

Greetings everyone,

while porting a project from Linux to Cygwin I noticed that pthread_cancel
was having trouble cancelling threads blocked on semaphores and reads
from stdin.

Another user had a similar problem a while ago:
http://sourceware.org/ml/cygwin/2011-01/msg00374.html

According to the follow-up this was fixed for network sockets, but
Windows seems to tread networks socket different from everything else
and the problem might not apply in my case.

The user also mentioned trying pthread_kill to "wake" blocked threads
so I tried that as well, but that resulted in completely different
threads in my program waking up.

My question is now whether I'm using pthread_cancel and pthread_kill
incorrectly or if there's some functionality missing in the certainly
not trivial Cygwin implementation of those functions.

A program to demonstrate the problems is attached. It contains six
different tests that behave slightly different depending on which
function the "simplethread" function blocks on.

You can find the expected and actual results that I got for the six
tests at the bottom of this mail. The expected results correspond to
what the readily available man-pages for pthread_cancel and pthread_kill
state and I verified the tests on a Linux system.

tl;dr version of the results:
- Using pthread_cancel on a blocked thread with deferred cancel blocks
  the calling thread.
- Threads blocked on semaphores, reads from stdin or pause() aren't
  cancelled.
- Signals seem to wake the wrong threads in some cases.

I have no explanation for this, so any ideas and suggestions are welcome.

Cheers,
Otto


Test 1:
  Leave threads at deferred cancel and cancel each thread.
Expected result:
  All threads are cancelled.
Actual result:
  Blocking on semapthore: Main thread hangs on first call to pthread_cancel().
  Blocking on pause(): Same as semaphore.
  Blocking on read(): Not deterministic: Main thread hangs on random call
    to pthread_cancel().

Test 2:
  Set cancel type to asynchronous and cancel each thread.
Expected result:
  All threads are cancelled.
Actual result:
  Independent of what the threads are blocked on, nothing is cancelled.

Test 3:
  Send SIGUSR1 once to each thread.
Expected result:
  Each thread executes the signal handler once.
Actual result:
  Blocking on semaphore:
    Poking thread 2 (0x80020410)
    Thread 0 encountered an error: Interrupted system call (0x80010298)
    Poking thread 1 (0x80020370)
    Thread 1 executes signal handler (0x80020370)
    Thread 1 encountered an error: Interrupted system call (0x80020370)
    Poking thread 0 (0x80010298)
    Thread 2 executes signal handler (0x80020410)
    Thread 2 encountered an error: Interrupted system call (0x80020410)
    Woken threads don't correspond to signalled threads, not all of them
    execute the signal handler.
  Blocking on pause(): Same as semaphore.
  Blocking on read(): One thread executes the signal handler, the other
    two don't. Thread chosen seemingly at random. This could be a
    side-effect of all threads reading from stdin, but I still seems
    broken.

Test 4:
  Send SIGUSR1 to one thread repeatedly (doesn't exit by design).
Expected result:
  The target thread executes the signal handler each time.
Actual result:
  Blocking on semaphore: Independent of the targeted thread, thread 0
    wakes up once and executes the signal handler if thread 0 was
    signalled. No thread cares about further signals.
  Blocking on pause(): Same as semaphore.
  Blocking on read(): Not deterministic: Targeted thread either executes
    the signal handler every time or not at all.

Test 5:
  Cancel each thread asynchronously and poke them with SIGUSR1 afterwards.
Expected result:
  If a targeted thread isn't cancelled by pthread_cancel(), the signal
  should wake it up so that the cancel event can be handled.
Actual result:
  Blocking on semaphore:
    Killing thread 2 (0x80020410)
    Poking thread 2 (0x80020410)
    Thread 0 encountered an error: Interrupted system call (0x80010298)
    Killing thread 1 (0x80020370)
    Poking thread 1 (0x80020370)
    Thread 2 exiting (0x80020410)
    Killing thread 0 (0x80010298)
    Poking thread 0 (0x80010298)
    Thread 1 exiting (0x80020370)
    Responding threads don't correspond to signalled threads, wrong
    threads exit if they have been cancelled already.
  Blocking on pause(): Same as semaphore.
  Blocking on read(): Not deterministic: One thread exits when poked,
    the other two stay.

Test 6:
  Cancel each thread asynchronously and poke them with SIGUSR1 until they
  die.
Expected result:
  If a targeted thread isn't cancelled by pthread_cancel(), the signal
  should wake it up so that the cancel event can be handled. If the first
  signal "misses", one of the following should hit.
Actual result:
  Blocking on semaphore:
    Killing and poking thread 2 will result in one response to the signal
    from thread 0, then nothing.
    Killing and poking thread 1 will result in one resposne to the signal
    from thread 0, then nothing.
    Killing and poking thread 0 will result in one response to the signal
    from thread 1, then nothing.
  Blocking on pause(): Same as semaphore.
  Blocking on read(): Not deterministic: Either the first cancelled and
    poked thread exits fine and the other two don't care or all three
    don't care.

[-- Attachment #2: pthread_kill_test.c --]
[-- Type: text/x-csrc, Size: 4302 bytes --]

#include <errno.h>
#include <pthread.h>
#include <semaphore.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

#define TEST 1
// Test 1: Deferred cancel: Main thread hangs on call to pthread_cancel()
// Test 2: Async cancel sent to each thread
// Test 3: Signal sent to each thread once
// Test 4: Signal sent to one thread repeatedly (doesn't exit by design).
// Test 5: Async cancel and signal sent to each thread once
// Test 6: Async cancel sent once and signal sent repeatedly to each thread until they die

pthread_t tids[3];
sem_t semaphore;

static void cleanup_handler(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i exiting (%p)\n", *intptr, self);
}

static void* simplethread(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i starting (%p)\n", *intptr, self);
  char buffer[1] __attribute((unused));

  pthread_cleanup_push(&cleanup_handler, intptr);

  int oldtype;
#if TEST != 1
  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype);
  fprintf(stderr, "Changing canceltype from %i to %i\n", oldtype, PTHREAD_CANCEL_ASYNCHRONOUS);
#endif
  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldtype);
  fprintf(stderr, "Changing cancelstate from %i to %i\n", oldtype, PTHREAD_CANCEL_ENABLE);

  while (1) {
    if (sem_wait(&semaphore) != 0) {
    //if (pause() == -1) {
    //if (read(STDIN_FILENO, buffer, 1) <= 0) {
      fprintf(stderr, "Thread %i encountered an error: %s (%p)\n",
          *intptr, strerror(errno), self);
    } else {
      fprintf(stderr, "Thread %i woke up just fine\n", *intptr);
    }
  }

  pthread_cleanup_pop(1);
  return NULL;
}

static void sigusr1_handler(int signal __attribute((unused))) {
  pthread_t self = pthread_self();
  int tnum = 0;
  while (tnum < 3) {
    if (tids[tnum] == self) {
      break;
    }
    tnum++;
  }

  fprintf(stderr, "Thread %i executes signal handler (%p)\n", tnum, self);
}

static void install_handler(void) {
  struct sigaction act;
  act.sa_handler = &sigusr1_handler;
  sigemptyset(&(act.sa_mask));
  act.sa_flags = 0;

  if (sigaction(SIGUSR1, &act, NULL) != 0) {
    fprintf(stderr, "Can't set signal handler: %s\n", strerror(errno));
    exit(1);
  }

  sigset_t sset;
  sigemptyset(&sset);
  sigaddset(&sset, SIGUSR1);
  if (sigprocmask(SIG_UNBLOCK, &sset, NULL) != 0) {
    fprintf(stderr, "Can't unblock SIGUSR1: %s\n", strerror(errno));
  }
}

int main() {
  int i;
  int result;

  sem_init(&semaphore, 0, 0);
  install_handler();

  for (i=0; i<3; i++) {
    int *intptr = (int*)malloc(sizeof(int));
    *intptr = i;
    result = pthread_create(tids+i, NULL, &simplethread, intptr);
    if (result != 0) {
      fprintf(stderr, "Can't create thread: %s\n", strerror(result));
      return 1;
    }
  }

  sleep(1);
  install_handler();
  fprintf(stderr, "\n");

  int mainint = 42;
  pthread_cleanup_push(&cleanup_handler, &mainint);

  for (i=2; i>=0; i--) {
#if TEST == 1 || TEST == 2 || TEST == 5 || TEST == 6
    fprintf(stderr, "Killing thread %i (%p)\n", i, tids[i]);
    result = pthread_cancel(tids[i]);
    if (result != 0) {
      fprintf(stderr, "Error during pthread_cancel: %s\n", strerror(result));
    }
    sleep(1);
#endif
#if TEST == 3 || TEST == 4 | TEST == 5 || TEST == 6
    do {
      fprintf(stderr, "Poking thread %i (%p)\n", i, tids[i]);
      result = pthread_kill(tids[i], SIGUSR1);
      if (result != 0) {
        fprintf(stderr, "Error during pthread_kill: %s\n", strerror(result));
      }
      sleep(1);
      result = pthread_kill(tids[i], 0);
      if (result == 0) {
        fprintf(stderr, "Thread %i is still there (%p)\n", i, tids[i]);
        sleep(1);
      } else {
        fprintf(stderr, "Thread %i is gone (%p)\n", i, tids[i]);
        break;
      }
#endif
#if TEST == 3 || TEST == 5
    } while(0);
#elif TEST == 4 || TEST == 6
    } while(1);
#endif
  }

  sleep(1);

  fprintf(stderr, "\n");
  for (i=0; i<3; i++) {
    result = pthread_kill(tids[i], 0);
    if (result == 0) {
      fprintf(stderr, "Thread %i is still there (%p)\n", i, tids[i]);
    } else {
      fprintf(stderr, "Thread %i is gone (%p)\n", i, tids[i]);
    }
  }

  pthread_cleanup_pop(0);
  return 0;
}

[-- Attachment #3: cygcheck.out --]
[-- Type: text/plain, Size: 30417 bytes --]


Cygwin Configuration Diagnostics
Current System Time: Wed May 09 18:05:21 2012

Windows 7 Enterprise Ver 6.1 Build 7601 Service Pack 1

Running under WOW64 on AMD64

Path:	D:\Software\cygwin\usr\local\bin
	D:\Software\cygwin\bin
	C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin
	C:\WinAVR-20100110\bin
	C:\WinAVR-20100110\utils\bin
	C:\Windows\system32
	C:\Windows
	C:\Windows\System32\Wbem
	C:\Windows\System32\WindowsPowerShell\v1.0
	C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared
	C:\Program Files (x86)\Common Files\Roxio Shared\9.0\DLLShared
	C:\Program Files\MATLAB\R2008a\bin
	C:\Program Files\MATLAB\R2008a\bin\win64
	C:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn
	C:\Program Files (x86)\IVI Foundation\IVI\bin
	C:\Program Files\IVI Foundation\IVI\bin
	C:\Program Files (x86)\IVI Foundation\VISA\winnt\agvisa
	C:\Program Files (x86)\IVI Foundation\VISA\winnt\bin
	C:\Program Files (x86)\NASM
	C:\Program Files (x86)\Atmel\Flip 3.4.1\bin
	D:\Software\Python3.2

Output from D:\Software\cygwin\bin\id.exe
UID: 1000(MBA)     GID: 513(None)
=513(None)             545(Benutzer)          1005(Debuggerbenutzer)

SysDir: C:\Windows\system32
WinDir: C:\Windows

USER = 'MBA'
PWD = '/cygdrive/d'
HOME = '/home/MBA'

HOMEPATH = '\Users\MBA'
MANPATH = '/usr/local/man:/usr/share/man:/usr/man:'
APPDATA = 'C:\Users\MBA\AppData\Roaming'
ProgramW6432 = 'C:\Program Files'
HOSTNAME = 'TempleOfTheDog'
SHELL = '/bin/bash'
TERM = 'cygwin'
RoxioCentral = 'C:\Program Files (x86)\Common Files\Roxio Shared\9.0\Roxio Central33\'
PROCESSOR_IDENTIFIER = 'Intel64 Family 6 Model 23 Stepping 10, GenuineIntel'
WINDIR = 'C:\Windows'
VXIPNPPATH64 = 'C:\Program Files\IVI Foundation\VISA\'
PUBLIC = 'C:\Users\Public'
OLDPWD = '/cygdrive/c'
USERDOMAIN = 'TEMPLEOFTHEDOG'
CommonProgramFiles(x86) = 'C:\Program Files (x86)\Common Files'
OS = 'Windows_NT'
ALLUSERSPROFILE = 'C:\ProgramData'
!:: = '::\'
temp = 'C:\Users\MBA\AppData\Local\Temp'
VS90COMNTOOLS = 'C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\'
COMMONPROGRAMFILES = 'C:\Program Files (x86)\Common Files'
tmp = 'C:\Users\MBA\AppData\Local\Temp'
VXIPNPPATH = 'C:\Program Files (x86)\IVI Foundation\VISA\'
USERNAME = 'MBA'
PROCESSOR_LEVEL = '6'
ProgramFiles(x86) = 'C:\Program Files (x86)'
PSModulePath = 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\'
IVIROOTDIR32 = 'C:\Program Files (x86)\IVI Foundation\IVI\'
FP_NO_HOST_CHECK = 'NO'
CARBON_MEM_DISABLE = '1'
SYSTEMDRIVE = 'C:'
PROCESSOR_ARCHITEW6432 = 'AMD64'
LANG = 'de_DE.UTF-8'
USERPROFILE = 'C:\Users\MBA'
TZ = 'Europe/Berlin'
PS1 = '\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
LOGONSERVER = '\\TEMPLEOFTHEDOG'
CommonProgramW6432 = 'C:\Program Files\Common Files'
PROCESSOR_ARCHITECTURE = 'x86'
LOCALAPPDATA = 'C:\Users\MBA\AppData\Local'
HISTCONTROL = 'ignoredups'
ProgramData = 'C:\ProgramData'
SHLVL = '1'
IVIROOTDIR64 = 'C:\Program Files\IVI Foundation\IVI\'
PATHEXT = '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'
HOMEDRIVE = 'C:'
!D: = 'D:\Software\cygwin\bin'
PROMPT = '$P$G'
COMSPEC = 'C:\Windows\system32\cmd.exe'
SYSTEMROOT = 'C:\Windows'
PRINTER = 'KONICA MINOLTA Universal PS'
PROCESSOR_REVISION = '170a'
UGII_3DCONNEXION_LIBRARY = '%UGII_BASE_DIR%\ugalliance\vendor\startup\3DxNX.dll'
INFOPATH = '/usr/local/info:/usr/share/info:/usr/info:'
PROGRAMFILES = 'C:\Program Files (x86)'
NUMBER_OF_PROCESSORS = '2'
AVR32_HOME = 'C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain'
SESSIONNAME = 'Console'
COMPUTERNAME = 'TEMPLEOFTHEDOG'
_ = '/usr/bin/cygcheck'

HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin
HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2
HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\Program Options
HKEY_CURRENT_USER\Software\Cygwin
HKEY_CURRENT_USER\Software\Cygwin\Installations
  (default) = '\??\D:\Software\cygwin'
HKEY_CURRENT_USER\Software\Cygwin\Program Options
HKEY_CURRENT_USER\Software\Cygwin\setup
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\Installations
  (default) = '\??\D:\Software\cygwin'
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\Program Options
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup
  (default) = 'D:\Software\cygwin'

obcaseinsensitive set to 1

Cygwin installations found in the registry:
  System: Key: d1d85fb7bc451065 Path: D:\Software\cygwin
  User:   Key: d1d85fb7bc451065 Path: D:\Software\cygwin

c:  hd  NTFS     76837Mb  63% CP CS UN PA FC     Windows-System
d:  hd  NTFS    399999Mb  17% CP CS UN PA FC     Daten
e:  cd             N/A    N/A                    

D:\Software\cygwin      /          system  binary,auto
D:\Software\cygwin\bin  /usr/bin   system  binary,auto
D:\Software\cygwin\lib  /usr/lib   system  binary,auto
cygdrive prefix         /cygdrive  user    binary,auto

Found: D:\Software\cygwin\bin\awk
 -> D:\Software\cygwin\bin\gawk.exe
Found: D:\Software\cygwin\bin\bash.exe
Found: D:\Software\cygwin\bin\cat.exe
Found: C:\WinAVR-20100110\utils\bin\cat.exe
Warning: D:\Software\cygwin\bin\cat.exe hides C:\WinAVR-20100110\utils\bin\cat.exe
Found: D:\Software\cygwin\bin\cp.exe
Found: C:\WinAVR-20100110\utils\bin\cp.exe
Warning: D:\Software\cygwin\bin\cp.exe hides C:\WinAVR-20100110\utils\bin\cp.exe
Found: D:\Software\cygwin\bin\cpp.exe
 -> D:\Software\cygwin\etc\alternatives\cpp
 -> D:\Software\cygwin\bin\cpp-4.exe
Not Found: crontab
Found: D:\Software\cygwin\bin\find.exe
Found: C:\WinAVR-20100110\utils\bin\find.exe
Warning: D:\Software\cygwin\bin\find.exe hides C:\WinAVR-20100110\utils\bin\find.exe
Found: C:\Windows\system32\find.exe
Warning: D:\Software\cygwin\bin\find.exe hides C:\Windows\system32\find.exe
Found: D:\Software\cygwin\bin\gcc.exe
 -> D:\Software\cygwin\etc\alternatives\gcc
 -> D:\Software\cygwin\bin\gcc-4.exe
Not Found: gdb
Found: D:\Software\cygwin\bin\grep.exe
Found: C:\WinAVR-20100110\utils\bin\grep.exe
Warning: D:\Software\cygwin\bin\grep.exe hides C:\WinAVR-20100110\utils\bin\grep.exe
Found: D:\Software\cygwin\bin\kill.exe
Found: D:\Software\cygwin\bin\ld.exe
Found: D:\Software\cygwin\bin\ls.exe
Found: C:\WinAVR-20100110\utils\bin\ls.exe
Warning: D:\Software\cygwin\bin\ls.exe hides C:\WinAVR-20100110\utils\bin\ls.exe
Found: D:\Software\cygwin\bin\make.exe
Found: C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\make.exe
Warning: D:\Software\cygwin\bin\make.exe hides C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\make.exe
Found: C:\WinAVR-20100110\utils\bin\make.exe
Warning: D:\Software\cygwin\bin\make.exe hides C:\WinAVR-20100110\utils\bin\make.exe
Found: D:\Software\cygwin\bin\mv.exe
Found: C:\WinAVR-20100110\utils\bin\mv.exe
Warning: D:\Software\cygwin\bin\mv.exe hides C:\WinAVR-20100110\utils\bin\mv.exe
Found: C:\WinAVR-20100110\utils\bin\patch.exe
Found: D:\Software\cygwin\bin\perl.exe
Found: D:\Software\cygwin\bin\rm.exe
Found: C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\rm.exe
Warning: D:\Software\cygwin\bin\rm.exe hides C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\rm.exe
Found: C:\WinAVR-20100110\utils\bin\rm.exe
Warning: D:\Software\cygwin\bin\rm.exe hides C:\WinAVR-20100110\utils\bin\rm.exe
Found: D:\Software\cygwin\bin\sed.exe
Found: C:\WinAVR-20100110\utils\bin\sed.exe
Warning: D:\Software\cygwin\bin\sed.exe hides C:\WinAVR-20100110\utils\bin\sed.exe
Not Found: ssh
Found: D:\Software\cygwin\bin\sh.exe
Found: C:\WinAVR-20100110\utils\bin\sh.exe
Warning: D:\Software\cygwin\bin\sh.exe hides C:\WinAVR-20100110\utils\bin\sh.exe
Found: D:\Software\cygwin\bin\tar.exe
Found: C:\WinAVR-20100110\utils\bin\tar.exe
Warning: D:\Software\cygwin\bin\tar.exe hides C:\WinAVR-20100110\utils\bin\tar.exe
Found: D:\Software\cygwin\bin\test.exe
Found: C:\WinAVR-20100110\utils\bin\test.exe
Warning: D:\Software\cygwin\bin\test.exe hides C:\WinAVR-20100110\utils\bin\test.exe
Not Found: vi
Not Found: vim

   14k 2012/05/04 D:\Software\cygwin\bin\cygattr-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygattr-1.dll" v0.0 ts=2012/5/4 12:35
  118k 2012/02/29 D:\Software\cygwin\bin\cygblkid-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygblkid-1.dll" v0.0 ts=2012/2/29 3:57
   62k 2011/05/21 D:\Software\cygwin\bin\cygbz2-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygbz2-1.dll" v0.0 ts=2011/5/21 20:16
  108k 2010/01/05 D:\Software\cygwin\bin\cygcloog-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygcloog-0.dll" v0.0 ts=2010/1/5 0:45
    7k 2012/05/07 D:\Software\cygwin\bin\cygcrypt-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygcrypt-0.dll" v0.0 ts=2012/5/7 12:18
 1246k 2012/04/24 D:\Software\cygwin\bin\cygcrypto-0.9.8.dll - os=4.0 img=1.0 sys=4.0
                  "cygcrypto-0.9.8.dll" v0.0 ts=2012/4/24 10:06
  929k 2011/11/10 D:\Software\cygwin\bin\cygdb-4.5.dll - os=4.0 img=1.0 sys=4.0
                  "cygdb-4.5.dll" v0.0 ts=2011/11/10 19:52
   93k 2011/11/10 D:\Software\cygwin\bin\cygdb_cxx-4.5.dll - os=4.0 img=1.0 sys=4.0
                  "cygdb_cxx-4.5.dll" v0.0 ts=2011/11/10 19:53
   66k 2010/06/02 D:\Software\cygwin\bin\cygelf-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygelf-0.dll" v0.8 ts=2010/6/2 14:08
  118k 2008/05/09 D:\Software\cygwin\bin\cygexpat-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygexpat-1.dll" v0.0 ts=2008/5/9 5:03
   21k 2011/10/26 D:\Software\cygwin\bin\cygffi-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygffi-4.dll" v0.0 ts=2011/10/23 14:33
  175k 2012/02/03 D:\Software\cygwin\bin\cygfontconfig-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygfontconfig-1.dll" v0.0 ts=2012/2/3 8:53
   20k 2010/10/31 D:\Software\cygwin\bin\cygfontenc-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygfontenc-1.dll" v0.0 ts=2010/10/31 20:19
   43k 2010/01/02 D:\Software\cygwin\bin\cygform-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygform-10.dll" v0.0 ts=2010/1/2 14:49
   40k 2009/03/01 D:\Software\cygwin\bin\cygform-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygform-8.dll" v0.0 ts=2009/3/1 6:32
   43k 2009/11/20 D:\Software\cygwin\bin\cygform-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygform-9.dll" v0.0 ts=2009/11/20 19:14
   47k 2010/01/02 D:\Software\cygwin\bin\cygformw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygformw-10.dll" v0.0 ts=2010/1/2 17:31
  505k 2012/03/27 D:\Software\cygwin\bin\cygfreetype-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygfreetype-6.dll" v0.0 ts=2012/3/27 5:27
   79k 2011/10/26 D:\Software\cygwin\bin\cyggcc_s-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyggcc_s-1.dll" v0.0 ts=2011/10/23 14:15
  449k 2011/05/20 D:\Software\cygwin\bin\cyggcrypt-11.dll - os=4.0 img=1.0 sys=4.0
                  "cyggcrypt-11.dll" v0.0 ts=2011/5/20 3:29
   19k 2009/02/26 D:\Software\cygwin\bin\cyggdbm-4.dll - os=4.0 img=1.0 sys=4.0
                  "cyggdbm-4.dll" v0.0 ts=2009/2/26 7:58
    8k 2009/02/26 D:\Software\cygwin\bin\cyggdbm_compat-4.dll - os=4.0 img=1.0 sys=4.0
                  "cyggdbm_compat-4.dll" v0.0 ts=2009/2/26 7:58
  325k 2012/02/05 D:\Software\cygwin\bin\cygGL-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygGL-1.dll" v0.0 ts=2012/2/5 7:13
  159k 2012/02/05 D:\Software\cygwin\bin\cygglapi-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygglapi-0.dll" v0.0 ts=2012/2/5 6:58
  317k 2011/07/31 D:\Software\cygwin\bin\cyggmp-3.dll - os=4.0 img=1.0 sys=4.0
                  "cyggmp-3.dll" v0.0 ts=2011/7/31 6:14
   14k 2011/07/31 D:\Software\cygwin\bin\cyggmpxx-4.dll - os=4.0 img=1.0 sys=4.0
                  "cyggmpxx-4.dll" v0.0 ts=2011/7/31 11:31
   42k 2011/10/26 D:\Software\cygwin\bin\cyggomp-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyggomp-1.dll" v0.0 ts=2011/10/23 14:21
   14k 2011/05/20 D:\Software\cygwin\bin\cyggpg-error-0.dll - os=4.0 img=1.0 sys=4.0
                  "cyggpg-error-0.dll" v0.0 ts=2011/5/20 3:04
   25k 2012/05/04 D:\Software\cygwin\bin\cyghistory7.dll - os=4.0 img=1.0 sys=4.0
                  "cyghistory7.dll" v0.0 ts=2012/5/4 22:07
   74k 2010/10/31 D:\Software\cygwin\bin\cygICE-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygICE-6.dll" v0.0 ts=2010/10/31 20:18
  358k 2012/04/14 D:\Software\cygwin\bin\cygicons-0.dll - os=4.0 img=1.4 sys=4.0
                  "cygicons-0.dll" v0.0 ts=2012/4/14 2:48
  985k 2011/10/16 D:\Software\cygwin\bin\cygiconv-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygiconv-2.dll" v0.0 ts=2011/10/16 18:01
   31k 2005/11/20 D:\Software\cygwin\bin\cygintl-3.dll - os=4.0 img=1.0 sys=4.0
                  "cygintl-3.dll" v0.0 ts=2005/11/20 2:04
   35k 2011/10/16 D:\Software\cygwin\bin\cygintl-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygintl-8.dll" v0.0 ts=2011/10/16 6:38
12928k 2012/01/24 D:\Software\cygwin\bin\cygLLVM-3.0.dll - os=4.0 img=1.0 sys=4.0
                  "cygLLVM-3.0.dll" v0.0 ts=2012/1/24 12:03
    5k 2012/04/25 D:\Software\cygwin\bin\cyglsa.dll - os=4.0 img=1.0 sys=4.0
                  "cyglsa.dll" v0.0 ts=2012/4/25 8:41
    9k 2012/04/25 D:\Software\cygwin\bin\cyglsa64.dll - os=5.2 img=0.0 sys=5.2
  125k 2010/04/09 D:\Software\cygwin\bin\cyglzma-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyglzma-1.dll" v0.0 ts=2010/4/9 16:54
  123k 2011/05/19 D:\Software\cygwin\bin\cyglzma-5.dll - os=4.0 img=1.0 sys=4.0
                  "cyglzma-5.dll" v0.0 ts=2011/5/19 3:41
   94k 2012/04/22 D:\Software\cygwin\bin\cygmagic-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygmagic-1.dll" v0.0 ts=2012/4/22 19:09
   25k 2010/01/02 D:\Software\cygwin\bin\cygmenu-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenu-10.dll" v0.0 ts=2010/1/2 14:48
   21k 2009/03/01 D:\Software\cygwin\bin\cygmenu-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenu-8.dll" v0.0 ts=2009/3/1 6:31
   25k 2009/11/20 D:\Software\cygwin\bin\cygmenu-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenu-9.dll" v0.0 ts=2009/11/20 19:13
   25k 2010/01/02 D:\Software\cygwin\bin\cygmenuw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenuw-10.dll" v0.0 ts=2010/1/2 17:30
  213k 2011/07/31 D:\Software\cygwin\bin\cygmp-3.dll - os=4.0 img=1.0 sys=4.0
                  "cygmp-3.dll" v0.0 ts=2011/7/31 6:12
   64k 2009/11/09 D:\Software\cygwin\bin\cygmpc-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygmpc-1.dll" v0.0 ts=2009/11/9 1:21
  269k 2009/06/07 D:\Software\cygwin\bin\cygmpfr-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygmpfr-1.dll" v0.0 ts=2009/6/7 22:10
 1102k 2011/08/07 D:\Software\cygwin\bin\cygmpfr-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygmpfr-4.dll" v0.0 ts=2011/8/7 2:47
   63k 2010/01/02 D:\Software\cygwin\bin\cygncurses++-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++-10.dll" v0.0 ts=2010/1/2 15:00
   66k 2009/03/01 D:\Software\cygwin\bin\cygncurses++-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++-8.dll" v0.0 ts=2009/3/1 6:39
   63k 2009/11/20 D:\Software\cygwin\bin\cygncurses++-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++-9.dll" v0.0 ts=2009/11/20 19:25
   63k 2010/01/02 D:\Software\cygwin\bin\cygncurses++w-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++w-10.dll" v0.0 ts=2010/1/2 17:41
  195k 2010/01/02 D:\Software\cygwin\bin\cygncurses-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses-10.dll" v0.0 ts=2010/1/2 14:45
  237k 2009/03/01 D:\Software\cygwin\bin\cygncurses-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses-8.dll" v0.0 ts=2009/3/1 6:28
  198k 2009/11/20 D:\Software\cygwin\bin\cygncurses-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses-9.dll" v0.0 ts=2009/11/20 19:10
  244k 2010/01/02 D:\Software\cygwin\bin\cygncursesw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncursesw-10.dll" v0.0 ts=2010/1/2 17:28
   13k 2010/01/02 D:\Software\cygwin\bin\cygpanel-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanel-10.dll" v0.0 ts=2010/1/2 14:47
   11k 2009/03/01 D:\Software\cygwin\bin\cygpanel-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanel-8.dll" v0.0 ts=2009/3/1 6:30
   13k 2009/11/20 D:\Software\cygwin\bin\cygpanel-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanel-9.dll" v0.0 ts=2009/11/20 19:12
   13k 2010/01/02 D:\Software\cygwin\bin\cygpanelw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanelw-10.dll" v0.0 ts=2010/1/2 16:30
  255k 2012/02/10 D:\Software\cygwin\bin\cygpcre-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygpcre-0.dll" v0.0 ts=2012/2/10 10:24
 1627k 2010/08/29 D:\Software\cygwin\bin\cygperl5_10.dll - os=4.0 img=1.0 sys=4.0
                  "cygperl5_10.dll" v0.0 ts=2010/8/28 19:17
  509k 2012/03/12 D:\Software\cygwin\bin\cygpixman-1-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygpixman-1-0.dll" v0.0 ts=2012/3/12 11:06
   22k 2002/06/09 D:\Software\cygwin\bin\cygpopt-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygpopt-0.dll" v0.0 ts=2002/6/9 6:45
  695k 2009/04/18 D:\Software\cygwin\bin\cygppl-7.dll - os=4.0 img=1.0 sys=4.0
                  "cygppl-7.dll" v0.0 ts=2009/4/18 13:44
 2481k 2009/04/18 D:\Software\cygwin\bin\cygppl_c-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygppl_c-2.dll" v0.0 ts=2009/4/18 13:47
   18k 2009/04/18 D:\Software\cygwin\bin\cygpwl-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygpwl-4.dll" v0.0 ts=2009/4/18 13:44
  162k 2012/05/04 D:\Software\cygwin\bin\cygreadline7.dll - os=4.0 img=1.0 sys=4.0
                  "cygreadline7.dll" v0.0 ts=2012/5/4 22:07
    8k 2011/05/05 D:\Software\cygwin\bin\cygsigsegv-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygsigsegv-2.dll" v0.0 ts=2011/5/5 8:33
   25k 2010/10/31 D:\Software\cygwin\bin\cygSM-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygSM-6.dll" v0.0 ts=2010/10/31 20:24
 1613k 2010/12/01 D:\Software\cygwin\bin\cygsqlite3-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygsqlite3-0.dll" v0.0 ts=2010/12/1 12:20
  282k 2012/04/24 D:\Software\cygwin\bin\cygssl-0.9.8.dll - os=4.0 img=1.0 sys=4.0
                  "cygssl-0.9.8.dll" v0.0 ts=2012/4/24 10:06
    8k 2011/10/26 D:\Software\cygwin\bin\cygssp-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygssp-0.dll" v0.0 ts=2011/10/23 14:33
  780k 2011/10/26 D:\Software\cygwin\bin\cygstdc++-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygstdc++-6.dll" v0.0 ts=2011/10/23 14:58
   48k 2010/01/02 D:\Software\cygwin\bin\cygtic-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygtic-10.dll" v0.0 ts=2010/1/2 14:45
   48k 2009/11/20 D:\Software\cygwin\bin\cygtic-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygtic-9.dll" v0.0 ts=2009/11/20 19:10
   48k 2010/01/02 D:\Software\cygwin\bin\cygticw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygticw-10.dll" v0.0 ts=2010/1/2 17:28
   13k 2012/02/29 D:\Software\cygwin\bin\cyguuid-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyguuid-1.dll" v0.0 ts=2012/2/29 3:56
 1045k 2011/08/22 D:\Software\cygwin\bin\cygX11-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygX11-6.dll" v0.0 ts=2011/8/22 9:25
    6k 2011/08/22 D:\Software\cygwin\bin\cygX11-xcb-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygX11-xcb-1.dll" v0.0 ts=2011/8/22 9:26
   11k 2010/08/03 D:\Software\cygwin\bin\cygXau-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXau-6.dll" v0.0 ts=2010/8/3 1:32
  337k 2011/02/04 D:\Software\cygwin\bin\cygXaw-7.dll - os=4.0 img=1.0 sys=4.0
                  "cygXaw-7.dll" v0.0 ts=2011/2/4 7:02
   75k 2010/12/21 D:\Software\cygwin\bin\cygxcb-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygxcb-1.dll" v0.0 ts=2010/12/21 1:36
   51k 2010/12/21 D:\Software\cygwin\bin\cygxcb-glx-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygxcb-glx-0.dll" v0.0 ts=2010/12/21 1:36
   17k 2010/10/31 D:\Software\cygwin\bin\cygXdmcp-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXdmcp-6.dll" v0.0 ts=2010/10/31 20:29
   52k 2011/05/23 D:\Software\cygwin\bin\cygXext-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXext-6.dll" v0.0 ts=2011/5/23 9:32
   66k 2010/11/01 D:\Software\cygwin\bin\cygXft-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygXft-2.dll" v0.0 ts=2010/11/1 2:10
  119k 2010/11/01 D:\Software\cygwin\bin\cygxkbfile-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygxkbfile-1.dll" v0.0 ts=2010/11/1 2:33
   75k 2010/11/01 D:\Software\cygwin\bin\cygXmu-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXmu-6.dll" v0.0 ts=2010/11/1 2:19
   11k 2010/11/01 D:\Software\cygwin\bin\cygXmuu-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygXmuu-1.dll" v0.0 ts=2010/11/1 2:19
   53k 2010/11/01 D:\Software\cygwin\bin\cygXpm-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygXpm-4.dll" v0.0 ts=2010/11/1 2:19
   32k 2010/08/03 D:\Software\cygwin\bin\cygXrender-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygXrender-1.dll" v0.0 ts=2010/8/3 5:48
  278k 2011/06/07 D:\Software\cygwin\bin\cygXt-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXt-6.dll" v0.0 ts=2011/6/7 4:40
   76k 2010/08/01 D:\Software\cygwin\bin\cygz.dll - os=4.0 img=1.0 sys=4.0
                  "cygz.dll" v0.0 ts=2010/8/1 22:04
 2779k 2012/04/25 D:\Software\cygwin\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
                  "cygwin1.dll" v0.0 ts=2012/4/25 8:41
    Cygwin DLL version info:
        DLL version: 1.7.14
        DLL epoch: 19
        DLL old termios: 5
        DLL malloc env: 28
        Cygwin conv: 181
        API major: 0
        API minor: 260
        Shared data: 5
        DLL identifier: cygwin1
        Mount registry: 3
        Cygwin registry name: Cygwin
        Program options name: Program Options
        Installations name: Installations
        Cygdrive default prefix: 
        Build date: 
        Shared id: cygwin1S5

 1829k 2010/01/19 C:\WinAVR-20100110\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
                  "cygwin1.dll" v0.0 ts=2008/6/12 18:35
    Cygwin DLL version info:
        DLL version: 1.5.25
        DLL epoch: 19
        DLL bad signal mask: 19005
        DLL old termios: 5
        DLL malloc env: 28
        API major: 0
        API minor: 156
        Shared data: 4
        DLL identifier: cygwin1
        Mount registry: 2
        Cygnus registry name: Cygnus Solutions
        Cygwin registry name: Cygwin
        Program options name: Program Options
        Cygwin mount registry name: mounts v2
        Cygdrive flags: cygdrive flags
        Cygdrive prefix: cygdrive prefix
        Cygdrive default prefix: 
        Build date: Thu Jun 12 19:34:46 CEST 2008
        CVS tag: cr-0x5f1
        Shared id: cygwin1S4

Warning: There are multiple cygwin1.dlls on your path

Can't find the cygrunsrv utility, skipping services check.


Cygwin Package Information
Last downloaded files to: D:\Software\cygwin-install
Last downloaded files from: http://linux.rz.ruhr-uni-bochum.de/download/cygwin/

Package               Version              Status
_autorebase           000059-1             OK
_update-info-dir      01049-1              OK
alternatives          1.3.30c-10           OK
base-cygwin           3.1-1                OK
base-files            4.1-1                OK
Empty package base-passwd
base-passwd           3.1-2                OK
bash                  4.1.10-4             OK
binutils              2.22.51-2            OK
bzip2                 1.0.6-2              OK
coreutils             8.15-1               OK
crypt                 1.2-1                OK
cygutils              1.4.10-2             OK
cygwin                1.7.14-2             OK
cygwin-doc            1.7-1                OK
dash                  0.5.7-1              OK
diffutils             3.2-1                OK
dos2unix              6.0-1                OK
dri-drivers           7.11.2-1             OK
editrights            1.01-2               OK
file                  5.11-1               OK
findutils             4.5.9-2              OK
flawfinder            1.27-2               OK
font-adobe-dpi75      1.0.2-1              OK
font-alias            1.0.3-1              OK
font-encodings        1.0.4-1              OK
font-misc-misc        1.1.1-1              OK
fontconfig            2.8.0-2              OK
gawk                  4.0.1-1              OK
Empty package gcc
gcc                   3.4.4-999            OK
gcc-core              3.4.4-999            OK
gcc-g++               3.4.4-999            OK
gcc-mingw-core        20050522-3           OK
gcc-mingw-g++         20050522-3           OK
Empty package gcc4
gcc4                  4.5.3-3              OK
gcc4-core             4.5.3-3              OK
gcc4-g++              4.5.3-3              OK
gettext               0.18.1.1-2           OK
grep                  2.6.3-1              OK
groff                 1.21-2               OK
gzip                  1.4-1                OK
ipc-utils             1.0-1                OK
less                  444-1                OK
libattr1              2.4.46-1             OK
libblkid1             2.21-1               OK
libbz2_1              1.0.6-2              OK
libcloog0             0.15.7-1             OK
libdb4.5              4.5.20.2-3           OK
libelf0               0.8.13-2             OK
libelf0-devel         0.8.13-2             OK
libexpat1             2.0.1-1              OK
libffi4               4.5.3-3              OK
libfontconfig1        2.8.0-2              OK
libfontenc1           1.1.0-1              OK
libfreetype6          2.4.9-2              OK
libgcc1               4.5.3-3              OK
libgcrypt11           1.4.6-1              OK
libgdbm4              1.8.3-20             OK
libGL1                7.11.2-1             OK
libglapi0             7.11.2-1             OK
libgmp3               4.3.2-1              OK
libgmpxx4             4.3.2-1              OK
libgomp1              4.5.3-3              OK
libgpg-error0         1.10-1               OK
libICE6               1.0.7-1              OK
libiconv2             1.14-2               OK
libintl3              0.14.5-1             OK
libintl8              0.18.1.1-2           OK
libllvm3.0            3.0-1                OK
liblzma1              4.999.9beta-11       OK
liblzma5              5.0.2_20110517-1     OK
libmpc1               0.8-1                OK
libmpfr1              2.4.1-4              OK
libmpfr4              3.0.1-1              OK
libncurses10          5.7-18               OK
libncurses8           5.5-10               OK
libncurses9           5.7-16               OK
libncursesw10         5.7-18               OK
libopenssl098         0.9.8w-1             OK
libpcre0              8.21-2               OK
libpixman1_0          0.24.4-1             OK
libpopt0              1.6.4-4              OK
libppl                0.10.2-1             OK
libreadline7          6.1.2-3              OK
libsigsegv2           2.10-1               OK
libSM6                1.2.0-1              OK
libsqlite3_0          3.7.3-1              OK
libssp0               4.5.3-3              OK
libstdc++6            4.5.3-3              OK
libstdc++6-devel      4.5.3-3              OK
libuuid1              2.21-1               OK
libX11-xcb1           1.4.4-1              OK
libX11_6              1.4.4-1              OK
libXau6               1.0.6-1              OK
libXaw7               1.0.9-1              OK
libxcb-glx0           1.7-2                OK
libxcb1               1.7-2                OK
libXdmcp6             1.1.0-1              OK
libXext6              1.3.0-1              OK
libXft2               2.2.0-1              OK
libxkbfile1           1.0.7-1              OK
libXmu6               1.1.0-1              OK
libXmuu1              1.1.0-1              OK
libXpm4               3.5.9-1              OK
libXrender1           0.9.6-1              OK
libXt6                1.1.1-1              OK
login                 1.10-10              OK
luit                  1.1.0-1              OK
make                  3.82.90-1            OK
man                   1.6g-1               OK
mingw-runtime         3.20-1               OK
mingw-w32api          3.17-2               OK
mingw64-i686-binutils 2.22.51-3            OK
mingw64-i686-gcc-core 4.5.3-5              OK
mingw64-i686-headers  3.0b_svn4913-1       OK
mingw64-i686-pthreads 20100619-4           OK
mingw64-i686-runtime  3.0b_svn4913-1       OK
mintty                1.0.3-1              OK
mkfontdir             1.0.6-1              OK
mkfontscale           1.0.9-1              OK
nano                  2.2.5-1              OK
perl                  5.10.1-5             OK
python                2.6.7-1              OK
rebase                4.1.0-1              OK
rsync                 3.0.9-1              OK
run                   1.1.13-1             OK
sed                   4.2.1-2              OK
setxkbmap             1.2.0-1              OK
tar                   1.25-1               OK
terminfo              5.7_20091114-14      OK
terminfo0             5.5_20061104-12      OK
texinfo               4.13-4               OK
tzcode                2012b-1              OK
util-linux            2.21-1               OK
w32api                3.17-2               OK
which                 2.20-2               OK
xauth                 1.0.6-1              OK
xcursor-themes        1.0.3-1              OK
xf86-video-dummy      0.3.5-1              OK
xf86-video-nested     0.1.0-1              OK
xhost                 1.0.4-1              OK
xkbcomp               1.2.3-1              OK
xkeyboard-config      2.5.1-1              OK
xmodmap               1.0.5-1              OK
xorg-server           1.12.1-1             OK
xorg-server-common    1.12.1-1             OK
xrdb                  1.0.9-1              OK
xterm                 278-1                OK
xz                    5.0.2_20110517-1     OK
zlib                  1.2.5-1              OK
zlib-devel            1.2.5-1              OK
zlib0                 1.2.5-1              OK
Use -h to see help about each section

[-- Attachment #4: Type: text/plain, Size: 218 bytes --]

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-09 17:50 1.7.14-2: pthread_cancel and pthread_kill not working as expected Otto Meta
@ 2012-05-18 10:23 ` Otto Meta
  2012-05-18 11:43   ` Earnie Boyd
  0 siblings, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-18 10:23 UTC (permalink / raw)
  To: cygwin

Greetings,

as I got no response to my first question, I tried two older Cygwin
versions to narrow down the problem. Maybe thisÂ’ll help someone to
figure out the cause.

I tried 1.7.9 and 1.7.12-1, with the results of 1.7.12-1 being exactly
like the ones from 1.7.14-2 and 1.7.15-1. Unfortunately I couldnÂ’t dig
up any versions between 1.7.9 and 1.7.12-1.

Results from 1.7.12-1 (for semaphores, detailed results in my last mail):
Test 1: Main thread hangs on pthread_cancel() (PTHREAD_CANCEL_DEFERRED)
Test 2: Threads ignore pthread_cancel() (PTHREAD_CANCEL_ASYNCHRONOUS)
Test 3: Signals often wake the wrong thread
Test 4: Wrong thread wakes up once, then nothing
Test 5: Some threads exit, depending on whether the signal reached the
        right thread
Test 6: Thread isn't cancelled even after a waking it with a signal

On 1.7.9 things are a bit different:
Test 1: PTHREAD_CANCEL_DEFERRED
        semaphore/pause: All threads are cancelled via pthread_cancel()
        read: No thread is cancelled
Test 2: PTHREAD_CANCEL_ASYNCHRONOUS
        Threads ignore pthread_cancel()
Test 3: semaphore/read: No thread wakes up or executes the signal handler,
          sleep() doesn't sleep any more after the first signal (returns
          immediately)
        pause: All threads wake up on every signal, correct thread
          executes signal handler
Test 4: semaphore/read: No thread wakes up or executes the signal handler,
          sleep() doesn't sleep any more after the first signal (returns
          immediately)
        pause: All threads wake up on every signal, correct thread
          executes signal handler
Test 5: semaphore: No thread is killed, sleep() doesn't sleep any more
        pause: First thread cancelled, other threads won't pause()
          any more and run amok
        read: Some threads are killed, sleep() doesn't sleep any more
Test 6: semaphore/pause: No thread is killed, sleep() doesn't sleep
          any more
        pause: First thread cancelled, other threads won't pause()
          any more and run amok

Sorry if IÂ’m mixing two (or three?) problems, but they all seem
pthreads-related.

pthread_cancel deferred:
Worked on threads blocked in sem_wait() and pause() in 1.7.9, doesnÂ’t work
any more in 1.7.12-1 and newer and instead hangs calling thread. IÂ’d
consider this one a regression. DidnÂ’t work on threads blocked in read()
in any tested version.

pthread_cancel asynchronous:
No thread is cancelled in any tested version. Calling thread doesnÂ’t hang,
though.

pthread_kill:
In 1.7.9 a signal to any thread wakes up all threads blocked in pause()
and the correct thread executes the signal handler. DoesnÂ’t wake threads
blocked in sem_wait() or read(). After delivering a signal, pause() and
sleep() donÂ’t block any more and return immediately.
In 1.7.12-1 and newer sleep() and pause() wonÂ’t break and not all threads
are woken up. Instead only one thread is woken, but unfortunately not
always the correct one.

While signal handling mostly seems to have improved, cancelling
got worse. Especially the fact that the calling thread blocks in
pthread_cancel can be quite a show-stopper.

Any suggestions or ideas?

Cheers,
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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-18 10:23 ` 1.7.15-1: " Otto Meta
@ 2012-05-18 11:43   ` Earnie Boyd
  2012-05-21 10:26     ` Otto Meta
  0 siblings, 1 reply; 24+ messages in thread
From: Earnie Boyd @ 2012-05-18 11:43 UTC (permalink / raw)
  To: cygwin

On Fri, May 18, 2012 at 6:23 AM, Otto Meta wrote:
>
> Any suggestions or ideas?

You should always try the most recent http://cygwin.com/snapshots.

-- 
Earnie
-- https://sites.google.com/site/earnieboyd

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-18 11:43   ` Earnie Boyd
@ 2012-05-21 10:26     ` Otto Meta
  2012-05-21 10:47       ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-21 10:26 UTC (permalink / raw)
  To: cygwin

> You should always try the most recent http://cygwin.com/snapshots.

Thanks for the suggestion, that did indeed change something: The tests
yield the same half-broken behaviour for pthread_cancel as with 1.7.7
and 1.7.9. That’s better than the almost completely broken behaviour
from 1.7.12-1 to 1.7.15-1. pthread_kill is still as unreliable as in
1.7.12-1 and newer, though.

Results with cygwin1-20120517.dll:

Test 1:
  Blocking on semaphore: Works
  Blocking on pause(): Works
  Blocking on read(): Not deterministic: One thread is killed, the other
    two stay

Test 2:
  Independent of what the threads are blocked on, nothing is cancelled.

Test 3:
  Blocking on semaphore: May or may not signal the correct thread.
  Blocking on pause(): Same as semaphore.
  Blocking on read(): One thread executes the signal handler, the other
    two don't. Thread chosen seemingly at random.

Test 4:
  Not deterministic: Targeted thread either executes the signal handler
  every time or not at all.

Test 5:
  Not deterministic: Threads may or may not exit after being poked.

Test 6:
  Not deterministic: Threads may or may not exit after being poked.

In short:
- Deferred pthread_cancel seems to work.
- Asynchronous pthtread_cancel seems to have no effect.
- pthread_kill is basically hit or miss.

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-21 10:26     ` Otto Meta
@ 2012-05-21 10:47       ` Corinna Vinschen
  2012-05-21 12:44         ` Otto Meta
  0 siblings, 1 reply; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-21 10:47 UTC (permalink / raw)
  To: cygwin

On May 21 12:26, Otto Meta wrote:
> > You should always try the most recent http://cygwin.com/snapshots.
> 
> Thanks for the suggestion, that did indeed change something: The tests
> yield the same half-broken behaviour for pthread_cancel as with 1.7.7
> and 1.7.9. That’s better than the almost completely broken behaviour
> from 1.7.12-1 to 1.7.15-1. pthread_kill is still as unreliable as in
> 1.7.12-1 and newer, though.
> 
> Results with cygwin1-20120517.dll:
> 
> Test 1:
>   Blocking on semaphore: Works
>   Blocking on pause(): Works
>   Blocking on read(): Not deterministic: One thread is killed, the other
>     two stay
> 
> Test 2:
>   Independent of what the threads are blocked on, nothing is cancelled.
> 
> Test 3:
>   Blocking on semaphore: May or may not signal the correct thread.
>   Blocking on pause(): Same as semaphore.
>   Blocking on read(): One thread executes the signal handler, the other
>     two don't. Thread chosen seemingly at random.
> 
> Test 4:
>   Not deterministic: Targeted thread either executes the signal handler
>   every time or not at all.
> 
> Test 5:
>   Not deterministic: Threads may or may not exit after being poked.
> 
> Test 6:
>   Not deterministic: Threads may or may not exit after being poked.
> 
> In short:
> - Deferred pthread_cancel seems to work.
> - Asynchronous pthtread_cancel seems to have no effect.
> - pthread_kill is basically hit or miss.

Would you mind to provide *simple* testcases to allow easy debugging
of your observations?


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-21 10:47       ` Corinna Vinschen
@ 2012-05-21 12:44         ` Otto Meta
  2012-05-22 11:03           ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-21 12:44 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 516 bytes --]

> Would you mind to provide *simple* testcases to allow easy debugging
> of your observations?

I reduced the various tests to three rather simple individual testcases
because those show possibly different bugs.

Testcase cancel deferred:
Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
and 1.7.15-1.

Testcase cancel asynchronous:
Async cancel seems to have no effect with any tested version.

Testcase signal/kill:
Signals may or may not reach the correct thread with 1.7.12-1 and newer.

Otto

[-- Attachment #2: testcase_cancel_deferred.c --]
[-- Type: text/x-csrc, Size: 1931 bytes --]

#include <errno.h>
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

pthread_t tids[3];
sem_t semaphore;

static void cleanup_handler(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i exiting (%p)\n", *intptr, self);
}

static void* simplethread(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i starting (%p)\n", *intptr, self);

  pthread_cleanup_push(&cleanup_handler, intptr);

  while (1) {
    if (sem_wait(&semaphore) != 0) {
      fprintf(stderr, "Thread %i encountered an error: %s (%p)\n",
          *intptr, strerror(errno), self);
    } else {
      fprintf(stderr, "Thread %i woke up just fine\n", *intptr);
    }
  }

  pthread_cleanup_pop(1);
  return NULL;
}

int main() {
  fprintf(stderr, "Testing deferred pthread_cancel()\n\n");

  int i;
  int result;

  sem_init(&semaphore, 0, 0);

  for (i=0; i<3; i++) {
    int *intptr = (int*)malloc(sizeof(int));
    *intptr = i;
    result = pthread_create(tids+i, NULL, &simplethread, intptr);
    if (result != 0) {
      fprintf(stderr, "Can't create thread: %s\n", strerror(result));
      return 1;
    }
  }

  sleep(1);
  fprintf(stderr, "\n");

  int mainint = 42;
  pthread_cleanup_push(&cleanup_handler, &mainint);

  for (i=2; i>=0; i--) {
    fprintf(stderr, "Cancelling thread %i (%p)\n", i, tids[i]);
    result = pthread_cancel(tids[i]);
    if (result != 0) {
      fprintf(stderr, "Error during pthread_cancel: %s\n", strerror(result));
    }
    sleep(1);
  }

  fprintf(stderr, "\n");
  for (i=0; i<3; i++) {
    result = pthread_kill(tids[i], 0);
    if (result == 0) {
      fprintf(stderr, "Thread %i is still there (%p)\n", i, tids[i]);
    } else {
      fprintf(stderr, "Thread %i is gone (%p)\n", i, tids[i]);
    }
  }

  pthread_cleanup_pop(0);
  return 0;
}

[-- Attachment #3: testcase_cancel_asynchronous.c --]
[-- Type: text/x-csrc, Size: 2111 bytes --]

#include <errno.h>
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

pthread_t tids[3];
sem_t semaphore;

static void cleanup_handler(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i exiting (%p)\n", *intptr, self);
}

static void* simplethread(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i starting (%p)\n", *intptr, self);

  pthread_cleanup_push(&cleanup_handler, intptr);

  int oldtype;
  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype);
  fprintf(stderr, "Changing canceltype from %i to %i\n", oldtype, PTHREAD_CANCEL_ASYNCHRONOUS);

  while (1) {
    if (sem_wait(&semaphore) != 0) {
      fprintf(stderr, "Thread %i encountered an error: %s (%p)\n",
          *intptr, strerror(errno), self);
    } else {
      fprintf(stderr, "Thread %i woke up just fine\n", *intptr);
    }
  }

  pthread_cleanup_pop(1);
  return NULL;
}

int main() {
  fprintf(stderr, "Testing asynchronous pthread_cancel()\n\n");

  int i;
  int result;

  sem_init(&semaphore, 0, 0);

  for (i=0; i<3; i++) {
    int *intptr = (int*)malloc(sizeof(int));
    *intptr = i;
    result = pthread_create(tids+i, NULL, &simplethread, intptr);
    if (result != 0) {
      fprintf(stderr, "Can't create thread: %s\n", strerror(result));
      return 1;
    }
  }

  sleep(1);
  fprintf(stderr, "\n");

  int mainint = 42;
  pthread_cleanup_push(&cleanup_handler, &mainint);

  for (i=2; i>=0; i--) {
    fprintf(stderr, "Cancelling thread %i (%p)\n", i, tids[i]);
    result = pthread_cancel(tids[i]);
    if (result != 0) {
      fprintf(stderr, "Error during pthread_cancel: %s\n", strerror(result));
    }
    sleep(1);
  }

  fprintf(stderr, "\n");
  for (i=0; i<3; i++) {
    result = pthread_kill(tids[i], 0);
    if (result == 0) {
      fprintf(stderr, "Thread %i is still there (%p)\n", i, tids[i]);
    } else {
      fprintf(stderr, "Thread %i is gone (%p)\n", i, tids[i]);
    }
  }

  pthread_cleanup_pop(0);
  return 0;
}

[-- Attachment #4: testcase_signal.c --]
[-- Type: text/x-csrc, Size: 2488 bytes --]

#include <errno.h>
#include <pthread.h>
#include <semaphore.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

pthread_t tids[3];
sem_t semaphore;

static void cleanup_handler(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i exiting (%p)\n", *intptr, self);
}

static void* simplethread(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i starting (%p)\n", *intptr, self);

  pthread_cleanup_push(&cleanup_handler, intptr);

  while (1) {
    if (sem_wait(&semaphore) != 0) {
      fprintf(stderr, "Thread %i encountered an error: %s (%p)\n",
          *intptr, strerror(errno), self);
    } else {
      fprintf(stderr, "Thread %i woke up just fine\n", *intptr);
    }
  }

  pthread_cleanup_pop(1);
  return NULL;
}

static void sigusr1_handler(int signal __attribute((unused))) {
  pthread_t self = pthread_self();
  int tnum = 0;
  while (tnum < 3) {
    if (tids[tnum] == self) {
      break;
    }
    tnum++;
  }

  fprintf(stderr, "Thread %i executes signal handler (%p)\n", tnum, self);
}

static void install_handler(void) {
  struct sigaction act;
  act.sa_handler = &sigusr1_handler;
  sigemptyset(&(act.sa_mask));
  act.sa_flags = 0;

  if (sigaction(SIGUSR1, &act, NULL) != 0) {
    fprintf(stderr, "Can't set signal handler: %s\n", strerror(errno));
    exit(1);
  }

  sigset_t sset;
  sigemptyset(&sset);
  sigaddset(&sset, SIGUSR1);
  if (sigprocmask(SIG_UNBLOCK, &sset, NULL) != 0) {
    fprintf(stderr, "Can't unblock SIGUSR1: %s\n", strerror(errno));
  }
}

int main() {
  fprintf(stderr, "Testing pthread_kill()\n\n");

  int i;
  int result;

  sem_init(&semaphore, 0, 0);
  install_handler();

  for (i=0; i<3; i++) {
    int *intptr = (int*)malloc(sizeof(int));
    *intptr = i;
    result = pthread_create(tids+i, NULL, &simplethread, intptr);
    if (result != 0) {
      fprintf(stderr, "Can't create thread: %s\n", strerror(result));
      return 1;
    }
  }

  sleep(1);
  install_handler();
  fprintf(stderr, "\n");

  int mainint = 42;
  pthread_cleanup_push(&cleanup_handler, &mainint);

  for (i=2; i>=0; i--) {
    fprintf(stderr, "Sending SIGUSR1 to thread %i (%p)\n", i, tids[i]);
    result = pthread_kill(tids[i], SIGUSR1);
    if (result != 0) {
      fprintf(stderr, "Error during pthread_kill: %s\n", strerror(result));
    }
    sleep(1);
  }

  pthread_cleanup_pop(0);
  return 0;
}


[-- Attachment #5: Type: text/plain, Size: 218 bytes --]

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-21 12:44         ` Otto Meta
@ 2012-05-22 11:03           ` Corinna Vinschen
  2012-05-22 13:26             ` Otto Meta
  2012-07-11 12:36             ` Otto Meta
  0 siblings, 2 replies; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-22 11:03 UTC (permalink / raw)
  To: cygwin

Hi Otto,

On May 21 14:44, Otto Meta wrote:
> > Would you mind to provide *simple* testcases to allow easy debugging
> > of your observations?
> 
> I reduced the various tests to three rather simple individual testcases
> because those show possibly different bugs.

Thanks!

> Testcase cancel deferred:
> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
> and 1.7.15-1.

If that works in the snapshot anyway, I'm not going to look into that
one.

> Testcase cancel asynchronous:
> Async cancel seems to have no effect with any tested version.

I think I found a solution for this problem.  See the comment in the
patch at
http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259

Please test the today's developer snapshot.

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


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-22 11:03           ` Corinna Vinschen
@ 2012-05-22 13:26             ` Otto Meta
  2012-05-23  8:53               ` Corinna Vinschen
  2012-07-11 12:36             ` Otto Meta
  1 sibling, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-22 13:26 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 1135 bytes --]

>> Testcase cancel deferred:
>> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
>> and 1.7.15-1.
> If that works in the snapshot anyway, I'm not going to look into that
> one.

It worked in the reduced testcase with sem_wait(). With read() it’s
still half-broken. See below.

>> Testcase cancel asynchronous:
>> Async cancel seems to have no effect with any tested version.
> I think I found a solution for this problem.  See the comment in the
> patch at
> http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259
> Please test the today's developer snapshot.

Asynchronous cancel seems to work as well as deferred cancel now. Thanks.

Both cancel types work with sem_wait() and pause() now, but for threads
blocked in read() they’re still unreliable. Only one of three blocked
threads is killed in the attached updated testcases.

>> Testcase signal/kill:
>> Signals may or may not reach the correct thread with 1.7.12-1 and newer.
> Confirmed. [...] This is cgf's domain so I leave it at that for now.

Okay, I’ll hope for him to respond then.

Otto

[-- Attachment #2: testcase_cancel_asynchronous.c --]
[-- Type: text/x-csrc, Size: 2089 bytes --]

#include <errno.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

pthread_t tids[3];

static void cleanup_handler(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i exiting (%p)\n", *intptr, self);
}

static void* simplethread(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i starting (%p)\n", *intptr, self);
  char buffer[1] __attribute((unused));

  pthread_cleanup_push(&cleanup_handler, intptr);

  int oldtype;
  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype);
  fprintf(stderr, "Changing canceltype from %i to %i\n", oldtype, PTHREAD_CANCEL_ASYNCHRONOUS);

  while (1) {
    if (read(STDIN_FILENO, buffer, 1) <= 0) {
      fprintf(stderr, "Thread %i encountered an error: %s (%p)\n",
          *intptr, strerror(errno), self);
    } else {
      fprintf(stderr, "Thread %i woke up just fine\n", *intptr);
    }
  }

  pthread_cleanup_pop(1);
  return NULL;
}

int main() {
  fprintf(stderr, "Testing asynchronous pthread_cancel()\n\n");

  int i;
  int result;

  for (i=0; i<3; i++) {
    int *intptr = (int*)malloc(sizeof(int));
    *intptr = i;
    result = pthread_create(tids+i, NULL, &simplethread, intptr);
    if (result != 0) {
      fprintf(stderr, "Can't create thread: %s\n", strerror(result));
      return 1;
    }
  }

  sleep(1);
  fprintf(stderr, "\n");

  int mainint = 42;
  pthread_cleanup_push(&cleanup_handler, &mainint);

  for (i=2; i>=0; i--) {
    fprintf(stderr, "Cancelling thread %i (%p)\n", i, tids[i]);
    result = pthread_cancel(tids[i]);
    if (result != 0) {
      fprintf(stderr, "Error during pthread_cancel: %s\n", strerror(result));
    }
    sleep(1);
  }

  fprintf(stderr, "\n");
  for (i=0; i<3; i++) {
    result = pthread_kill(tids[i], 0);
    if (result == 0) {
      fprintf(stderr, "Thread %i is still there (%p)\n", i, tids[i]);
    } else {
      fprintf(stderr, "Thread %i is gone (%p)\n", i, tids[i]);
    }
  }

  pthread_cleanup_pop(0);
  return 0;
}

[-- Attachment #3: testcase_cancel_deferred.c --]
[-- Type: text/x-csrc, Size: 1910 bytes --]

#include <errno.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

pthread_t tids[3];

static void cleanup_handler(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i exiting (%p)\n", *intptr, self);
}

static void* simplethread(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i starting (%p)\n", *intptr, self);
  char buffer[1] __attribute((unused));

  pthread_cleanup_push(&cleanup_handler, intptr);

  while (1) {
    if (read(STDIN_FILENO, buffer, 1) <= 0) {
      fprintf(stderr, "Thread %i encountered an error: %s (%p)\n",
          *intptr, strerror(errno), self);
    } else {
      fprintf(stderr, "Thread %i woke up just fine\n", *intptr);
    }
  }

  pthread_cleanup_pop(1);
  return NULL;
}

int main() {
  fprintf(stderr, "Testing deferred pthread_cancel()\n\n");

  int i;
  int result;

  for (i=0; i<3; i++) {
    int *intptr = (int*)malloc(sizeof(int));
    *intptr = i;
    result = pthread_create(tids+i, NULL, &simplethread, intptr);
    if (result != 0) {
      fprintf(stderr, "Can't create thread: %s\n", strerror(result));
      return 1;
    }
  }

  sleep(1);
  fprintf(stderr, "\n");

  int mainint = 42;
  pthread_cleanup_push(&cleanup_handler, &mainint);

  for (i=2; i>=0; i--) {
    fprintf(stderr, "Cancelling thread %i (%p)\n", i, tids[i]);
    result = pthread_cancel(tids[i]);
    if (result != 0) {
      fprintf(stderr, "Error during pthread_cancel: %s\n", strerror(result));
    }
    sleep(1);
  }

  fprintf(stderr, "\n");
  for (i=0; i<3; i++) {
    result = pthread_kill(tids[i], 0);
    if (result == 0) {
      fprintf(stderr, "Thread %i is still there (%p)\n", i, tids[i]);
    } else {
      fprintf(stderr, "Thread %i is gone (%p)\n", i, tids[i]);
    }
  }

  pthread_cleanup_pop(0);
  return 0;
}


[-- Attachment #4: Type: text/plain, Size: 218 bytes --]

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-22 13:26             ` Otto Meta
@ 2012-05-23  8:53               ` Corinna Vinschen
  2012-05-23 16:27                 ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-23  8:53 UTC (permalink / raw)
  To: cygwin

On May 22 15:25, Otto Meta wrote:
> >> Testcase cancel deferred:
> >> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
> >> and 1.7.15-1.
> > If that works in the snapshot anyway, I'm not going to look into that
> > one.
> 
> It worked in the reduced testcase with sem_wait(). With read() it’s
> still half-broken. See below.
> 
> >> Testcase cancel asynchronous:
> >> Async cancel seems to have no effect with any tested version.
> > I think I found a solution for this problem.  See the comment in the
> > patch at
> > http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259
> > Please test the today's developer snapshot.
> 
> Asynchronous cancel seems to work as well as deferred cancel now. Thanks.
> 
> Both cancel types work with sem_wait() and pause() now, but for threads
> blocked in read() they’re still unreliable. Only one of three blocked
> threads is killed in the attached updated testcases.

Just to let you know I'm working on it.  This will take some time.
During debugging I stumbled over a heisenbug.  As soon as I remove the
"Thread %i woke up just fine" printf from your test application, the
read function reurns with a "Bad address" error.  So far I have onlya
vague hunch what the cause may be.  Stay tuned.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-23  8:53               ` Corinna Vinschen
@ 2012-05-23 16:27                 ` Corinna Vinschen
  2012-05-23 17:24                   ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-23 16:27 UTC (permalink / raw)
  To: cygwin

On May 23 10:52, Corinna Vinschen wrote:
> On May 22 15:25, Otto Meta wrote:
> > >> Testcase cancel deferred:
> > >> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
> > >> and 1.7.15-1.
> > > If that works in the snapshot anyway, I'm not going to look into that
> > > one.
> > 
> > It worked in the reduced testcase with sem_wait(). With read() it’s
> > still half-broken. See below.
> > 
> > >> Testcase cancel asynchronous:
> > >> Async cancel seems to have no effect with any tested version.
> > > I think I found a solution for this problem.  See the comment in the
> > > patch at
> > > http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259
> > > Please test the today's developer snapshot.
> > 
> > Asynchronous cancel seems to work as well as deferred cancel now. Thanks.
> > 
> > Both cancel types work with sem_wait() and pause() now, but for threads
> > blocked in read() they’re still unreliable. Only one of three blocked
> > threads is killed in the attached updated testcases.
> 
> Just to let you know I'm working on it.  This will take some time.
> During debugging I stumbled over a heisenbug.  As soon as I remove the
> "Thread %i woke up just fine" printf from your test application, the
> read function reurns with a "Bad address" error.  So far I have onlya
> vague hunch what the cause may be.  Stay tuned.

Half of the solution is now checked in to CVS.  The other half is a bad
hack to workaround a shortcoming in newlib's stdio functions.  I'd rather
have a solution in newlib.  see my request on the newlib ML:
http://cygwin.com/ml/newlib/2012/msg00188.html


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-23 16:27                 ` Corinna Vinschen
@ 2012-05-23 17:24                   ` Corinna Vinschen
  2012-05-23 17:44                     ` David Rothenberger
  0 siblings, 1 reply; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-23 17:24 UTC (permalink / raw)
  To: cygwin

On May 23 18:06, Corinna Vinschen wrote:
> On May 23 10:52, Corinna Vinschen wrote:
> > On May 22 15:25, Otto Meta wrote:
> > > >> Testcase cancel deferred:
> > > >> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
> > > >> and 1.7.15-1.
> > > > If that works in the snapshot anyway, I'm not going to look into that
> > > > one.
> > > 
> > > It worked in the reduced testcase with sem_wait(). With read() it’s
> > > still half-broken. See below.
> > > 
> > > >> Testcase cancel asynchronous:
> > > >> Async cancel seems to have no effect with any tested version.
> > > > I think I found a solution for this problem.  See the comment in the
> > > > patch at
> > > > http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259
> > > > Please test the today's developer snapshot.
> > > 
> > > Asynchronous cancel seems to work as well as deferred cancel now. Thanks.
> > > 
> > > Both cancel types work with sem_wait() and pause() now, but for threads
> > > blocked in read() they’re still unreliable. Only one of three blocked
> > > threads is killed in the attached updated testcases.
> > 
> > Just to let you know I'm working on it.  This will take some time.
> > During debugging I stumbled over a heisenbug.  As soon as I remove the
> > "Thread %i woke up just fine" printf from your test application, the
> > read function reurns with a "Bad address" error.  So far I have onlya
> > vague hunch what the cause may be.  Stay tuned.
> 
> Half of the solution is now checked in to CVS.  The other half is a bad
> hack to workaround a shortcoming in newlib's stdio functions.  I'd rather
> have a solution in newlib.  see my request on the newlib ML:
> http://cygwin.com/ml/newlib/2012/msg00188.html

Ok, for the time being I checked in my workaround.  Please test the
today's developer snapshot.


THanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-23 17:24                   ` Corinna Vinschen
@ 2012-05-23 17:44                     ` David Rothenberger
  2012-05-23 18:26                       ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: David Rothenberger @ 2012-05-23 17:44 UTC (permalink / raw)
  To: cygwin

On 5/23/2012 10:18 AM, Corinna Vinschen wrote:
> On May 23 18:06, Corinna Vinschen wrote:
>> On May 23 10:52, Corinna Vinschen wrote:
>>> On May 22 15:25, Otto Meta wrote:
>>>>>> Testcase cancel deferred:
>>>>>> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
>>>>>> and 1.7.15-1.
>>>>> If that works in the snapshot anyway, I'm not going to look into that
>>>>> one.
>>>>
>>>> It worked in the reduced testcase with sem_wait(). With read() itÂ’s
>>>> still half-broken. See below.
>>>>
>>>>>> Testcase cancel asynchronous:
>>>>>> Async cancel seems to have no effect with any tested version.
>>>>> I think I found a solution for this problem.  See the comment in the
>>>>> patch at
>>>>> http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259
>>>>> Please test the today's developer snapshot.
>>>>
>>>> Asynchronous cancel seems to work as well as deferred cancel now. Thanks.
>>>>
>>>> Both cancel types work with sem_wait() and pause() now, but for threads
>>>> blocked in read() theyÂ’re still unreliable. Only one of three blocked
>>>> threads is killed in the attached updated testcases.
>>>
>>> Just to let you know I'm working on it.  This will take some time.
>>> During debugging I stumbled over a heisenbug.  As soon as I remove the
>>> "Thread %i woke up just fine" printf from your test application, the
>>> read function reurns with a "Bad address" error.  So far I have onlya
>>> vague hunch what the cause may be.  Stay tuned.
>>
>> Half of the solution is now checked in to CVS.  The other half is a bad
>> hack to workaround a shortcoming in newlib's stdio functions.  I'd rather
>> have a solution in newlib.  see my request on the newlib ML:
>> http://cygwin.com/ml/newlib/2012/msg00188.html
> 
> Ok, for the time being I checked in my workaround.  Please test the
> today's developer snapshot.

I tried installing this snapshot and found most things hung.
Specifically, I ran ash in a Windows cmd window, then tried

  /bin/echo foo

I tried mintty too but bash hangs before I get a prompt.

"echo foo" worked fine, though.

-- 
David Rothenberger  ----  daveroth@acm.org

Glib's Fourth Law of Unreliability:
        Investment in reliability will increase until it exceeds the
        probable cost of errors, or until someone insists on getting
        some useful work done.

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-23 17:44                     ` David Rothenberger
@ 2012-05-23 18:26                       ` Corinna Vinschen
  2012-05-23 20:26                         ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-23 18:26 UTC (permalink / raw)
  To: cygwin

On May 23 10:42, David Rothenberger wrote:
> On 5/23/2012 10:18 AM, Corinna Vinschen wrote:
> > On May 23 18:06, Corinna Vinschen wrote:
> >> On May 23 10:52, Corinna Vinschen wrote:
> >>> On May 22 15:25, Otto Meta wrote:
> >>>>>> Testcase cancel deferred:
> >>>>>> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1
> >>>>>> and 1.7.15-1.
> >>>>> If that works in the snapshot anyway, I'm not going to look into that
> >>>>> one.
> >>>>
> >>>> It worked in the reduced testcase with sem_wait(). With read() it’s
> >>>> still half-broken. See below.
> >>>>
> >>>>>> Testcase cancel asynchronous:
> >>>>>> Async cancel seems to have no effect with any tested version.
> >>>>> I think I found a solution for this problem.  See the comment in the
> >>>>> patch at
> >>>>> http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259
> >>>>> Please test the today's developer snapshot.
> >>>>
> >>>> Asynchronous cancel seems to work as well as deferred cancel now. Thanks.
> >>>>
> >>>> Both cancel types work with sem_wait() and pause() now, but for threads
> >>>> blocked in read() they’re still unreliable. Only one of three blocked
> >>>> threads is killed in the attached updated testcases.
> >>>
> >>> Just to let you know I'm working on it.  This will take some time.
> >>> During debugging I stumbled over a heisenbug.  As soon as I remove the
> >>> "Thread %i woke up just fine" printf from your test application, the
> >>> read function reurns with a "Bad address" error.  So far I have onlya
> >>> vague hunch what the cause may be.  Stay tuned.
> >>
> >> Half of the solution is now checked in to CVS.  The other half is a bad
> >> hack to workaround a shortcoming in newlib's stdio functions.  I'd rather
> >> have a solution in newlib.  see my request on the newlib ML:
> >> http://cygwin.com/ml/newlib/2012/msg00188.html
> > 
> > Ok, for the time being I checked in my workaround.  Please test the
> > today's developer snapshot.
> 
> I tried installing this snapshot and found most things hung.
> Specifically, I ran ash in a Windows cmd window, then tried
> 
>   /bin/echo foo
> 
> I tried mintty too but bash hangs before I get a prompt.

Big fat sigh.  This all worked fine while debugging.  Just that the
snapshot is built with optimization and my debugging version is not.
Ok, back to the drawing board.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-23 18:26                       ` Corinna Vinschen
@ 2012-05-23 20:26                         ` Corinna Vinschen
  2012-05-24  5:52                           ` David Rothenberger
  2012-05-24 10:36                           ` Otto Meta
  0 siblings, 2 replies; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-23 20:26 UTC (permalink / raw)
  To: cygwin

On May 23 19:54, Corinna Vinschen wrote:
> On May 23 10:42, David Rothenberger wrote:
> > On 5/23/2012 10:18 AM, Corinna Vinschen wrote:
> > > Ok, for the time being I checked in my workaround.  Please test the
> > > today's developer snapshot.
> > 
> > I tried installing this snapshot and found most things hung.
> > Specifically, I ran ash in a Windows cmd window, then tried
> > 
> >   /bin/echo foo
> > 
> > I tried mintty too but bash hangs before I get a prompt.
> 
> Big fat sigh.  This all worked fine while debugging.  Just that the
> snapshot is built with optimization and my debugging version is not.
> Ok, back to the drawing board.

I think I found the problem.  I've uploaded a new snapshot.  Please give
it a try.


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-23 20:26                         ` Corinna Vinschen
@ 2012-05-24  5:52                           ` David Rothenberger
  2012-05-24  7:07                             ` Corinna Vinschen
  2012-05-24 10:36                           ` Otto Meta
  1 sibling, 1 reply; 24+ messages in thread
From: David Rothenberger @ 2012-05-24  5:52 UTC (permalink / raw)
  To: cygwin

On 5/23/2012 1:10 PM, Corinna Vinschen wrote:
> On May 23 19:54, Corinna Vinschen wrote:
>> On May 23 10:42, David Rothenberger wrote:
>>> On 5/23/2012 10:18 AM, Corinna Vinschen wrote:
>>>> Ok, for the time being I checked in my workaround.  Please test the
>>>> today's developer snapshot.
>>>
>>> I tried installing this snapshot and found most things hung.
>>> Specifically, I ran ash in a Windows cmd window, then tried
>>>
>>>   /bin/echo foo
>>>
>>> I tried mintty too but bash hangs before I get a prompt.
>>
>> Big fat sigh.  This all worked fine while debugging.  Just that the
>> snapshot is built with optimization and my debugging version is not.
>> Ok, back to the drawing board.
> 
> I think I found the problem.  I've uploaded a new snapshot.  Please give
> it a try.

Works for me now. I also ran the libapr1 tests in case this touched any
of the various mutex stuff and they all passed, too.

-- 
David Rothenberger  ----  daveroth@acm.org

bug, n:
        A son of a glitch.

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-24  5:52                           ` David Rothenberger
@ 2012-05-24  7:07                             ` Corinna Vinschen
  0 siblings, 0 replies; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-24  7:07 UTC (permalink / raw)
  To: cygwin

On May 23 13:33, David Rothenberger wrote:
> On 5/23/2012 1:10 PM, Corinna Vinschen wrote:
> > On May 23 19:54, Corinna Vinschen wrote:
> >> On May 23 10:42, David Rothenberger wrote:
> >>> On 5/23/2012 10:18 AM, Corinna Vinschen wrote:
> >>>> Ok, for the time being I checked in my workaround.  Please test the
> >>>> today's developer snapshot.
> >>>
> >>> I tried installing this snapshot and found most things hung.
> >>> Specifically, I ran ash in a Windows cmd window, then tried
> >>>
> >>>   /bin/echo foo
> >>>
> >>> I tried mintty too but bash hangs before I get a prompt.
> >>
> >> Big fat sigh.  This all worked fine while debugging.  Just that the
> >> snapshot is built with optimization and my debugging version is not.
> >> Ok, back to the drawing board.
> > 
> > I think I found the problem.  I've uploaded a new snapshot.  Please give
> > it a try.
> 
> Works for me now. I also ran the libapr1 tests in case this touched any
> of the various mutex stuff and they all passed, too.

Thanks!


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-23 20:26                         ` Corinna Vinschen
  2012-05-24  5:52                           ` David Rothenberger
@ 2012-05-24 10:36                           ` Otto Meta
  2012-05-24 10:59                             ` Otto Meta
  1 sibling, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-24 10:36 UTC (permalink / raw)
  To: cygwin, cygwin

[-- Attachment #1: Type: text/plain, Size: 375 bytes --]

> I think I found the problem.  I've uploaded a new snapshot.  Please give
> it a try.

My testcases for asynchronous and deferred cancel work on threads
blocked in sem_wait() but still fail mostly on threads blocked in
read(STDIN_FILENO, ...), same as before. Sorry about that.

$ uname -v
20120523 21:51:34

Fresh output of cygcheck -s -v -r attached, if that helps.

Otto

[-- Attachment #2: cygcheck.out --]
[-- Type: text/plain, Size: 31171 bytes --]


Cygwin Configuration Diagnostics
Current System Time: Thu May 24 10:47:11 2012

Windows 7 Enterprise Ver 6.1 Build 7601 Service Pack 1

Running under WOW64 on AMD64

Path:	D:\Software\cygwin\usr\local\bin
	D:\Software\cygwin\bin
	C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin
	C:\WinAVR-20100110\bin
	C:\WinAVR-20100110\utils\bin
	C:\Windows\system32
	C:\Windows
	C:\Windows\System32\Wbem
	C:\Windows\System32\WindowsPowerShell\v1.0
	C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared
	C:\Program Files (x86)\Common Files\Roxio Shared\9.0\DLLShared
	C:\Program Files\MATLAB\R2008a\bin
	C:\Program Files\MATLAB\R2008a\bin\win64
	C:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn
	C:\Program Files (x86)\IVI Foundation\IVI\bin
	C:\Program Files\IVI Foundation\IVI\bin
	C:\Program Files (x86)\IVI Foundation\VISA\winnt\agvisa
	C:\Program Files (x86)\IVI Foundation\VISA\winnt\bin
	C:\Program Files (x86)\NASM
	C:\Program Files (x86)\Atmel\Flip 3.4.1\bin
	D:\Software\Python3.2

Output from D:\Software\cygwin\bin\id.exe
UID: 1000(MBA)     GID: 513(None)
=513(None)             545(Benutzer)          1005(Debuggerbenutzer)

SysDir: C:\Windows\system32
WinDir: C:\Windows

USER = 'MBA'
PWD = '/tmp'
HOME = '/home/MBA'

HOMEPATH = '\Users\MBA'
MANPATH = '/usr/local/man:/usr/share/man:/usr/man:'
APPDATA = 'C:\Users\MBA\AppData\Roaming'
ProgramW6432 = 'C:\Program Files'
HOSTNAME = 'TempleOfTheDog'
SHELL = '/bin/bash'
TERM = 'cygwin'
RoxioCentral = 'C:\Program Files (x86)\Common Files\Roxio Shared\9.0\Roxio Central33\'
PROCESSOR_IDENTIFIER = 'Intel64 Family 6 Model 23 Stepping 10, GenuineIntel'
WINDIR = 'C:\Windows'
VXIPNPPATH64 = 'C:\Program Files\IVI Foundation\VISA\'
PUBLIC = 'C:\Users\Public'
OLDPWD = '/tmp'
USERDOMAIN = 'TEMPLEOFTHEDOG'
CommonProgramFiles(x86) = 'C:\Program Files (x86)\Common Files'
OS = 'Windows_NT'
ALLUSERSPROFILE = 'C:\ProgramData'
!:: = '::\'
temp = 'C:\Users\MBA\AppData\Local\Temp'
VS90COMNTOOLS = 'C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\'
COMMONPROGRAMFILES = 'C:\Program Files (x86)\Common Files'
tmp = 'C:\Users\MBA\AppData\Local\Temp'
VXIPNPPATH = 'C:\Program Files (x86)\IVI Foundation\VISA\'
USERNAME = 'MBA'
PROCESSOR_LEVEL = '6'
ProgramFiles(x86) = 'C:\Program Files (x86)'
PSModulePath = 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\'
IVIROOTDIR32 = 'C:\Program Files (x86)\IVI Foundation\IVI\'
FP_NO_HOST_CHECK = 'NO'
CARBON_MEM_DISABLE = '1'
SYSTEMDRIVE = 'C:'
PROCESSOR_ARCHITEW6432 = 'AMD64'
LANG = 'de_DE.UTF-8'
USERPROFILE = 'C:\Users\MBA'
TZ = 'Europe/Berlin'
PS1 = '\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
LOGONSERVER = '\\TEMPLEOFTHEDOG'
CommonProgramW6432 = 'C:\Program Files\Common Files'
PROCESSOR_ARCHITECTURE = 'x86'
LOCALAPPDATA = 'C:\Users\MBA\AppData\Local'
HISTCONTROL = 'ignoredups'
ProgramData = 'C:\ProgramData'
SHLVL = '1'
IVIROOTDIR64 = 'C:\Program Files\IVI Foundation\IVI\'
PATHEXT = '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'
HOMEDRIVE = 'C:'
!D: = 'D:\Software\cygwin\bin'
PROMPT = '$P$G'
COMSPEC = 'C:\Windows\system32\cmd.exe'
SYSTEMROOT = 'C:\Windows'
PRINTER = 'KONICA MINOLTA Universal PS'
PROCESSOR_REVISION = '170a'
UGII_3DCONNEXION_LIBRARY = '%UGII_BASE_DIR%\ugalliance\vendor\startup\3DxNX.dll'
INFOPATH = '/usr/local/info:/usr/share/info:/usr/info:'
PROGRAMFILES = 'C:\Program Files (x86)'
NUMBER_OF_PROCESSORS = '2'
AVR32_HOME = 'C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain'
SESSIONNAME = 'Console'
COMPUTERNAME = 'TEMPLEOFTHEDOG'
_ = '/usr/bin/cygcheck'

HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin
HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2
HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\Program Options
HKEY_CURRENT_USER\Software\Cygwin
HKEY_CURRENT_USER\Software\Cygwin\Installations
  (default) = '\??\D:\Software\cygwin'
HKEY_CURRENT_USER\Software\Cygwin\Program Options
HKEY_CURRENT_USER\Software\Cygwin\setup
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\Installations
  (default) = '\??\D:\Software\cygwin'
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\Program Options
HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup
  (default) = 'D:\Software\cygwin'

obcaseinsensitive set to 1

Cygwin installations found in the registry:
  System: Key: d1d85fb7bc451065 Path: D:\Software\cygwin
  User:   Key: d1d85fb7bc451065 Path: D:\Software\cygwin

c:  hd  NTFS     76837Mb  64% CP CS UN PA FC     Windows-System
d:  hd  NTFS    399999Mb  15% CP CS UN PA FC     Daten
e:  cd             N/A    N/A                    

D:\Software\cygwin      /          system  binary,auto
D:\Software\cygwin\bin  /usr/bin   system  binary,auto
D:\Software\cygwin\lib  /usr/lib   system  binary,auto
cygdrive prefix         /cygdrive  user    binary,auto

Found: D:\Software\cygwin\bin\awk
 -> D:\Software\cygwin\bin\gawk.exe
Found: D:\Software\cygwin\bin\bash.exe
Found: D:\Software\cygwin\bin\cat.exe
Found: C:\WinAVR-20100110\utils\bin\cat.exe
Warning: D:\Software\cygwin\bin\cat.exe hides C:\WinAVR-20100110\utils\bin\cat.exe
Found: D:\Software\cygwin\bin\cp.exe
Found: C:\WinAVR-20100110\utils\bin\cp.exe
Warning: D:\Software\cygwin\bin\cp.exe hides C:\WinAVR-20100110\utils\bin\cp.exe
Found: D:\Software\cygwin\bin\cpp.exe
 -> D:\Software\cygwin\etc\alternatives\cpp
 -> D:\Software\cygwin\bin\cpp-4.exe
Not Found: crontab
Found: D:\Software\cygwin\bin\find.exe
Found: C:\WinAVR-20100110\utils\bin\find.exe
Warning: D:\Software\cygwin\bin\find.exe hides C:\WinAVR-20100110\utils\bin\find.exe
Found: C:\Windows\system32\find.exe
Warning: D:\Software\cygwin\bin\find.exe hides C:\Windows\system32\find.exe
Found: D:\Software\cygwin\bin\gcc.exe
 -> D:\Software\cygwin\etc\alternatives\gcc
 -> D:\Software\cygwin\bin\gcc-4.exe
Not Found: gdb
Found: D:\Software\cygwin\bin\grep.exe
Found: C:\WinAVR-20100110\utils\bin\grep.exe
Warning: D:\Software\cygwin\bin\grep.exe hides C:\WinAVR-20100110\utils\bin\grep.exe
Found: D:\Software\cygwin\bin\kill.exe
Found: D:\Software\cygwin\bin\ld.exe
Found: D:\Software\cygwin\bin\ls.exe
Found: C:\WinAVR-20100110\utils\bin\ls.exe
Warning: D:\Software\cygwin\bin\ls.exe hides C:\WinAVR-20100110\utils\bin\ls.exe
Found: D:\Software\cygwin\bin\make.exe
Found: C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\make.exe
Warning: D:\Software\cygwin\bin\make.exe hides C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\make.exe
Found: C:\WinAVR-20100110\utils\bin\make.exe
Warning: D:\Software\cygwin\bin\make.exe hides C:\WinAVR-20100110\utils\bin\make.exe
Found: D:\Software\cygwin\bin\mv.exe
Found: C:\WinAVR-20100110\utils\bin\mv.exe
Warning: D:\Software\cygwin\bin\mv.exe hides C:\WinAVR-20100110\utils\bin\mv.exe
Found: C:\WinAVR-20100110\utils\bin\patch.exe
Found: D:\Software\cygwin\bin\perl.exe
Found: D:\Software\cygwin\bin\rm.exe
Found: C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\rm.exe
Warning: D:\Software\cygwin\bin\rm.exe hides C:\Program Files (x86)\Atmel\AVR Tools\AVR32 Toolchain\bin\rm.exe
Found: C:\WinAVR-20100110\utils\bin\rm.exe
Warning: D:\Software\cygwin\bin\rm.exe hides C:\WinAVR-20100110\utils\bin\rm.exe
Found: D:\Software\cygwin\bin\sed.exe
Found: C:\WinAVR-20100110\utils\bin\sed.exe
Warning: D:\Software\cygwin\bin\sed.exe hides C:\WinAVR-20100110\utils\bin\sed.exe
Not Found: ssh
Found: D:\Software\cygwin\bin\sh.exe
Found: C:\WinAVR-20100110\utils\bin\sh.exe
Warning: D:\Software\cygwin\bin\sh.exe hides C:\WinAVR-20100110\utils\bin\sh.exe
Found: D:\Software\cygwin\bin\tar.exe
Found: C:\WinAVR-20100110\utils\bin\tar.exe
Warning: D:\Software\cygwin\bin\tar.exe hides C:\WinAVR-20100110\utils\bin\tar.exe
Found: D:\Software\cygwin\bin\test.exe
Found: C:\WinAVR-20100110\utils\bin\test.exe
Warning: D:\Software\cygwin\bin\test.exe hides C:\WinAVR-20100110\utils\bin\test.exe
Not Found: vi
Not Found: vim

   14k 2012/05/04 D:\Software\cygwin\bin\cygattr-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygattr-1.dll" v0.0 ts=2012/5/4 12:35
  118k 2012/02/29 D:\Software\cygwin\bin\cygblkid-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygblkid-1.dll" v0.0 ts=2012/2/29 3:57
   62k 2011/05/21 D:\Software\cygwin\bin\cygbz2-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygbz2-1.dll" v0.0 ts=2011/5/21 20:16
  108k 2010/01/05 D:\Software\cygwin\bin\cygcloog-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygcloog-0.dll" v0.0 ts=2010/1/5 0:45
    7k 2012/05/07 D:\Software\cygwin\bin\cygcrypt-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygcrypt-0.dll" v0.0 ts=2012/5/7 12:18
 1246k 2012/04/24 D:\Software\cygwin\bin\cygcrypto-0.9.8.dll - os=4.0 img=1.0 sys=4.0
                  "cygcrypto-0.9.8.dll" v0.0 ts=2012/4/24 10:06
  929k 2011/11/10 D:\Software\cygwin\bin\cygdb-4.5.dll - os=4.0 img=1.0 sys=4.0
                  "cygdb-4.5.dll" v0.0 ts=2011/11/10 19:52
   93k 2011/11/10 D:\Software\cygwin\bin\cygdb_cxx-4.5.dll - os=4.0 img=1.0 sys=4.0
                  "cygdb_cxx-4.5.dll" v0.0 ts=2011/11/10 19:53
   66k 2010/06/02 D:\Software\cygwin\bin\cygelf-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygelf-0.dll" v0.8 ts=2010/6/2 14:08
  118k 2008/05/09 D:\Software\cygwin\bin\cygexpat-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygexpat-1.dll" v0.0 ts=2008/5/9 5:03
   21k 2011/10/26 D:\Software\cygwin\bin\cygffi-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygffi-4.dll" v0.0 ts=2011/10/23 14:33
  175k 2012/02/03 D:\Software\cygwin\bin\cygfontconfig-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygfontconfig-1.dll" v0.0 ts=2012/2/3 8:53
   20k 2010/10/31 D:\Software\cygwin\bin\cygfontenc-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygfontenc-1.dll" v0.0 ts=2010/10/31 20:19
   43k 2010/01/02 D:\Software\cygwin\bin\cygform-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygform-10.dll" v0.0 ts=2010/1/2 14:49
   40k 2009/03/01 D:\Software\cygwin\bin\cygform-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygform-8.dll" v0.0 ts=2009/3/1 6:32
   43k 2009/11/20 D:\Software\cygwin\bin\cygform-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygform-9.dll" v0.0 ts=2009/11/20 19:14
   47k 2010/01/02 D:\Software\cygwin\bin\cygformw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygformw-10.dll" v0.0 ts=2010/1/2 17:31
  505k 2012/03/27 D:\Software\cygwin\bin\cygfreetype-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygfreetype-6.dll" v0.0 ts=2012/3/27 5:27
   79k 2011/10/26 D:\Software\cygwin\bin\cyggcc_s-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyggcc_s-1.dll" v0.0 ts=2011/10/23 14:15
  449k 2011/05/20 D:\Software\cygwin\bin\cyggcrypt-11.dll - os=4.0 img=1.0 sys=4.0
                  "cyggcrypt-11.dll" v0.0 ts=2011/5/20 3:29
   19k 2009/02/26 D:\Software\cygwin\bin\cyggdbm-4.dll - os=4.0 img=1.0 sys=4.0
                  "cyggdbm-4.dll" v0.0 ts=2009/2/26 7:58
    8k 2009/02/26 D:\Software\cygwin\bin\cyggdbm_compat-4.dll - os=4.0 img=1.0 sys=4.0
                  "cyggdbm_compat-4.dll" v0.0 ts=2009/2/26 7:58
  325k 2012/02/05 D:\Software\cygwin\bin\cygGL-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygGL-1.dll" v0.0 ts=2012/2/5 7:13
  159k 2012/02/05 D:\Software\cygwin\bin\cygglapi-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygglapi-0.dll" v0.0 ts=2012/2/5 6:58
  317k 2011/07/31 D:\Software\cygwin\bin\cyggmp-3.dll - os=4.0 img=1.0 sys=4.0
                  "cyggmp-3.dll" v0.0 ts=2011/7/31 6:14
   14k 2011/07/31 D:\Software\cygwin\bin\cyggmpxx-4.dll - os=4.0 img=1.0 sys=4.0
                  "cyggmpxx-4.dll" v0.0 ts=2011/7/31 11:31
   42k 2011/10/26 D:\Software\cygwin\bin\cyggomp-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyggomp-1.dll" v0.0 ts=2011/10/23 14:21
   14k 2011/05/20 D:\Software\cygwin\bin\cyggpg-error-0.dll - os=4.0 img=1.0 sys=4.0
                  "cyggpg-error-0.dll" v0.0 ts=2011/5/20 3:04
   25k 2012/05/04 D:\Software\cygwin\bin\cyghistory7.dll - os=4.0 img=1.0 sys=4.0
                  "cyghistory7.dll" v0.0 ts=2012/5/4 22:07
   74k 2010/10/31 D:\Software\cygwin\bin\cygICE-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygICE-6.dll" v0.0 ts=2010/10/31 20:18
  358k 2012/04/14 D:\Software\cygwin\bin\cygicons-0.dll - os=4.0 img=1.4 sys=4.0
                  "cygicons-0.dll" v0.0 ts=2012/4/14 2:48
  985k 2011/10/16 D:\Software\cygwin\bin\cygiconv-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygiconv-2.dll" v0.0 ts=2011/10/16 18:01
   31k 2005/11/20 D:\Software\cygwin\bin\cygintl-3.dll - os=4.0 img=1.0 sys=4.0
                  "cygintl-3.dll" v0.0 ts=2005/11/20 2:04
   35k 2011/10/16 D:\Software\cygwin\bin\cygintl-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygintl-8.dll" v0.0 ts=2011/10/16 6:38
12928k 2012/01/24 D:\Software\cygwin\bin\cygLLVM-3.0.dll - os=4.0 img=1.0 sys=4.0
                  "cygLLVM-3.0.dll" v0.0 ts=2012/1/24 12:03
    5k 2012/05/09 D:\Software\cygwin\bin\cyglsa.dll - os=4.0 img=1.0 sys=4.0
                  "cyglsa.dll" v0.0 ts=2012/5/9 9:26
    9k 2012/05/09 D:\Software\cygwin\bin\cyglsa64.dll - os=5.2 img=0.0 sys=5.2
  125k 2010/04/09 D:\Software\cygwin\bin\cyglzma-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyglzma-1.dll" v0.0 ts=2010/4/9 16:54
  123k 2011/05/19 D:\Software\cygwin\bin\cyglzma-5.dll - os=4.0 img=1.0 sys=4.0
                  "cyglzma-5.dll" v0.0 ts=2011/5/19 3:41
   94k 2012/04/22 D:\Software\cygwin\bin\cygmagic-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygmagic-1.dll" v0.0 ts=2012/4/22 19:09
   25k 2010/01/02 D:\Software\cygwin\bin\cygmenu-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenu-10.dll" v0.0 ts=2010/1/2 14:48
   21k 2009/03/01 D:\Software\cygwin\bin\cygmenu-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenu-8.dll" v0.0 ts=2009/3/1 6:31
   25k 2009/11/20 D:\Software\cygwin\bin\cygmenu-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenu-9.dll" v0.0 ts=2009/11/20 19:13
   25k 2010/01/02 D:\Software\cygwin\bin\cygmenuw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygmenuw-10.dll" v0.0 ts=2010/1/2 17:30
  213k 2011/07/31 D:\Software\cygwin\bin\cygmp-3.dll - os=4.0 img=1.0 sys=4.0
                  "cygmp-3.dll" v0.0 ts=2011/7/31 6:12
   64k 2009/11/09 D:\Software\cygwin\bin\cygmpc-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygmpc-1.dll" v0.0 ts=2009/11/9 1:21
  269k 2009/06/07 D:\Software\cygwin\bin\cygmpfr-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygmpfr-1.dll" v0.0 ts=2009/6/7 22:10
 1102k 2011/08/07 D:\Software\cygwin\bin\cygmpfr-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygmpfr-4.dll" v0.0 ts=2011/8/7 2:47
   63k 2010/01/02 D:\Software\cygwin\bin\cygncurses++-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++-10.dll" v0.0 ts=2010/1/2 15:00
   66k 2009/03/01 D:\Software\cygwin\bin\cygncurses++-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++-8.dll" v0.0 ts=2009/3/1 6:39
   63k 2009/11/20 D:\Software\cygwin\bin\cygncurses++-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++-9.dll" v0.0 ts=2009/11/20 19:25
   63k 2010/01/02 D:\Software\cygwin\bin\cygncurses++w-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses++w-10.dll" v0.0 ts=2010/1/2 17:41
  195k 2010/01/02 D:\Software\cygwin\bin\cygncurses-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses-10.dll" v0.0 ts=2010/1/2 14:45
  237k 2009/03/01 D:\Software\cygwin\bin\cygncurses-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses-8.dll" v0.0 ts=2009/3/1 6:28
  198k 2009/11/20 D:\Software\cygwin\bin\cygncurses-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygncurses-9.dll" v0.0 ts=2009/11/20 19:10
  244k 2010/01/02 D:\Software\cygwin\bin\cygncursesw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygncursesw-10.dll" v0.0 ts=2010/1/2 17:28
   13k 2010/01/02 D:\Software\cygwin\bin\cygpanel-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanel-10.dll" v0.0 ts=2010/1/2 14:47
   11k 2009/03/01 D:\Software\cygwin\bin\cygpanel-8.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanel-8.dll" v0.0 ts=2009/3/1 6:30
   13k 2009/11/20 D:\Software\cygwin\bin\cygpanel-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanel-9.dll" v0.0 ts=2009/11/20 19:12
   13k 2010/01/02 D:\Software\cygwin\bin\cygpanelw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygpanelw-10.dll" v0.0 ts=2010/1/2 16:30
  255k 2012/02/10 D:\Software\cygwin\bin\cygpcre-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygpcre-0.dll" v0.0 ts=2012/2/10 10:24
 1627k 2010/08/29 D:\Software\cygwin\bin\cygperl5_10.dll - os=4.0 img=1.0 sys=4.0
                  "cygperl5_10.dll" v0.0 ts=2010/8/28 19:17
  509k 2012/03/12 D:\Software\cygwin\bin\cygpixman-1-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygpixman-1-0.dll" v0.0 ts=2012/3/12 11:06
   22k 2002/06/09 D:\Software\cygwin\bin\cygpopt-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygpopt-0.dll" v0.0 ts=2002/6/9 6:45
  695k 2009/04/18 D:\Software\cygwin\bin\cygppl-7.dll - os=4.0 img=1.0 sys=4.0
                  "cygppl-7.dll" v0.0 ts=2009/4/18 13:44
 2481k 2009/04/18 D:\Software\cygwin\bin\cygppl_c-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygppl_c-2.dll" v0.0 ts=2009/4/18 13:47
   18k 2009/04/18 D:\Software\cygwin\bin\cygpwl-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygpwl-4.dll" v0.0 ts=2009/4/18 13:44
  162k 2012/05/04 D:\Software\cygwin\bin\cygreadline7.dll - os=4.0 img=1.0 sys=4.0
                  "cygreadline7.dll" v0.0 ts=2012/5/4 22:07
    8k 2011/05/05 D:\Software\cygwin\bin\cygsigsegv-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygsigsegv-2.dll" v0.0 ts=2011/5/5 8:33
   25k 2010/10/31 D:\Software\cygwin\bin\cygSM-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygSM-6.dll" v0.0 ts=2010/10/31 20:24
 1613k 2010/12/01 D:\Software\cygwin\bin\cygsqlite3-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygsqlite3-0.dll" v0.0 ts=2010/12/1 12:20
  282k 2012/04/24 D:\Software\cygwin\bin\cygssl-0.9.8.dll - os=4.0 img=1.0 sys=4.0
                  "cygssl-0.9.8.dll" v0.0 ts=2012/4/24 10:06
    8k 2011/10/26 D:\Software\cygwin\bin\cygssp-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygssp-0.dll" v0.0 ts=2011/10/23 14:33
  780k 2011/10/26 D:\Software\cygwin\bin\cygstdc++-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygstdc++-6.dll" v0.0 ts=2011/10/23 14:58
   48k 2010/01/02 D:\Software\cygwin\bin\cygtic-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygtic-10.dll" v0.0 ts=2010/1/2 14:45
   48k 2009/11/20 D:\Software\cygwin\bin\cygtic-9.dll - os=4.0 img=1.0 sys=4.0
                  "cygtic-9.dll" v0.0 ts=2009/11/20 19:10
   48k 2010/01/02 D:\Software\cygwin\bin\cygticw-10.dll - os=4.0 img=1.0 sys=4.0
                  "cygticw-10.dll" v0.0 ts=2010/1/2 17:28
   13k 2012/02/29 D:\Software\cygwin\bin\cyguuid-1.dll - os=4.0 img=1.0 sys=4.0
                  "cyguuid-1.dll" v0.0 ts=2012/2/29 3:56
 2235k 2012/05/09 D:\Software\cygwin\bin\cygwin1-1.7.15-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygwin1.dll" v0.0 ts=2012/5/9 9:25
 2780k 2012/05/22 D:\Software\cygwin\bin\cygwin1-oldsnap.dll - os=4.0 img=1.0 sys=4.0
                  "cygwin1.dll" v0.0 ts=2012/5/22 11:32
 1045k 2011/08/22 D:\Software\cygwin\bin\cygX11-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygX11-6.dll" v0.0 ts=2011/8/22 9:25
    6k 2011/08/22 D:\Software\cygwin\bin\cygX11-xcb-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygX11-xcb-1.dll" v0.0 ts=2011/8/22 9:26
   11k 2010/08/03 D:\Software\cygwin\bin\cygXau-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXau-6.dll" v0.0 ts=2010/8/3 1:32
  337k 2011/02/04 D:\Software\cygwin\bin\cygXaw-7.dll - os=4.0 img=1.0 sys=4.0
                  "cygXaw-7.dll" v0.0 ts=2011/2/4 7:02
   75k 2010/12/21 D:\Software\cygwin\bin\cygxcb-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygxcb-1.dll" v0.0 ts=2010/12/21 1:36
   51k 2010/12/21 D:\Software\cygwin\bin\cygxcb-glx-0.dll - os=4.0 img=1.0 sys=4.0
                  "cygxcb-glx-0.dll" v0.0 ts=2010/12/21 1:36
   17k 2010/10/31 D:\Software\cygwin\bin\cygXdmcp-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXdmcp-6.dll" v0.0 ts=2010/10/31 20:29
   52k 2011/05/23 D:\Software\cygwin\bin\cygXext-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXext-6.dll" v0.0 ts=2011/5/23 9:32
   66k 2010/11/01 D:\Software\cygwin\bin\cygXft-2.dll - os=4.0 img=1.0 sys=4.0
                  "cygXft-2.dll" v0.0 ts=2010/11/1 2:10
  119k 2010/11/01 D:\Software\cygwin\bin\cygxkbfile-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygxkbfile-1.dll" v0.0 ts=2010/11/1 2:33
   75k 2010/11/01 D:\Software\cygwin\bin\cygXmu-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXmu-6.dll" v0.0 ts=2010/11/1 2:19
   11k 2010/11/01 D:\Software\cygwin\bin\cygXmuu-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygXmuu-1.dll" v0.0 ts=2010/11/1 2:19
   53k 2010/11/01 D:\Software\cygwin\bin\cygXpm-4.dll - os=4.0 img=1.0 sys=4.0
                  "cygXpm-4.dll" v0.0 ts=2010/11/1 2:19
   32k 2010/08/03 D:\Software\cygwin\bin\cygXrender-1.dll - os=4.0 img=1.0 sys=4.0
                  "cygXrender-1.dll" v0.0 ts=2010/8/3 5:48
  278k 2011/06/07 D:\Software\cygwin\bin\cygXt-6.dll - os=4.0 img=1.0 sys=4.0
                  "cygXt-6.dll" v0.0 ts=2011/6/7 4:40
   76k 2010/08/01 D:\Software\cygwin\bin\cygz.dll - os=4.0 img=1.0 sys=4.0
                  "cygz.dll" v0.0 ts=2010/8/1 22:04
 2782k 2012/05/24 D:\Software\cygwin\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
                  "cygwin1.dll" v0.0 ts=2012/5/23 20:54
    Cygwin DLL version info:
        DLL version: 1.7.16
        DLL epoch: 19
        DLL old termios: 5
        DLL malloc env: 28
        Cygwin conv: 181
        API major: 0
        API minor: 261
        Shared data: 5
        DLL identifier: cygwin1
        Mount registry: 3
        Cygwin registry name: Cygwin
        Program options name: Program Options
        Installations name: Installations
        Cygdrive default prefix: 
        Build date: 
        Snapshot date: 20120523-21:51:34
        Shared id: cygwin1S5

 1829k 2010/01/19 C:\WinAVR-20100110\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
                  "cygwin1.dll" v0.0 ts=2008/6/12 18:35
    Cygwin DLL version info:
        DLL version: 1.5.25
        DLL epoch: 19
        DLL bad signal mask: 19005
        DLL old termios: 5
        DLL malloc env: 28
        API major: 0
        API minor: 156
        Shared data: 4
        DLL identifier: cygwin1
        Mount registry: 2
        Cygnus registry name: Cygnus Solutions
        Cygwin registry name: Cygwin
        Program options name: Program Options
        Cygwin mount registry name: mounts v2
        Cygdrive flags: cygdrive flags
        Cygdrive prefix: cygdrive prefix
        Cygdrive default prefix: 
        Build date: Thu Jun 12 19:34:46 CEST 2008
        CVS tag: cr-0x5f1
        Shared id: cygwin1S4

Warning: There are multiple cygwin1.dlls on your path

Can't find the cygrunsrv utility, skipping services check.


Cygwin Package Information
Last downloaded files to: D:\Software\cygwin-install
Last downloaded files from: http://linux.rz.ruhr-uni-bochum.de/download/cygwin/

Package               Version              Status
_autorebase           000062-1             OK
_update-info-dir      01049-1              OK
alternatives          1.3.30c-10           OK
base-cygwin           3.1-1                OK
base-files            4.1-1                OK
Empty package base-passwd
base-passwd           3.1-2                OK
bash                  4.1.10-4             OK
binutils              2.22.51-2            OK
bzip2                 1.0.6-2              OK
coreutils             8.15-1               OK
crypt                 1.2-1                OK
cygutils              1.4.10-2             OK
cygwin                1.7.15-1             OK
cygwin-doc            1.7-1                OK
dash                  0.5.7-1              OK
diffutils             3.2-1                OK
dos2unix              6.0-1                OK
dri-drivers           7.11.2-1             OK
editrights            1.01-2               OK
file                  5.11-1               OK
findutils             4.5.9-2              OK
flawfinder            1.27-2               OK
font-adobe-dpi75      1.0.2-1              OK
font-alias            1.0.3-1              OK
font-encodings        1.0.4-1              OK
font-misc-misc        1.1.1-1              OK
fontconfig            2.8.0-2              OK
gawk                  4.0.1-1              OK
Empty package gcc4
gcc4                  4.5.3-3              OK
Missing file: /usr/share/locale/be/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/da/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/de/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/el/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/es/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/fr/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/ja/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/nl/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/sv/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/locale/tr/LC_MESSAGES/gcc.mo from package gcc4-core
Missing file: /usr/share/info/cpp.info.gz from package gcc4-core
Missing file: /usr/share/info/cppinternals.info.gz from package gcc4-core
Missing file: /usr/share/info/gcc.info.gz from package gcc4-core
Missing file: /usr/share/info/gccinstall.info.gz from package gcc4-core
Missing file: /usr/share/info/gccint.info.gz from package gcc4-core
Missing file: /usr/share/man/man7/fsf-funding.7.gz from package gcc4-core
Missing file: /usr/share/man/man7/gfdl.7.gz from package gcc4-core
Missing file: /usr/share/man/man7/gpl.7.gz from package gcc4-core
gcc4-core             4.5.3-3              Incomplete
gcc4-g++              4.5.3-3              OK
gettext               0.18.1.1-2           OK
grep                  2.6.3-1              OK
groff                 1.21-2               OK
gzip                  1.4-1                OK
ipc-utils             1.0-1                OK
less                  444-1                OK
libattr1              2.4.46-1             OK
libblkid1             2.21-1               OK
libbz2_1              1.0.6-2              OK
libcloog0             0.15.7-1             OK
libdb4.5              4.5.20.2-3           OK
libelf0               0.8.13-2             OK
libelf0-devel         0.8.13-2             OK
libexpat1             2.0.1-1              OK
libffi4               4.5.3-3              OK
libfontconfig1        2.8.0-2              OK
libfontenc1           1.1.0-1              OK
libfreetype6          2.4.9-2              OK
libgcc1               4.5.3-3              OK
libgcrypt11           1.4.6-1              OK
libgdbm4              1.8.3-20             OK
libGL1                7.11.2-1             OK
libglapi0             7.11.2-1             OK
libgmp3               4.3.2-1              OK
libgmpxx4             4.3.2-1              OK
libgomp1              4.5.3-3              OK
libgpg-error0         1.10-1               OK
libICE6               1.0.7-1              OK
libiconv2             1.14-2               OK
libintl3              0.14.5-1             OK
libintl8              0.18.1.1-2           OK
libllvm3.0            3.0-1                OK
liblzma1              4.999.9beta-11       OK
liblzma5              5.0.2_20110517-1     OK
libmpc1               0.8-1                OK
libmpfr1              2.4.1-4              OK
libmpfr4              3.0.1-1              OK
libncurses10          5.7-18               OK
libncurses8           5.5-10               OK
libncurses9           5.7-16               OK
libncursesw10         5.7-18               OK
libopenssl098         0.9.8w-1             OK
libpcre0              8.21-2               OK
libpixman1_0          0.24.4-1             OK
libpopt0              1.6.4-4              OK
libppl                0.10.2-1             OK
libreadline7          6.1.2-3              OK
libsigsegv2           2.10-1               OK
libSM6                1.2.0-1              OK
libsqlite3_0          3.7.3-1              OK
libssp0               4.5.3-3              OK
libstdc++6            4.5.3-3              OK
libstdc++6-devel      4.5.3-3              OK
libuuid1              2.21-1               OK
libX11-xcb1           1.4.4-1              OK
libX11_6              1.4.4-1              OK
libXau6               1.0.6-1              OK
libXaw7               1.0.9-1              OK
libxcb-glx0           1.7-2                OK
libxcb1               1.7-2                OK
libXdmcp6             1.1.0-1              OK
libXext6              1.3.0-1              OK
libXft2               2.2.0-1              OK
libxkbfile1           1.0.7-1              OK
libXmu6               1.1.0-1              OK
libXmuu1              1.1.0-1              OK
libXpm4               3.5.9-1              OK
libXrender1           0.9.6-1              OK
libXt6                1.1.1-1              OK
login                 1.10-10              OK
luit                  1.1.0-1              OK
make                  3.82.90-1            OK
man                   1.6g-1               OK
mingw-runtime         3.20-1               OK
mingw-w32api          3.17-2               OK
mingw64-i686-binutils 2.22.51-3            OK
mingw64-i686-headers  3.0b_svn4913-1       OK
mingw64-i686-pthreads 20100619-4           OK
mingw64-i686-runtime  3.0b_svn4913-1       OK
mintty                1.0.3-1              OK
mkfontdir             1.0.6-1              OK
mkfontscale           1.0.9-1              OK
nano                  2.2.5-1              OK
perl                  5.10.1-5             OK
python                2.6.7-1              OK
rebase                4.1.0-1              OK
rsync                 3.0.9-1              OK
run                   1.1.13-1             OK
sed                   4.2.1-2              OK
setxkbmap             1.2.0-1              OK
tar                   1.25-1               OK
terminfo              5.7_20091114-14      OK
terminfo0             5.5_20061104-12      OK
texinfo               4.13-4               OK
tzcode                2012b-1              OK
util-linux            2.21-1               OK
w32api                3.17-2               OK
which                 2.20-2               OK
xauth                 1.0.6-1              OK
xcursor-themes        1.0.3-1              OK
xf86-video-dummy      0.3.5-1              OK
xf86-video-nested     0.1.0-1              OK
xhost                 1.0.4-1              OK
xkbcomp               1.2.3-1              OK
xkeyboard-config      2.5.1-1              OK
xmodmap               1.0.5-1              OK
xorg-server           1.12.1-1             OK
xorg-server-common    1.12.1-1             OK
xrdb                  1.0.9-1              OK
xterm                 278-1                OK
xz                    5.0.2_20110517-1     OK
zlib                  1.2.5-1              OK
zlib-devel            1.2.5-1              OK
zlib0                 1.2.5-1              OK
Use -h to see help about each section

[-- Attachment #3: Type: text/plain, Size: 218 bytes --]

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-24 10:36                           ` Otto Meta
@ 2012-05-24 10:59                             ` Otto Meta
  2012-05-24 11:21                               ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-24 10:59 UTC (permalink / raw)
  To: cygwin

> My testcases for asynchronous and deferred cancel work on threads
> blocked in sem_wait() but still fail mostly on threads blocked in
> read(STDIN_FILENO, ...), same as before. Sorry about that.

I spoke too soon. There seems to be some kind of runtime decay and a
dependency on semaphore.h.

Running the same test or the two tests alternating works for about three
times just as expected but further runs fail as before. A reboot fixes
that and gives me another few chances. This only applies to read().
sem_wait() always works.

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.

ItÂ’s getting weirder by the day...

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-24 10:59                             ` Otto Meta
@ 2012-05-24 11:21                               ` Corinna Vinschen
  2012-05-24 15:37                                 ` Otto Meta
  0 siblings, 1 reply; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-24 11:21 UTC (permalink / raw)
  To: cygwin

On May 24 12:35, Otto Meta wrote:
> > My testcases for asynchronous and deferred cancel work on threads
> > blocked in sem_wait() but still fail mostly on threads blocked in
> > read(STDIN_FILENO, ...), same as before. Sorry about that.
> 
> I spoke too soon. There seems to be some kind of runtime decay and a
> dependency on semaphore.h.
> 
> Running the same test or the two tests alternating works for about three
> times just as expected but further runs fail as before. A reboot fixes
> that and gives me another few chances. This only applies to read().

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.

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.

> sem_wait() always works.
> 
> 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.  This is
under W7 on a dual-core machine.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-24 11:21                               ` Corinna Vinschen
@ 2012-05-24 15:37                                 ` Otto Meta
  2012-05-24 16:14                                   ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-24 15:37 UTC (permalink / raw)
  To: cygwin

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-24 15:37                                 ` Otto Meta
@ 2012-05-24 16:14                                   ` Corinna Vinschen
  2012-05-24 19:15                                     ` Otto Meta
  0 siblings, 1 reply; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-24 16:14 UTC (permalink / raw)
  To: cygwin

On May 24 17:03, Otto Meta wrote:
> 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.

Weird.  I tried under CMD now as well, but it still runs and runs and
runs, without a failure.  Tested on XP, W7, and 2008 R2.

Another idea is that your system also fails due to the problem reported
in http://cygwin.com/ml/cygwin/2012-05/msg00522.html
I'm just about to generate another snapshot.  You could see if that
helps for some reason.  I doubt it, but still...


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-24 16:14                                   ` Corinna Vinschen
@ 2012-05-24 19:15                                     ` Otto Meta
  2012-05-25 10:04                                       ` Corinna Vinschen
  0 siblings, 1 reply; 24+ messages in thread
From: Otto Meta @ 2012-05-24 19:15 UTC (permalink / raw)
  To: cygwin

> Weird.  I tried under CMD now as well, but it still runs and runs and
> runs, without a failure.  Tested on XP, W7, and 2008 R2.

Maybe It’s Just Me then.

> Another idea is that your system also fails due to the problem reported
> in http://cygwin.com/ml/cygwin/2012-05/msg00522.html
> I'm just about to generate another snapshot.  You could see if that
> helps for some reason.  I doubt it, but still...

No change.

$ sleep 0.001; ./testcase_cancel_asynchronous
Fails.

$ sleep 0.1; ./testcase_cancel_asynchronous
Succeeds.

:-?

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-24 19:15                                     ` Otto Meta
@ 2012-05-25 10:04                                       ` Corinna Vinschen
  0 siblings, 0 replies; 24+ messages in thread
From: Corinna Vinschen @ 2012-05-25 10:04 UTC (permalink / raw)
  To: cygwin

On May 24 18:34, Otto Meta wrote:
> > Weird.  I tried under CMD now as well, but it still runs and runs and
> > runs, without a failure.  Tested on XP, W7, and 2008 R2.
> 
> Maybe It’s Just Me then.
> 
> > Another idea is that your system also fails due to the problem reported
> > in http://cygwin.com/ml/cygwin/2012-05/msg00522.html
> > I'm just about to generate another snapshot.  You could see if that
> > helps for some reason.  I doubt it, but still...
> 
> No change.
> 
> $ sleep 0.001; ./testcase_cancel_asynchronous
> Fails.
> 
> $ sleep 0.1; ./testcase_cancel_asynchronous
> Succeeds.
> 
> :-?

??? This effect doesn't make any sense.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected
  2012-05-22 11:03           ` Corinna Vinschen
  2012-05-22 13:26             ` Otto Meta
@ 2012-07-11 12:36             ` Otto Meta
  1 sibling, 0 replies; 24+ messages in thread
From: Otto Meta @ 2012-07-11 12:36 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 941 bytes --]

On 2012-05-22 13:02, Corinna Vinschen wrote:
[...]
>> 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.

Is this problem still in the queue? The newest snapshot yields the
same results as before.

$ uname -srv
CYGWIN_NT-6.1-WOW64 1.7.16s(0.261/5/3) 20120708 00:52:15

I attached a slightly simpler version of the testcase.

Test output:

  Sending SIGUSR1 to thread 2
  Thread 0 encountered an error: Interrupted system call

  Sending SIGUSR1 to thread 1
  Thread 1 executes signal handler
  Thread 1 encountered an error: Interrupted system call

  Sending SIGUSR1 to thread 0
  Thread 2 executes signal handler
  Thread 2 encountered an error: Interrupted system call

Otto

[-- Attachment #2: testcase_signal.c --]
[-- Type: text/x-csrc, Size: 2227 bytes --]

#include <errno.h>
#include <pthread.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

pthread_t tids[3];

static void* simplethread(void *arg) {
  int *intptr = (int*)arg;
  pthread_t self = pthread_self();
  fprintf(stderr, "Thread %i starting (%p)\n", *intptr, self);

  while (1) {
    if (pause() != 0) {
      fprintf(stderr, "Thread %i encountered an error: %s (%p)\n",
          *intptr, strerror(errno), self);
    } else {
      fprintf(stderr, "Thread %i woke up just fine\n", *intptr);
    }
  }

  return NULL;
}

static void sigusr1_handler(int signal __attribute((unused))) {
  pthread_t self = pthread_self();

  // Search for thread number
  int tnum = 0;
  while (tnum < 3) {
    if (tids[tnum] == self) {
      break;
    }
    tnum++;
  }

  fprintf(stderr, "Thread %i executes signal handler (%p)\n", tnum, self);
}

static void install_handler(void) {
  struct sigaction act;
  act.sa_handler = &sigusr1_handler;
  sigemptyset(&(act.sa_mask));
  act.sa_flags = 0;

  // Install signal handler
  if (sigaction(SIGUSR1, &act, NULL) != 0) {
    fprintf(stderr, "Can't set signal handler: %s\n", strerror(errno));
    exit(1);
  }

  // Make sure SIGUSR1 is not blocked
  sigset_t sset;
  sigemptyset(&sset);
  sigaddset(&sset, SIGUSR1);
  if (sigprocmask(SIG_UNBLOCK, &sset, NULL) != 0) {
    fprintf(stderr, "Can't unblock SIGUSR1: %s\n", strerror(errno));
  }
}

int main() {
  fprintf(stderr, "Testing pthread_kill()\n\n");

  int i;
  int result;

  install_handler();

  // Create threads
  for (i=0; i<3; i++) {
    int *intptr = (int*)malloc(sizeof(int));
    *intptr = i;
    result = pthread_create(tids+i, NULL, &simplethread, intptr);
    if (result != 0) {
      fprintf(stderr, "Can't create thread: %s\n", strerror(result));
      return 1;
    }
  }

  sleep(1);
  install_handler();
  fprintf(stderr, "\n");

  // Poke all threads
  for (i=2; i>=0; i--) {
    fprintf(stderr, "Sending SIGUSR1 to thread %i (%p)\n", i, tids[i]);
    result = pthread_kill(tids[i], SIGUSR1);
    if (result != 0) {
      fprintf(stderr, "Error during pthread_kill: %s\n", strerror(result));
    }
    sleep(1);
    fprintf(stderr, "\n");
  }

  return 0;
}


[-- Attachment #3: Type: text/plain, Size: 218 bytes --]

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

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2012-07-11 12:36 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-09 17:50 1.7.14-2: pthread_cancel and pthread_kill not working as expected Otto Meta
2012-05-18 10:23 ` 1.7.15-1: " Otto Meta
2012-05-18 11:43   ` Earnie Boyd
2012-05-21 10:26     ` Otto Meta
2012-05-21 10:47       ` Corinna Vinschen
2012-05-21 12:44         ` Otto Meta
2012-05-22 11:03           ` Corinna Vinschen
2012-05-22 13:26             ` Otto Meta
2012-05-23  8:53               ` Corinna Vinschen
2012-05-23 16:27                 ` Corinna Vinschen
2012-05-23 17:24                   ` Corinna Vinschen
2012-05-23 17:44                     ` David Rothenberger
2012-05-23 18:26                       ` Corinna Vinschen
2012-05-23 20:26                         ` Corinna Vinschen
2012-05-24  5:52                           ` David Rothenberger
2012-05-24  7:07                             ` Corinna Vinschen
2012-05-24 10:36                           ` Otto Meta
2012-05-24 10:59                             ` Otto Meta
2012-05-24 11:21                               ` Corinna Vinschen
2012-05-24 15:37                                 ` Otto Meta
2012-05-24 16:14                                   ` Corinna Vinschen
2012-05-24 19:15                                     ` Otto Meta
2012-05-25 10:04                                       ` Corinna Vinschen
2012-07-11 12:36             ` Otto Meta

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).