> From: Yilong Li [mailto:yilong...@runtimeverification.com] 
> Subject: Re: RV-Predict bugs

> The following is a valid execution trace consists of 5 events:
>             T1                       T2
> 1   READ  null
> 2   WRITE s
> 3                                 READ s
> 4                                 READ ???
> 5   READ  s

> where s is the result of sm.getString("sc.200").

> The question is what value T2 can read and then return in event 4.

It's not clear what the READ ??? is intended to represent.

> The question boils down to: does the write in event 2 prevent event 4 from
> reading the initial null value of st_200?

It doesn't, but that's not the real problem.  Let's expand the example a bit:

            T1                       T2
1   READ  null from st_200
2a  allocate obj
2b  WRITE obj->field
2c  WRITE obj into st_200
3                                 READ obj from st_200
4                                 READ obj->field

Since there is no actual ordering of steps 2b (object initialization) and 2c 
(object publication) in T1, T2 can observe them in the reverse order and pick 
up an unitialized value for field.

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
MATERIAL and is thus for use only by the intended recipient. If you received 
this in error, please contact the sender and delete the e-mail and its 
attachments from all computers.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to