On 15 Apr 2015, at 16:04, Jonathan Taylor <jonathan.tay...@glasgow.ac.uk> wrote:
> I've started encountering intermittent problems in one specific window in my 
> application, where text input boxes become unresponsive, steppers remain 
> highlighted after clicking, etc. I'm rather short of ideas on how to debug 
> this, particular since I haven't worked out how to reproduce it reliably. 
> Other windows seem to remain unaffected.
> 
> From dimly-remembered past experience I have a feeling it could be related to 
> something somewhere resulting in GUI code being executed on a non-main 
> thread. There is in principle a risk of that, since the window interacts with 
> peripherals/drivers etc involving multithreaded code. I've tried to isolate 
> the GUI code from the multithreaded code, but may perhaps have missed some 
> obscure case. [ideally, I'd probably totally isolate anything multithreaded 
> from ObjC code, but that would mean a proliferation of shadow classes, which 
> is something I'd prefer to avoid being dragged into]
> 
> Even if my suspicion about the cause (multithreading+GUI) is correct, I'm 
> still not sure how to pin down and debug the problem, since there are so many 
> entry points into GUI-related code (e.g. property value changes), not all of 
> which even involve my own code directly. It would be great if there was some 
> way of enabling a global "exception if main-thread requirements are 
> violated", but I certainly haven't heard of such a thing (and can imagine 
> there could be very good reasons why it would be prohibitively hard to 
> implement). Can anyone suggest ways to diagnose and debug my problem (or 
> indeed suggest other possible causes I haven't thought of)?

A few ideas:

- access of UI from non-main thread, corrupting data
- view inserted as subview of one of its superviews
- Someone calling one of the nextEventMatchingMask: methods and swallowing 
events that someone else is looking for to end a loop.
- Exception thrown from tracking code
- Someone calling display: from inside drawRect:, causing an endless recursion

Have you tried just pausing your app in the debugger when this happens and 
looking at each thread to see what is running?

Cheers,
-- Uli
_______________________________________________

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

Reply via email to