From 7c9e1a9db194fce90ea23a37cc58b80ba9abdce7 Mon Sep 17 00:00:00 2001 From: Konstantin Osipov <kostja@tarantool.org> Date: Wed, 24 Jun 2015 18:21:22 +0300 Subject: [PATCH] gh-833: fiber.info() doesn't work Push a workaround for infinite loop in backtarce_foreach() when fiber == self: do not try to print trace of the current fiber. --- src/lua/fiber.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lua/fiber.cc b/src/lua/fiber.cc index 02078524a4..e983700ac0 100644 --- a/src/lua/fiber.cc +++ b/src/lua/fiber.cc @@ -242,9 +242,11 @@ lbox_fiber_statof(struct fiber *f, void *cb_ctx) #ifdef ENABLE_BACKTRACE lua_pushstring(L, "backtrace"); lua_newtable(L); - backtrace_foreach(fiber_backtrace_cb, - f->last_stack_frame, - f->coro.stack, f->coro.stack_size, L); + if (f != fiber()) { + backtrace_foreach(fiber_backtrace_cb, + f->last_stack_frame, + f->coro.stack, f->coro.stack_size, L); + } lua_settable(L, -3); #endif /* ENABLE_BACKTRACE */ -- GitLab