From 92e130cb55d340d8b52b63c32760351d3c24e425 Mon Sep 17 00:00:00 2001 From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Date: Fri, 13 Apr 2018 00:41:08 +0300 Subject: [PATCH] console: fix a bug in interactive readline usage Spurious wakeups are possible in console, that makes readline think that there are some data on stdin. Waked up readline returns garbage instead of string, that crashes a server on assertion in Lua. Closes #3343 --- src/box/lua/console.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/box/lua/console.c b/src/box/lua/console.c index d27d7ecac3..7a5ac5550d 100644 --- a/src/box/lua/console.c +++ b/src/box/lua/console.c @@ -221,8 +221,9 @@ lbox_console_readline(struct lua_State *L) */ rl_callback_handler_install(prompt, console_push_line); top = lua_gettop(L); - while (top == lua_gettop(L) && - coio_wait(STDIN_FILENO, COIO_READ, TIMEOUT_INFINITY)) { + while (top == lua_gettop(L)) { + while (coio_wait(STDIN_FILENO, COIO_READ, + TIMEOUT_INFINITY) == 0); rl_callback_read_char(); } -- GitLab