mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
fix: use same hash seed when creating VM for shared tables (#2122)
When creating a new Lua VM to load shared tables, use the same hash seed from the parent VM instead of generating a new random seed. Different VMs have different hash seeds, causing identical strings to have different hash values. When looking up string keys in a shared table from another VM, the hash-based bucket lookup fails because the search key's hash doesn't match the stored key's hash. Solution: Pass G(L)->seed to lua_newstate() instead of using luaL_newstate() which generates a new random seed each time.
This commit is contained in:
@@ -192,7 +192,7 @@ load_matrixfile(lua_State *L) {
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
matrix_from_file(lua_State *L) {
|
matrix_from_file(lua_State *L) {
|
||||||
lua_State *mL = luaL_newstate();
|
lua_State *mL = lua_newstate(luaL_alloc, NULL, G(L)->seed);
|
||||||
if (mL == NULL) {
|
if (mL == NULL) {
|
||||||
return luaL_error(L, "luaL_newstate failed");
|
return luaL_error(L, "luaL_newstate failed");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user