compiler bug

Bjorn Gustavsson bjorn@REDACTED
Mon May 3 11:57:58 CEST 2004


I've found the bug and I have a preliminary correction.

There will be a patch for the commercial customers first,
and then the correction will be included in OTP-R9C-1.

/Bjorn

Tony Rogvall <tony@REDACTED> writes:

> On Thu, 2004-04-29 at 13:32, Martin Bjorklund wrote:
> > Hi,
> > 
> > Found this on R9B and R9C.  Maybe known already...
> > 
> > Consider this module:
> > 
> > 
> Hello ? Hello ?
> 
> Any one? Is there a patch? this looks like serious stuff!
> 
> /Tony
> 
> 
> > -module(x).
> > -compile(export_all).
> > 
> > -record(state, {ena = true}).
> > 
> > y() ->
> >     spawn_link(?MODULE, loop, [#state{}]).
> > 
> > loop(S) ->
> >     receive
> > 	_ when S#state.ena == false ->
> > 	    io:format("here 1\n"),
> > 	    loop(S);
> > 	test ->
> > 	    io:format("here 2\n"),
> > 	    loop(S);
> > 	X ->
> > 	    io:format("here 3 ~p\n", [X]),
> > 	    loop(S)
> >     end.
> > 
> > Sending 'test' to this process should print "here 2".  But:
> > 
> > 9> P=x:y().     
> > <0.53.0>
> > 10> P ! test.
> > here 3 true
> > test
> > 
> > 
> > NOTE that the X argument has been bound to the value of 'ena' in the
> > record!  If you look at the x.S file, you'll see the problem...
> > 
> > 
> > /martin
> > 
> > 
> > 
> > 
> > 
> 

-- 
Björn Gustavsson, Erlang/OTP, Ericsson AB



More information about the erlang-questions mailing list