Race condition in gdalrasterband.cpp causing IReadBlock() and IWriteBlock() methods of drivers to be called from different threads
|Reported by:||Even Rouault||Owned by:||warmerdam|
This is largely related to the issue exposed in #3225, but this symptom is potentially more likely to happen.
The attached program run against an unmodified GDAL shows that FlushBlock() can call IWriteBlock() while GetLockedBlockRef() calls IReadBlock(). This would require GDAL drivers to be thread-safe. All this shows that we probably need more severe locking than what we do currently.