diff options
author | Meir Shpilraien (Spielrein) <meir@redis.com> | 2021-11-28 11:33:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-28 11:33:09 +0200 |
commit | a8c1253b6fd1d85ba33a8749e14e4fa515508df0 (patch) | |
tree | 4d8d37178f66a28776c95e38e93574118f8ca95f /.github/workflows/daily.yml | |
parent | acf3495eb823df8d1f358b1fe59b759fcc49666f (diff) | |
download | redis-a8c1253b6fd1d85ba33a8749e14e4fa515508df0.tar.gz |
Fix Lua C API violation on lua msgpack lib. (#9832)
msgpack lib missed using lua_checkstack and so on rare
cases overflow the stack by at most 2 elements. This is a
violation of the Lua C API. Notice that Lua allocates
additional 5 more elements on top of lua->stack_last
so Redis does not access an invalid memory. But it is an
API violation and we should avoid it.
This PR also added a new Lua compilation option. The new
option can be enable using environment variable called
LUA_DEBUG. If set to `yes` (by default `no`), Lua will be
compiled without optimizations and with debug symbols (`-O0 -g`).
In addition, in this new mode, Lua will be compiled with the
`-DLUA_USE_APICHECK` flag that enables extended Lua C API
validations.
In addition, set LUA_DEBUG=yes on daily valgrind flow so we
will be able to catch Lua C API violations in the future.
Diffstat (limited to '.github/workflows/daily.yml')
-rw-r--r-- | .github/workflows/daily.yml | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index faaaf02ef..a3e31e01a 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -370,7 +370,7 @@ jobs: repository: ${{ env.GITHUB_REPOSITORY }} ref: ${{ env.GITHUB_HEAD_REF }} - name: make - run: make SANITIZER=undefined REDIS_CFLAGS='-DREDIS_TEST' + run: make SANITIZER=undefined REDIS_CFLAGS='-DREDIS_TEST' LUA_DEBUG=yes # we (ab)use this flow to also check Lua C API violations - name: testprep run: | sudo apt-get update |