mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
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:
parent
d74421bb97
commit
b31bb7383c
3 changed files with 18 additions and 6 deletions
|
@ -35,6 +35,7 @@ int main()
|
|||
toTarget: [MyClass class]
|
||||
withObject: nil];
|
||||
[NSThread sleepForTimeInterval: 1.0];
|
||||
NSLog(@"Done.");
|
||||
[arp release];
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ int main()
|
|||
toTarget: [MyClass class]
|
||||
withObject: nil];
|
||||
[NSThread sleepForTimeInterval: 1.0];
|
||||
NSLog(@"Done.");
|
||||
[arp release];
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in a new issue