[ 
https://issues.apache.org/jira/browse/DERBY-4498?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen resolved DERBY-4498.
---------------------------------------

    Resolution: Duplicate

This looks like a duplicate of DERBY-4497. Resolving as such.

> Incorrect double checked locking idiom used in VTIResultSet
> -----------------------------------------------------------
>
>                 Key: DERBY-4498
>                 URL: https://issues.apache.org/jira/browse/DERBY-4498
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.5.3.0
>         Environment: [dan...@daniel-desk src]$ uname -a
> Linux daniel-desk.dyndns.org 2.6.18-92.el5 #1 SMP Tue Apr 29 13:16:12 EDT 
> 2008 i686 i686 i386 GNU/Linux
> [dan...@daniel-desk src]$ java -version
> java version "1.6.0"
> Java(TM) SE Runtime Environment (build pxi3260sr4-20090219_01(SR4))
> IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux x86-32 
> jvmxi3260-20090215_29883 (JIT enabled, AOT enabled)
> J9VM - 20090215_029883_lHdSMr
> JIT  - r9_20090213_2028
> GC   - 20090213_AA)
> JCL  - 20090218_01
>            Reporter: Daniel Luo
>   Original Estimate: 0.08h
>  Remaining Estimate: 0.08h
>
> In method setSharedState of class VTIResultSet, double checked locking idiom 
> is used. But the field compileTimeConstants involved in the idiom is not 
> declared with volatile modifier, which is incorrect. Declare the field 
> compileTimeConstants with modifier volatile can quickly fix the problem. 
> Below link and description explain the details.
> http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#dcl
> "The double-checked locking idiom (also called the multithreaded singleton 
> pattern) is a trick designed to support lazy initialization while avoiding 
> the overhead of synchronization. Sometimes it doesn't work correctly since 
> the writes initializing the object and the write to the field storing the 
> object instance can be reordered by the compiler or the cache, which would 
> have the effect of returning what appears to be a partially constructed 
> object instance. The result would be that we read an uninitialized object. In 
> JVMs 1.5 or above, the use of the volatile keyword in field declaration would 
> eliminate the problems."

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to