Details
Description
innodb.xa_prepare_unlock_unmodified w2 [ fail ] Found warnings/errors in server log file!
|
Test ended at 2024-10-23 14:55:54
|
line
|
/home/buildbot/buildbot/build/mariadb-10.6.20/sql/sql_select.cc:8289:43: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int'
|
^ Found warnings in /dev/shm/var/2/log/mysqld.1.err
|
ok
|
|
- saving '/dev/shm/var/2/log/innodb.xa_prepare_unlock_unmodified/' to '/dev/shm/var/log/innodb.xa_prepare_unlock_unmodified/'
|
|
Retrying test innodb.xa_prepare_unlock_unmodified, attempt(2/2)...
|
Attachments
Activity
Field | Original Value | New Value |
---|---|---|
Assignee | Oleksandr Byelkin [ sanja ] | Sergei Petrunia [ psergey ] |
Summary | innodb.xa_prepare_unlock_unmodified fails in ASAN | innodb.xa_prepare_unlock_unmodified fails in UBSAN |
Status | Open [ 1 ] | In Progress [ 3 ] |
Fix Version/s | 10.5.27 [ 29902 ] | |
Fix Version/s | 10.6.20 [ 29903 ] | |
Fix Version/s | 10.11.10 [ 29904 ] | |
Fix Version/s | 11.2.6 [ 29906 ] | |
Fix Version/s | 11.4.4 [ 29907 ] | |
Fix Version/s | 11.6.2 [ 29908 ] | |
Fix Version/s | 10.6 [ 24028 ] | |
Resolution | Fixed [ 1 ] | |
Status | In Progress [ 3 ] | Closed [ 6 ] |
So, the problem happens here:
sizeof(uint)=4 , PREV_BITS is defined as:
#define PREV_BITS(type,A) ((type) (((type) 1 << (A)) -1))
so we try to compute 1<<32 which is undefined.
Two issues here:
1. Why are we using PREV_BITS(uint, ... )? sizeof(key_part_map)=8, while MAX_REF_PART=32 , so we can easily side-step the problem by using PREV_BITS(key_part_map).
2. The fact that PREV_BITS(uint, 32) doesn't work is a gotcha that we shouldn't have.