[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Bug in luaD_precall
 
- From: 云风 <cloudwu@...>
 
- Date: Fri, 19 Apr 2013 10:52:37 +0800
 
define LUA_USE_APICHECK has no help to this problem,
I add some log in function luaD_precall to show what happend:
      StkId base;
      Proto *p = clLvalue(func)->p;
      printf("stack cap = %d , maxstacksize = %d\n", L->stack_last -
L->top, p->maxstacksize);
      /* stack cap = 26 , maxstacksize = 23 */
      luaD_checkstack(L, p->maxstacksize);
      func = restorestack(L, funcr);
      n = cast_int(L->top - func) - 1;  /* number of real arguments */
      printf("stack cap before complete missing arguments = %d\n",
L->stack_last - L->top);
      /* stack cap before complete missing arguments = 26 */
      for (; n < p->numparams; n++)
        setnilvalue(L->top++);  /* complete missing arguments */
      printf("stack cap after complete missing arguments = %d\n",
L->stack_last - L->top);
      /* stack cap after complete missing arguments = 17 */
      base = (!p->is_vararg) ? func + 1 : adjust_varargs(L, p, n);
      printf("L->stack_last - base = %d , maxstacksize = %d\n",
L->stack_last - base, p->maxstacksize);
      /* L->stack_last - base = 17 , maxstacksize = 23 */
      ci = next_ci(L);  /* now 'enter' new function */
      ci->nresults = nresults;
      ci->func = func;
      ci->u.l.base = base;
      ci->top = base + p->maxstacksize;
      printf("L->stack_last - ci->top = %d\n", L->stack_last - ci->top);
      /* L->stack_last - ci->top = -6 */
      lua_assert(ci->top <= L->stack_last);
      /* assert failed */
2013/4/19 Luiz Henrique de Figueiredo <lhf@tecgraf.puc-rio.br>:
>> But if I then recall the source code with uparrow and add
>> some characters before "end", such that the code is no
>> longer valid, say `..end`, then I get a segmentation fault.
>
> I cannot reproduce this. I get the expected error message:
>         stdin:4: unexpected symbol near '..'
>
> I cannot reproduce the OP's crash either, even with LUA_USE_APICHECK on.
>
-- 
http://blog.codingnow.com