[BUG] Block arguments are shared across blocks

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[BUG] Block arguments are shared across blocks

Lukas Renggli
Yet another show stopper in Squeak:

    http://bugs.impara.de/view.php?id=4636

Quite a dangerous thing, if you are not aware of it.

Cheers,
Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch

Reply | Threaded
Open this post in threaded view
|

Re: [BUG] Block arguments are shared across blocks

Oscar Nierstrasz

Isn't this a direct consequence of the fact that block arguments are  
just temps in disguise?

Oscar

On Aug 24, 2006, at 9:59, Lukas Renggli wrote:

> Yet another show stopper in Squeak:
>
>    http://bugs.impara.de/view.php?id=4636
>
> Quite a dangerous thing, if you are not aware of it.
>
> Cheers,
> Lukas
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch


Reply | Threaded
Open this post in threaded view
|

Re: [BUG] Block arguments are shared across blocks

Klaus D. Witzel
In reply to this post by Lukas Renggli
Hi Lukas,

the issue is well known, has been complained about in squeak-dev times and  
again, and is addressed by the new compiler. The latter might be worth a  
try in your situation.

/Klaus

On Thu, 24 Aug 2006 09:59:49 +0200, Lukas Renggli <[hidden email]>  
wrote:

> Yet another show stopper in Squeak:
>
>     http://bugs.impara.de/view.php?id=4636
>
> Quite a dangerous thing, if you are not aware of it.
>
> Cheers,
> Lukas
>



Reply | Threaded
Open this post in threaded view
|

Re: [BUG] Block arguments are shared across blocks

Philippe Marschall
In reply to this post by Oscar Nierstrasz
No, it works if you rename the block arguments.

Philippe

2006/8/24, Oscar Nierstrasz <[hidden email]>:

>
> Isn't this a direct consequence of the fact that block arguments are
> just temps in disguise?
>
> Oscar
>
> On Aug 24, 2006, at 9:59, Lukas Renggli wrote:
>
> > Yet another show stopper in Squeak:
> >
> >    http://bugs.impara.de/view.php?id=4636
> >
> > Quite a dangerous thing, if you are not aware of it.
> >
> > Cheers,
> > Lukas
> >
> > --
> > Lukas Renggli
> > http://www.lukas-renggli.ch
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [BUG] Block arguments are shared across blocks

Klaus D. Witzel
In reply to this post by Oscar Nierstrasz
On Thu, 24 Aug 2006 11:02:23 +0200, Oscar Nierstrasz wrote:

> Isn't this a direct consequence of the fact that block arguments are  
> just temps in disguise?

Exactly. But they have to be so for the reconstruction procedure in the  
"old" Decompiler: a design decision which can be seen as the cause of the  
mess (no critique at all, I love decompiled code ;-)

/Klaus

> Oscar
>
> On Aug 24, 2006, at 9:59, Lukas Renggli wrote:
>
>> Yet another show stopper in Squeak:
>>
>>    http://bugs.impara.de/view.php?id=4636
>>
>> Quite a dangerous thing, if you are not aware of it.
>>
>> Cheers,
>> Lukas
>>
>> --Lukas Renggli
>> http://www.lukas-renggli.ch
>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: [BUG] Block arguments are shared across blocks

Klaus D. Witzel
In reply to this post by Philippe Marschall
Yes. And if the compiler/parser where running on a COMPUTER, an  
appropriate error message could be issued: 'arg name cannot be resused' ;-)

/Klaus

On Thu, 24 Aug 2006 11:01:41 +0200, Philippe Marschall wrote:

> No, it works if you rename the block arguments.
>
> Philippe
>
> 2006/8/24, Oscar Nierstrasz <[hidden email]>:
>>
>> Isn't this a direct consequence of the fact that block arguments are
>> just temps in disguise?
>>
>> Oscar
>>
>> On Aug 24, 2006, at 9:59, Lukas Renggli wrote:
>>
>> > Yet another show stopper in Squeak:
>> >
>> >    http://bugs.impara.de/view.php?id=4636
>> >
>> > Quite a dangerous thing, if you are not aware of it.
>> >
>> > Cheers,
>> > Lukas
>> >
>> > --
>> > Lukas Renggli
>> > http://www.lukas-renggli.ch
>>
>>
>>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: Re: [BUG] Block arguments are shared across blocks

Lukas Renggli
> Yes. And if the compiler/parser where running on a COMPUTER, an
> appropriate error message could be issued: 'arg name cannot be resused' ;-)

It doesn't make sense that the two arguments that are declared in
different scopes are mapped to the same memory slot, even-tough they
have the same name.

Sorry, if this has been already reported before. I know that is is
probably difficult to fix in the old compiler, I just wanted to make
people aware of it. There are other critical concurrency issues in
Squeak I reported before, this is just another one my friends
discovered yesterday. This morning I wrote a test for it, so that the
community knows when it is fixed.

I would suggest to add such tests to the collection of Kernel Tests
even if there are no fixes to be expected soon, so that everybody is
aware that there are things in Squeak that are simply broken (by
design).

> >> Isn't this a direct consequence of the fact that block arguments are
> >> just temps in disguise?

Exactly, if you have a look at the byte-code it reads the same
temp-var. In VisualWorks it is using a different temp-var and this is,
I think, what everybody would expect.

Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch