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