Final fields state when accessed from subclass
<p>I see a strange behaviour which seems shouldn't happen according to JMM.
I have class B which extends class A, a final protected field in A which is initialized in A constructor accessed by class B in its constructor.</p>

<p>But, in very rare cases I get a NPE when accessed in B.
Any ideas?</p>

<p>Part of the code:</p>

<pre><code>class AsyncReplicationSourceGroup extends AbstractReplicationSourceGroup{

    public AsyncReplicationSourceGroup(DynamicSourceGroupConfigHolder groupConfig){
        super(groupConfig);
        createReplicationChannels();  
    }

    protected void createReplicationChannels(){
        //...
        specificLogger.finest("created channel");  // this is where the NPE is thrown from
        //...
    }
}

abstract class AbstractReplicationSourceGroup{

    protected final Logger specificLogger;

    public AbstractReplicationSourceGroup(DynamicSourceGroupConfigHolder groupConfigHolder){
        specificLogger = Logger.getLogger(Constants.LOGGER_REPLICATION_GROUP + "." + _groupConfigHolder.getConfig().getName());
        //...
    }

}
</code></pre>
