MacOSX Performance

John M McIntosh johnmci at smalltalkconsulting.com
Mon Jan 24 15:27:50 UTC 2005


On Jan 24, 2005, at 4:55 AM, Karsten Wolf wrote:

> Hi John,
>
> Am 24.01.2005 um 08:38 schrieb John M McIntosh:
>
>> b) We crash when we get a thread race condition on the  
>> runloopObserver FlushAllBuffers() which attempts to flush the window,  
>> when we at the same time are attempting to flush the window. That  
>> requires reading to solve.
>>
> could you tell more. Sounds like relating to the problems I have.

See __CFRunLoopDoObservers  which runs the Observers, one of which is  
doing FlushAllWindows,

Thread 0  (The main thread holding onto the UI runloop

1   com.apple.QD                   	0x91562b58 QDFlushPortBuffer + 0x114
2   com.apple.HIToolbox            	0x927d1aac _FlushWindow + 0x138
3   com.apple.HIToolbox            	0x927d2ad0 FlushAllWindows + 0x24
4   com.apple.HIToolbox            	0x927d3f10  
FlushAllBuffers(__CFRunLoopObserver*, CFRunLoopActivity, void*) + 0x34
5   com.apple.CoreFoundation       	0x90191ca0 __CFRunLoopDoObservers +  
0x194
6   com.apple.CoreFoundation       	0x90195e74 CFRunLoopRunSpecific +  
0x130

which crashs because on another thread we are running the interpreter.
Thread 2 Crashed:
0   <<00000000>> 	0xf2d3de00 0 + 0xf2d3de00
1   com.apple.QD                   	0x91562b58 QDFlushPortBuffer + 0x114
2   org.squeak.Squeak              	0x000d8434 ioShowDisplayOnWindow +  
0x10d4
3   org.squeak.Squeak              	0x000d8508 ioShowDisplay + 0x18

Most (I hope) UI stuff that happens in the interpreter thread, say  
resize window, happens via special event requests to the UI thread  
which was put in place
to handle AppleScript UI processing.  Most UI things are not threadsafe.


More later
>
--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===




More information about the Squeak-dev mailing list