lj_debug frame self-reference.

  • From: Theo Schlossnagle <jesus@xxxxxxxxxx>
  • To: luajit@xxxxxxxxxxxxx
  • Date: Fri, 24 Feb 2017 08:47:11 -0500

We've run into an issue with a debug stack frame self-reference that causes
and infinite loop.  I can't seem to figure out how we get into this state,
but this addresses it.  Anyone have any idea why we're seeing this and if
this work-around is correct or covering up some other problem?

diff --git a/src/lj_debug.c b/src/lj_debug.c
index 959dc28..c8710cb 100644
--- a/src/lj_debug.c
+++ b/src/lj_debug.c
@@ -40,6 +40,11 @@ cTValue *lj_debug_frame(lua_State *L, int level, int
*size)
       if (frame_isvarg(frame))
        level++;  /* Skip vararg pseudo-frame. */
       frame = frame_prevd(frame);
+
+      /* bail on infinite loop */
+      if (frame == nextframe) {
+       break;
+      }
     }
   }
   *size = level;

-- 

Theo Schlossnagle

http://omniti.com/is/theo-schlossnagle

Other related posts:

  • » lj_debug frame self-reference. - Theo Schlossnagle