lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Arseny Vakhrushev wrote:
> luasrv_lj: lj_record.c:130: rec_check_slots: Assertion `itype2irt(tv) == ((IRType)(((tr)>>24) & IRT_TYPE))' failed.
> 
> luasrv_lj: lj_record.c:128: rec_check_slots: Assertion `((((((tr))>>24) & IRT_TYPE) - (TRef)(IRT_NUM) <= (TRef)(IRT_U16-IRT_NUM)))' failed.

This indicates the trace recorder got out of sync with the
interpreter state. Bad things may happen after that.

> Additionally, I have a core file to dig.

If this is a core file from an assertion then we can do some more
analysis. Try to load the core file into gdb, then select the
highest frame that has the J parameter in it. Print the value of
J->pt. If it's non-NULL, then please do the following:

x/s ((GCstr *)J->pt->chunkname.gcptr32)+1
p ((BCLine *)J->pt->lineinfo.ptr32)[0]
p ((BCLine *)J->pt->lineinfo.ptr32)[(int *)J->pc-(int *)((char *)J->pt+sizeof(GCproto))]
p (int *)J->pc-(int *)((char *)J->pt+sizeof(GCproto))

This prints in order: the name of the file, the line where the
function was defined and the line for the bytecode where a failure
was detected. The last one prints the bytecode offset. Please
compare this against -jbc and show me the surrounding bytecodes
plus the source code of the function (if possible).

--Mike