Skip to content

[UB] runtime error: left shift of 1 by 31 places cannot be represented in type 'int': src/box/xrow.c:2333:26 #11045

@ligurio

Description

@ligurio

Bug description

UB is happened.

  • OS: Linux
  • Architecture: amd64

Steps to reproduce

Execute debug_asan_clang on a branch with enabled "long" tests, see patch in #11043

./test/test-run.py --builddir $(pwd)/build prune.test.lua

Actual behavior

Log: https://github.com/tarantool/tarantool/actions/runs/12948188871/job/36116313731?pr=11043
Full log: logs_33472080951.zip
Relevant source code:

tarantool/src/box/xrow.c

Lines 2327 to 2335 in 437f2fa

for (uint32_t i = 0; i < len; ++i) {
if (mp_typeof(*d) != MP_UINT)
goto id_filter_decode_err;
uint64_t val = mp_decode_uint(&d);
if (val >= VCLOCK_MAX)
goto id_filter_decode_err;
*req->id_filter |= 1 << val;
}
break;

 [007] replication/prune.test.lua                      memtx         
[007] 
[007] [Instance "master" killed by signal: 11 (SIGSEGV)]
[007] 
[007] [test-run server "master"] Last 15 lines of the log file /tmp/t/007_replication/master.log:
[007] 2025-01-24 11:18:43.425 [102159] main box.cc:2274 I> update replication_synchro_quorum = 16
[007] 2025-01-24 11:18:43.425 [102159] main raft.c:637 I> RAFT: fencing paused
[007] 2025-01-24 11:18:43.438 [102159] relay/unix/:(socket)/101/main recovery.cc:370 I> recover from `/tmp/t/007_replication/master/00000000000000000000.xlog'
[007] 2025-01-24 11:18:43.480 [102159] main/147/main box.cc:4873 I> final data sent.
[007] 2025-01-24 11:18:43.844 [102159] main/152/main box.cc:5009 I> subscribed replica b2d7a5a6-0288-4146-b699-506942c44327 at fd 143, aka unix/:(socket), peer of unix/:(socket)
[007] 2025-01-24 11:18:43.845 [102159] main/152/main box.cc:5011 I> remote vclock {1: 42} local vclock {0: 87, 1: 42}
[007] 2025-01-24 11:18:43.856 [102159] relay/unix/:(socket)/101/main recovery.cc:370 I> recover from `/tmp/t/007_replication/master/00000000000000000000.xlog'
[007] 2025-01-24 11:18:46.138 [102159] main/147/main box.cc:4836 I> joining replica e654b624-327b-451c-9eec-2d60ee325a12 at fd 147, aka unix/:(socket), peer of unix/:(socket)
[007] 2025-01-24 11:18:46.162 [102159] main/147/main box.cc:4844 I> initial data sent.
[007] 2025-01-24 11:18:46.162 [102159] main/147/main replication.cc:564 I> assigned id 31 to replica e654b624-327b-451c-9eec-2d60ee325a12
[007] 2025-01-24 11:18:46.169 [102159] main box.cc:2274 I> update replication_synchro_quorum = 16
[007] 2025-01-24 11:18:46.190 [102159] relay/unix/:(socket)/101/main recovery.cc:370 I> recover from `/tmp/t/007_replication/master/00000000000000000000.xlog'
[007] 2025-01-24 11:18:46.206 [102159] main/147/main box.cc:4873 I> final data sent.
[007] /__w/tarantool/tarantool/src/box/xrow.c:2333:26: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
[007] SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /__w/tarantool/tarantool/src/box/xrow.c:2333:26 
[062] engine/delete_insert.test.lua                   vinyl         [ pass ]
[007] [ fail ]

Expected behavior

no UB

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions