New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build: degradation on src/box/sql/libsql build after commit a33108a "sql: fix mem_apply_type double type truncation" #5067
Comments
The commit clearly not related to the bug, it existed always. But somewhy didn't reveal itself. Seems like SQL library is totally broken - it heavily depends on box library and its symbols, but does not link with it. Instead, it waits until box will include it. This somehow worked before, but when UB sanitizer is on, it seems something is being built or linked a little differently. Although I couldn't find what exactly, so far. |
SQL heavily depends on box, and box on SQL. So they can't be separate libraries. The build started failing with undefined box symbols in SQL, when code of the latter has slightly changed in one of the recent commits. The build failed only with UB sanitizer enabled, but 'VERBOSE=1 make' showed that both with UB and without UB the build command was the same (not counting -fsanitize flags). So the sanitizer has nothing to do with it. The patch makes SQL sources being built as a part of box library. Closes #5067
Clang undefined behaviour sanitizer was turned on using -fsanitize=undefined flag, which is supposed to turn on all the sanitizations, except a few ones. Not needed sanitations were turned off explicitly, using -fno-sanitize=<type> flags. However appeared it does not work with some flags. For example, nullability sanitations can't be turned off when -fsanitize=undefined is used. Nullability sanitations lead to lots of false-positive fails such as typeof(*obj) where obj is NULL, or memcpy() with NULL destination but 0 size. The patch splits -fsanitize=undefined into separate flags and never turns on nullability checks. Follow up #5067
SQL heavily depends on box, and box on SQL. So they can't be separate libraries. The build started failing with undefined box symbols in SQL, when code of the latter has slightly changed in one of the recent commits. The build failed only with UB sanitizer enabled, but 'VERBOSE=1 make' showed that both with UB and without UB the build command was the same (not counting -fsanitize flags). So the sanitizer has nothing to do with it. The patch makes SQL sources being built as a part of box library. Closes #5067
SQL heavily depends on box, and box on SQL. So they can't be separate libraries. The build started failing with undefined box symbols in SQL, when code of the latter has slightly changed in one of the recent commits. The build failed only with UB sanitizer enabled, but 'VERBOSE=1 make' showed that both with UB and without UB the build command was the same (not counting -fsanitize flags). So the sanitizer has nothing to do with it. The patch makes SQL sources being built as a part of box library. Closes #5067
SQL heavily depends on box, and box on SQL. So they can't be separate libraries. The build started failing with undefined box symbols in SQL, when code of the latter has slightly changed in one of the recent commits. The build failed only with UB sanitizer enabled, but 'VERBOSE=1 make' showed that both with UB and without UB the build command was the same (not counting -fsanitize flags). So the sanitizer has nothing to do with it. The patch makes SQL sources being built as a part of box library. Closes #5067
Tarantool version:
Commit a33108a
"sql: fix mem_apply_type double type truncation"
OS version:
Debian Buster + ASAN + Clang8
Bug description:
https://gitlab.com/tarantool/tarantool/-/jobs/588714883
Steps to reproduce:
Optional (but very desirable):
The text was updated successfully, but these errors were encountered: