Details
-
Bug
-
Resolution: Fixed
-
Major
-
4.0.0, 4.1.1, 4.5.0
-
None
-
Untriaged
-
Unknown
Description
This issue could manifest itself as a segfault during upgrade from 3 to 4
KV-engine metadata has the following 3 evolutions.
epoch (version 0)
struct metadata {
|
uint64 cas;
|
uint32 expiry;
|
uint32 flags;
|
}
|
version 1
struct metadata {
|
uint64 cas;
|
uint32 expiry;
|
uint32 flags;
|
uint8 ext1;
|
uint8 ext2;
|
}
|
version 2
struct metadata {
|
uint64 cas;
|
uint32 expiry;
|
uint32 flags;
|
uint8 ext1;
|
uint8 ext2;
|
uint8 conflict_resolution_mode;
|
}
|
- 3.x code writes out the version 1 structure (18 bytes of meta)
- 4.x code reads version 0 or version 2 (19 bytes) without checking the length is 19 bytes (i.e. checks only for > 16).
This was discovered when error injecting in unit-tests on the master/watson branch and shows up in valgrind as an invalid read of 1 byte.
(details of test to be uploaded).
Attachments
Gerrit Reviews
For Gerrit Dashboard: MB-19948 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
66035,8 | MB-20224: Remove gtest from watson/4.5.1 | master | manifest | Status: MERGED | +2 | +1 |
66036,4 | MB-20224: Remove gtest, add googletest. | watson | tlm | Status: MERGED | -1 | +1 |
66037,3 | MB-20224: gtest macro changes | watson | memcached | Status: ABANDONED | -1 | -1 |
66040,5 | MB-20224: [BP] Replace ThreadLocal '#define' with a using | watson | ep-engine | Status: ABANDONED | 0 | +1 |
66154,1 | MB-20224: Remove gtest from watson | master | manifest | Status: ABANDONED | 0 | 0 |
66155,3 | MB-20224: Add googletest to watson | master | manifest | Status: MERGED | +2 | +1 |
66202,1 | MB-20224: gtest macro changes | watson | couchstore | Status: ABANDONED | 0 | 0 |
66203,1 | [BP] MB-20224: gtest macro changes | watson | couchstore | Status: ABANDONED | 0 | -1 |
66204,1 | [BP] MB-20224: gtest macro changes | watson | memcached | Status: ABANDONED | 0 | 0 |
66205,1 | [BP] MB-20224: gtest macro changes | watson | memcached | Status: ABANDONED | 0 | -1 |
66207,2 | Revert "MB-20224: Remove gtest, add googletest." | watson | tlm | Status: MERGED | +2 | +1 |
66210,2 | MB-20224: [BP] Replace ThreadLocal '#define' with a using | watson | ep-engine | Status: MERGED | +2 | +1 |
66213,1 | [BP] MB-20224: gtest macro changes | watson | couchstore | Status: ABANDONED | 0 | 0 |
66214,1 | [BP] MB-20224: gtest macro changes | watson | memcached | Status: ABANDONED | 0 | 0 |
66215,2 | MB-20224: Remove gtest, add googletest. | watson | tlm | Status: MERGED | +2 | +1 |
66216,2 | [BP] MB-20224: gtest macro changes | watson | memcached | Status: MERGED | +2 | +1 |
66217,2 | [BP] MB-20224: gtest macro changes | watson | couchstore | Status: MERGED | +2 | +1 |
66220,2 | MB-20224: Add googletest to watson (4.5.1.xml) New tests for MB-19948 require gtest and gmock. | master | manifest | Status: MERGED | +2 | +1 |
66453,4 | Merge remote-tracking branch 'couchbase/watson' into 'couchbase/master' | master | ep-engine | Status: ABANDONED | -1 | +1 |
66488,3 | Merge remote-tracking branch 'couchbase/watson' into 'couchbase/master' | master | ep-engine | Status: MERGED | +2 | +1 |
66757,1 | Merge remote-tracking branch 'couchbase/watson' | master | memcached | Status: MERGED | +2 | +1 |
66794,1 | Merge branch 'watson' into master | master | tlm | Status: ABANDONED | 0 | 0 |
66798,1 | Merge branch 'watson' into master | master | tlm | Status: MERGED | +2 | +1 |
70853,1 | Merge tag 'v4.5.1' | master | couchstore | Status: MERGED | +2 | +1 |