UI refresh in background thread while [NSTask waitUntilExit]
UI refresh in background thread while [NSTask waitUntilExit]
- Subject: UI refresh in background thread while [NSTask waitUntilExit]
- From: Vera Tkachenko <email@hidden>
- Date: Tue, 26 Apr 2011 10:55:41 +0300
Hello,
In my app I need to determine if some app if properly codesigned. To do this I just invoke "/usr/bin/codesign" and analyse return value. To invoke it I use NSTask and launch it in background thread. Everything works fine excepts strange crash I get sometimes from our customers. While NSTask is waiting for command to finish (waitUntilExit) UI starts to update in background thread... which causes crashes. I now that's improper to do any UI related stuff in background threads. And I don't force UI update explicitly.
But why it's get updated while waiting?
Part of stack trace of crashed thread:
<skipped and crash here>
19 com.apple.AppKit 0x915e8d40 -[NSWindow displayIfNeeded] 204
20 com.apple.Foundation 0x93b6d9d5 __NSFireDelayedPerform 537
21 com.apple.CoreFoundation 0x95634adb __CFRunLoopRun 8059
22 com.apple.CoreFoundation 0x95632464 CFRunLoopRunSpecific 452
23 com.apple.CoreFoundation 0x95632291 CFRunLoopRunInMode 97
24 com.apple.Foundation 0x93be6805 -[NSConcreteTask waitUntilExit] 273
<skipped>
NSTask launching code:
// create task and pipe objects
NSTask *task = [[NSTask alloc] init];
NSPipe *outputPipe = [[NSPipe alloc] init];
NSPipe *errorPipe = [[NSPipe alloc] init];
// setup binary and arguments
[task setLaunchPath:cmd];
[task setStandardOutput:outputPipe];
// and all error output goes to our pipe, not console
[task setStandardError:errorPipe];
[task setArguments:args];
// launch task
[task launch];
[task waitUntilExit];
[[errorPipe fileHandleForReading] closeFile];
[[outputPipe fileHandleForReading] closeFile];
terminationStatus = [task terminationStatus];
[task terminate]; // just in case
Thanks for your help,
Vera Tkachenko_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden