Commits
- Commit:
18cf66c7bfc185665fb8e6ad80b7dfeb35754161
- From:
- Sergey Bronnikov <sergeyb@tarantool.org>
- Date:
cmake: fix build with GCC's AddressSanitizer
GNU GCC compiler has AddressSanitizer support since 4.8.0 [1],
but it was unsupported in tarantool's build. The patch
fixes a build by GNU GCC with enabled AddressSanitizer.
1. https://gcc.gnu.org/gcc-4.8/changes.html
NO_CHANGELOG=build
NO_DOC=build
NO_TEST=build
(cherry picked from commit ef91f92a22c6d7910ecdd00ab14da359343a2ec2)
- Commit:
89b2760ef192a744e09a41a8af347aa148bbdf33
- From:
- Alexander Turenko <alexander.turenko@tarantool.org>
- Via:
- Alexander Turenko <totktonada.ru@gmail.com>
- Date:
build: update libcurl to curl-8_10_1-241-g461ce6c61
The reason is that the previous libcurl submodule update in commit
0919f390802f146852b462215327ef03e2730cfc ("third_party: update libcurl from
8.8.0 to 8.10.1") reveals the following regression:
NOWRAP
```c
$ tarantool -e "require('http.client').new():get('https://google.com') collectgarbage()"
tarantool: ./third_party/curl/lib/multi.c:3691: curl_multi_assign: Assertion `!(multi)' failed.
Aborted (core dumped)
```
NOWRAP
The stacktrace is the following:
NOWRAP
```c
<...>
#4 __assert_fail
#5 curl_multi_assign // <- called by us
#6 curl_multi_sock_cb // <- this is our callback
#7 Curl_multi_pollset_ev
#8 cpool_update_shutdown_ev
#9 cpool_discard_conn
#10 cpool_close_and_destroy_all
#11 Curl_cpool_destroy
#12 curl_multi_cleanup
#13 curl_env_finish // <- destroy the multi handle
#14 httpc_env_finish
#15 luaT_httpc_cleanup
#16 lj_BC_FUNCC
#17 gc_call_finalizer
#18 gc_finalize
#19 gc_onestep
#20 lj_gc_fullgc
#21 lua_gc
#22 lj_cf_collectgarbage
#23 lj_BC_FUNCC
#24 lua_pcall
#25 luaT_call
#26 lua_main
#27 run_script_f
#28 fiber_cxx_invoke
#29 fiber_loop
#30 coro_init
```
NOWRAP
The multi handle is during the destroy, but our
`CURLMOPT_SOCKETFUNCTION` callback is invoked and the
`curl_multi_assign()` call (invoked to associate a libev watcher to the
given file descriptor) fails on the assertion. Everything is as
described in https://github.com/curl/curl/issues/15201.
The first bad libcurl's commit is [curl-8_10_0-4-g48f61e781][1], but
later it was fixed in [curl-8_10_1-241-g461ce6c61][2]. This commit
updates libcurl to this revision to fix the regression.
Adjusted build options in our build script:
* Added `CURL_DISABLE_IPFS=ON`: [curl-8_10_1-57-gce7d0d413][3]
* Added `CURL_TEST_BUNDLES=OFF`: [curl-8_10_1-67-g71cf0d1fc][4]
* Changed `ENABLE_WEBSOCKETS=OFF` to `CURL_DISABLE_WEBSOCKETS=ON`:
[curl-8_10_1-130-gd78e129d5][5]
[1]: https://github.com/curl/curl/commit/48f61e781a01e6a8dbc4a347e280644b1c68ab6a
[2]: https://github.com/curl/curl/commit/461ce6c6160b86439ddd74c59541231ec9e8558e
[3]: https://github.com/curl/curl/commit/ce7d0d41378007eda676c83ad6b86c59870cc9f1
[4]: https://github.com/curl/curl/commit/71cf0d1fca9e1f53524e1545ef0c08d174458d80
[5]: https://github.com/curl/curl/commit/d78e129d50b2d190f1c1bde2ad1f62f02f152db0
NO_DOC=bugfix
NO_CHANGELOG=fixes an unreleased commit
NO_TEST=can't reproduce without https to add a test case, verified
locally
(cherry picked from commit fbe6d0a0a40945c42609f5119a007b5c3980c232)
- Commit:
d835c495c1a58d6f02f2a6abe81512e704023648
- From:
- Ilya Verbin <iverbin@tarantool.org>
- Via:
- Vladimir Davydov <vdavydov@tarantool.org>
- Date:
box: fix UBSan error regarding misaligned store in field_map.c
The type cast is unnecessary and causes false-positive errors:
NO_WRAP
```
./src/box/field_map.c:110:10: runtime error: store to misaligned address 0x507000071082 for type 'uint32_t *' (aka 'unsigned int *'), which requires 4 byte alignment
0x507000071082: note: pointer points here
01 00 00 00 be be be be f0 ff ff ff 02 00 00 00 be be be be be be be be 00 00 00 00 00 00 00 00
^
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ./src/box/field_map.c:110:10
```
NO_WRAP
Closes #10631
NO_DOC=bugfix
NO_CHANGELOG=minor
NO_TEST=tested by debug_asan_clang workflow
(cherry picked from commit 5ddbd85cc377a29dc27d01ad06acdc6acc24cc5b)
- Commit:
ada3dddf380fd4a80441d9b61f2743133d9a53c8
- From:
- Ilya Verbin <iverbin@tarantool.org>
- Via:
- Vladimir Davydov <vdavydov@tarantool.org>
- Date:
small: bump version
New commits:
* mempool: fix UBSan errors regarding misaligned stores
NO_DOC=submodule bump
NO_TEST=submodule bump
NO_CHANGELOG=submodule bump
(cherry picked from commit 9dd56f49be85dc8a1fe874629711a828835f740c)
- Commit:
9c36990eb48d41907357a159a88c4cf5eb018271
- From:
- Ilya Verbin <iverbin@tarantool.org>
- Via:
- Vladimir Davydov <vdavydov@tarantool.org>
- Date:
box: fix SIGSEGV on unaligned access to a struct with extended alignment
All structures with a non-default alignment (set by `alignas()`) must be
allocated by `aligned_alloc()`, otherwise an access to such a structure
member fill crash, e.g. if compiled with AVX-512 support.
Closes #10215
Part of #10631
NO_DOC=bugfix
NO_TEST=tested by debug_asan_clang workflow
NO_CHANGELOG=fix is actually not user-visible, because tarantool still
doesn't work with enabled AVX-512 (#10671)
(cherry picked from commit a60ec82d4f07720148b0724e5feff31f76291b56)