Reopened this bug as it still not fixed.
It was not enough to use a synchronized list in JMemoryPool since iterators generated by the synchronized list are themselves not synchronized. External synchronization is needed where iterator is used on the JMemoryPool.pool list of available blocks.