Bug #3251
32-bit Debian: ceph dies in assert(inq == &local_queue)
% Done:
0%
Source:
Development
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
32-bit installation was breaking (while testing with ./vstart.sh, in the ceph
tool itself) with an assert failure on inq == &local_queue. Sage identified
the (long)m cast just above the assertion: on 32-bit, a real Message * will sign-extend, so the comparison succeeds, where it should not.
Changing the cast to (unsigned long) fixes the failure.
Associated revisions
Avoid sign-extension of non-magic Message* values
Cast to (unsigned long) when checking for magic values, so
real ptrs don't get sign-extended. Avoids triggering
assert(inq == &local_queue) failure.
Fixes: #3251
Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage.weil@inktank.com>
History
#1 Updated by Dan Mick over 11 years ago
- Status changed from New to Resolved
commit:67a201d64b5b4f1a8effd677dd932680144265d6
#2 Updated by Greg Farnum about 5 years ago
- Project changed from Ceph to Messengers
- Category deleted (
msgr)