[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: LuaJIT core assertion issue
- From: Mike Pall <mikelu-1012@...>
- Date: Tue, 7 Dec 2010 17:14:01 +0100
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