Thanks for this suggestion. Actually, once identified, I fixed the bug fairly quickly by postponing the task (dispatched a block on the main thread for that). The bug was caused by two successive events arriving in a short timeframe so that the stack looked like that:
0 my callback 1 __CFSocketPerformV0 ------------------------------------ 9 initWithHTML:dataUsingEncoding:documentAttributes: 10 my function 1 11 my function 2 12 my callback 13 __CFSocketPerformV0 ----------------------------------- 23 NSApplicationMain 24 main 25 Start and my callback never was designed to be called a second time before the first call was finished. Dispatching a block to handle my function 1 fixed the issue. However, information about initWithHTML:dataUsingEncoding:documentAttributes: running an event loop could be worth mentioning in the docs… Jean On 8 mai 2013, at 00:52, Ken Thomases wrote: > On May 7, 2013, at 5:37 PM, Jean Suisse wrote: > >> By any chance, could a call to [[NSAttributedString alloc] >> initWithHTML:dataUsingEncoding:documentAttributes:] lead to the event loop >> being run before the call returns? > > Yes, it can. Under the hood, NSAttributedString is using WebKit for HTML > rendering. In part that means that, when invoked from a background thread, > it has to shunt the work to the main thread. But it also means the main > thread may have to run the run loop during the call. It's a nuisance, but > it's necessary since HTML can have references to external resources that need > to be loaded. > > Consider the other method, -[NSAttributedString > initWithHTML:options:documentAttributes:] and its options dictionary, which > can have keys like NSTimeoutDocumentOption and > NSWebResourceLoadDelegateDocumentOption. Those imply a pretty involved > process under the hood. I'm fairly certain that this method is used for the > implementation of the method you're using. > > You may be able to use those options to minimize the use of the run loop, but > probably not eliminate it. > > Regards, > Ken > ----------- Jean Suisse Institut de Chimie Moléculaire de l’Université de Bourgogne (ICMUB) — UMR 6302 _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com