In fact, I am calling WebKit APIs from multiple threads, which wasn't a good idea on my part. This is my first experience with multiple threads, and I'm enjoying it but am still quite a novice. My only WebKit call is to [WebView -stringByEvaluatingJavaScriptFromString:], so I've changed it to
[_webViewLock lock];
[_webView stringByEvaluatingJavaScriptFromString:endHandlerJavaScript];
[_webViewLock unlock];
where _webViewLock is an instance variable in the Dashboard plugin object. However, the crash still happens -- some elements too tall, others too short, elements disappearing until you mouse over them, and then EXC_BAD_ACCESS. Should my locking code above have worked? (I can move this discussion to Cocoa-dev if it becomes off-topic for this list.)
Thank you very much for your help.