-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Storage Engines
-
1
-
StorEng - Defined Pipeline
Introduced in PR 9208 this assert at or near to src/include/btree_inline.h:1562 uses volatile in an apparent attempt to ensure ref->addr is explicitly loaded from memory.
WT_ASSERT(session, (volatile void *)ref->addr != NULL);
However this cast indicates the memory addr is pointing to is volatile, rather than pointer. The value of the pointer is then tested which is not volatile.
I believe the pointer needs to be cast a to a volatile pointer and then dereferenced.
WT_ASSERT(session, *(void * volatile *)&ref->addr != NULL);
I think (tentatively) this is required 6.7.3 of the C11/C17 specifications.
- is related to
-
WT-11062 Safe free the ref addr to allow concurrent access
- Closed