[Q] Stable Image of MVC?

Sungjin Chun chunsj at embian.com
Thu Feb 2 07:53:32 UTC 2006


Hi,

your advice is very helpful to me. Now what I'm curious is that why  
only MVC has this problem?

On Jan 21, 2006, at 6:01 PM, Sungjin Chun wrote:

> Thank you very much. This is exactly what I experienced and your  
> suggestion solves my all my problem. Thank you again.
>
> On Jan 21, 2006, at 4:04 AM, Boris Gaertner wrote:
>
>>  "Sungjin Chun" <chunsj at embian.com> wrote:
>>
>>> Hi,
>>>
>>> I've managed to create 3.8 version of MVC only image (with Shout +
>>> Network-Kernel + Some Unicode Korean font). But found that when my
>>> network server code goes wrong, the whole GUI system seems to be
>>> wrong. For example, during this state, if I left click to display
>>> menu, two menus are displayed with cascaded style(wrong!) and I
>>> cannot select any of its item and windows.
>> Two unuseable menues at a time indicate that you have problems
>> with processes. More specifically, that misbehavior indicates (in  
>> MVC,
>> Morphic does not exhibit that behavior) that a forked process
>> signalled an exception that was not handled by that process.
>> You an reproduce that problem quite easy:
>> In a MVC project, open a workspace and evaluate:
>>
>>    [# ( ) at: 3] fork.
>>
>> you get a red error notification and from that moment on
>> your GUI is seriously damaged. You should now drop
>> your image and begin again
>>
>> When you evaluate
>>
>>  [ [# ( ) at: 3] on: Error
>>                     do: [:ex | ]
>> ]  fork
>>
>> in an image with undamaged GUI you will not see an error
>> notification and your GUI remains intact.
>>
>>
>>> Now, I want to know what version of squeak (MVC) is stable to be  
>>> used
>>> for development/debugging and etc?
>> I think MVC is useable, but it has its limitations and that  
>> limitiations
>> force you to observe some rules. The rule is that, for MVC,
>> a process should always be provided with a very general
>> exception handler.
>>
>> You can do that with the following general method  that
>> should be added to the instance protocol of BlockContext:
>>
>> forkProtected
>>     " make sure that the process to be forked has a
>>       bullet-proof exception handling. "
>>  ^[[ self ] on: Exception
>>        do: [:ex | ]
>>    ] fork
>>
>>
>> For your actual application, you have to find out where the
>> unprotected process is forked. Perhaps somewhere in the network
>> code? That would be difficult to find. Once you have found that
>> process, you may think about ways to add a suitable exception  
>> handler.
>> Have you looked into the SqueakDebug.log  file? It may
>> contain some valueable hints.
>>
>> Note also that processes are not always created with fork.
>> Sometimes they are created with  BolckContext>>newProcess.
>>
>> Additional remark:
>>
>> I tried these examples also with Squeak 3.2. Here there GUI
>> remains undamaged, but the error notification does not
>> pop up immediately.
>>
>>> Thanks in advance.
>> Hope that helps
>> Boris
>>
>
>




More information about the Squeak-dev mailing list