This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

"Hyperthreading" problems


we have encountered random hangs and crashes in cygwin (see output of
cygcheck attached to this message) on a dual-processor server running
Windows Server 2003. IMHO, the so-called "hyperthreading problems" reported
recently on this mailing list just have nothing to do with hyperthreading,
but are more generally related to multi-processor issues.
I used the following test (found on this mailing list archive, posted 6 Apr
2004 by Chuck McDevitt):


#! /bin/ksh
while [[ ! -z $mypath ]]
 if [[ -z $mypath ]]
  echo "Test Failed......Path is empty"

in one shell, while running a large make in another, it will fail in a
variety of ways.
Under pdksh, it sometimes exits the test because "mypath" is empty, or it
core dumps, or hangs, or gives error messages.
Under bash, it hangs, crashes, or gives error messages (haven't seen it
exit the loop, but I didn't try long with bash).
By "hang", I mean the shell stops using CPU time, and become
non-responsive, and can only be stopped by killing the process.
The problem does not occur if hyperthreading is turned off.


When booting the server in single CPU (/ONECPU in boot.ini) the problem does
not appear.
More interesting, if I lock my bash session on a particular CPU by using
SetProcessAffinityMask, so that all child processes created by this shell
are locked on one CPU, the problem does not appear.
It seems that the bug has something to do with a same Cygwin process being
swapped from one CPU to another when running a piece of code that is not
locked properly (i.e. missing EnterCriticalSection or something like that).


Attachment: cygcheck.out
Description: Binary data

Unsubscribe info:
Problem reports:

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