Make locking checks more robust

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32314 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2011-02-23 08:08:22 +00:00
parent d74421bb97
commit b31bb7383c
3 changed files with 18 additions and 6 deletions

View file

@ -35,6 +35,7 @@ int main()
toTarget: [MyClass class]
withObject: nil];
[NSThread sleepForTimeInterval: 1.0];
NSLog(@"Done.");
[arp release];
return 0;
}

View file

@ -35,6 +35,7 @@ int main()
toTarget: [MyClass class]
withObject: nil];
[NSThread sleepForTimeInterval: 1.0];
NSLog(@"Done.");
[arp release];
return 0;
}

View file

@ -28,17 +28,22 @@ int main()
[task setStandardError: ePipe];
hdl = [ePipe fileHandleForReading];
[task launch];
for (count = 0; count < 30 && [task isRunning]; count++)
for (count = 0; count < 10 && [task isRunning]; count++)
{
[NSThread sleepForTimeInterval: 1.0];
}
//[task waitUntilExit];
data = [hdl availableData];
NSLog(@"Data was %*.*s", [data length], [data length], [data bytes]);
string = [NSString alloc];
string = [string initWithData: data encoding: NSISOLatin1StringEncoding];
PASS([string rangeOfString: @"deadlock"].length > 0,
"NSLock deadlocked as expected");
"NSLock reported deadlock as expected");
if (NO == testPassed)
{
PASS(count == 10, "NSLock seems to have deadlocked as expected")
[task terminate];
}
[task waitUntilExit];
command = [helpers stringByAppendingPathComponent: @"doubleNSConditionLock"];
task = [[NSTask alloc] init];
@ -47,17 +52,22 @@ int main()
[task setStandardError: ePipe];
hdl = [ePipe fileHandleForReading];
[task launch];
for (count = 0; count < 30 && [task isRunning]; count++)
for (count = 0; count < 10 && [task isRunning]; count++)
{
[NSThread sleepForTimeInterval: 1.0];
}
//[task waitUntilExit];
data = [hdl availableData];
NSLog(@"Data was %*.*s", [data length], [data length], [data bytes]);
string = [NSString alloc];
string = [string initWithData: data encoding: NSISOLatin1StringEncoding];
PASS([string rangeOfString: @"deadlock"].length > 0,
"NSConditionLock deadlocked as expected");
"NSConditionLock reported deadlock as expected");
if (NO == testPassed)
{
PASS(count == 10, "NSConditionLock seems to have deadlocked as expected")
[task terminate];
}
[task waitUntilExit];
ASSIGN(lock,[NSRecursiveLock new]);
[lock lock];