Hi,

Why is that an issue in Rubric?


Because I can reproduce it only in Rubric :)
Rubric is great and it's a pleasure to use it!
I'm just curious if there is a possible quick fix. I guess, I have an idea
why it could happen (because rubric for styling uses it's own background
thread and doesn't absolutely takes care if during styling in its inner
threads text changes) but I'm not sure if I can find time in the very
nearest future to fix it, or at least try.

Why do not ensuring in spotter that only one thread at a time can modify
> the text editor?

That is the most interesting part. In spotter I can guarantee that at any
time always maximal only one thread have access to UI elements. But I can't
guarantee that this thread is UI one. It is important. I build some widgets
completely in background and then pass them to UI thread to be added in the
World. By convention in Spotter only UI thread can add and modify widgets
in the world. If widget not in the world it can be modified by any thread,
but only one.

I tried to reproduce the issue, so there is a synthetic examples: (huge
numbers to increase probability of exception)

It works for text edit morph:

|morph random|
> morph := TextMorphForEditView new.
> morph openInWindow extent: 400@400.
> random := Random seed: 1337.

[ 1 to: 1337 do:
> [ :i | morph contents: (String loremIpsum: (random nextInt: 1337) + 42) ]
> ] fork


The same doesn't work for rubric:

|rubric random|
> rubric := RubScrolledTextMorph new beForSmalltalkCode.
> rubric openInWindow extent: 400@400.
> random := Random seed: 1337.
> [ 1 to: 1337 do:
> [ :i | rubric updateTextWith: (String loremIpsum: (random nextInt: 1337) +
> 42) ] ] fork
>


Why do not ensuring in spotter that only one thread at a time can modify
> the text editor?

yes, if no solution is found I will always create rubric morphs in UI thread

Thanks for answers


Cheers,
Alex

On Wed, Mar 18, 2015 at 1:45 PM, Guillermo Polito <[email protected]
> wrote:

> I agree with Stephan... I don't think that Rubric is built to be thread
> safe.
>
> Also, making Rubric thread safe will probably be a lot of work... Why do
> not ensuring in spotter that only one thread at a time can modify the text
> editor?
>
> El mar., 17 de mar. de 2015 a la(s) 11:42 p. m., Stephan Eggermont <
> [email protected]> escribió:
>
> Hi Alex,
>>
>> On 17/03/15 22:19, Aliaksei Syrel wrote:
>> > seems like there is a rather rare bug in Rubric. I opened an issue with
>> > explanation:
>> >
>> > https://pharo.fogbugz.com/f/cases/15153/Rubric-mutability-
>> issue-in-RubTextComposer-binary-search
>> >
>> > Would be nice to fix it until release. It was caught in Spotter - as it
>> > heavily uses multithreading. Any suggestions are welcome if it is known
>> :)
>>
>> Why is that an issue in Rubric? Sounds like you might need a monitor in
>> Spotter?
>>
>> Stephan
>>
>>
>>

Reply via email to