From: Igor Munkin via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: Sergey Kaplun <skaplun@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH v2 luajit 23/30] test: disable PUC Lua test for fast function name Date: Wed, 7 Apr 2021 00:37:16 +0300 [thread overview] Message-ID: <20210406213716.GM29703@tarantool.org> (raw) In-Reply-To: <YGbSVExBVyix6awQ@root> Sergey, On 02.04.21, Sergey Kaplun wrote: > Igor, > > Thanks for the review! > > On 31.03.21, Igor Munkin wrote: > > Sergey, > > > > Thanks for the patch! Please consider the comments below. > > > > On 26.03.21, Sergey Kaplun wrote: > > > LuaJIT can't determine bytecode position for non Lua functions > > > (in particular for fast functions) and, therefore, detect built-in > > > function names for errors in tail calls. > > > > Side note: here is the inconsistency in your usage of possessive nouns. > > Fixed. No, it's not, but this doesn't bother me anymore. > <snipped> > > > diff --git a/test/PUC-Lua-5.1-tests/errors.lua b/test/PUC-Lua-5.1-tests/errors.lua > > > index cf24e40..af776a7 100644 > > > --- a/test/PUC-Lua-5.1-tests/errors.lua > > > +++ b/test/PUC-Lua-5.1-tests/errors.lua > > > @@ -105,9 +105,13 @@ while 1 do > > > insert(prefix, a) > > > end]], "global 'insert'") > > > > > > -checkmessage([[ -- tail call > > > - return math.sin("a") > > > -]], "'sin'") > > > +-- LuaJIT: Can't determine bytecode position for non Lua functions > > > +-- (in particular for fast functions) and, therefore, detect fast > > > +-- function names for errors in tail calls. > > > > This is kinda gibberish. I've tried the following snippets and can't > > understand what do you mean by this comment. > > > > | $ luajit -e 'function q(a) return math.sin(a) end q("a")' > > | luajit: (command line):1: bad argument #1 to 'q' (number expected, got string) > > | stack traceback: > > | [C]: in function 'q' > > | (command line):1: in main chunk > > | [C]: at 0x5610e8497eb0 > > | $ luajit -e 'loadstring("return math.sin([[a]])")()' > > | luajit: (command line):1: bad argument #1 to '?' (number expected, got string) > > | stack traceback: > > | [builtin#43]: at 0x7fc0f807ad10 > > | (command line):1: in main chunk > > | [C]: at 0x55c1e85c7eb0 > > > > I understand the first result. The second result surprised me, but I've > > never investigated how loadstring call works (it looks like specifics of > > VARG frame, but this is a wild guess). But neither of them fits your > > explanation. The root cause is the same: callee uses caller frame, since > > caller doesn't need it anymore. Could you please clarify yours? > > This is not about `loadstring()` at all: > > | luajit -e 'return math.sin"a"' > | luajit: bad argument #1 to '?' (number expected, got string) > | stack traceback: > | [builtin#43]: at 0x7f7c2ca6dbe0 > | [C]: at 0x558b0cd4cec0 > > The guest frame is looked like the following (when the error thrown): > | 0x40001938 [ ] VALUE: string "number expected, got string" @ 0x40008380 > | 0x40001930 [ B ] VALUE: string "a" @ 0x40008250 > | 0x40001928 [ ] FRAME: [CP] delta=3, fast function #44 > > When LuaJIT tries to detect function's name it determines bytecode > position first, via `debug_framepc()`. But it can't determine bytecode > position for non-Lua functions: What? Both luajit-gdb.py and LuaJIT itself reports the fast function ID and this is its name. > > | if (!isluafunc(fn)) { /* Cannot derive a PC for non-Lua functions. */ > | return NO_BCPOS; > > > > > > +-- The test is disabled for LuaJIT. > > > +-- checkmessage([[ -- tail call > > > +-- return math.sin("a") > > > +-- ]], "'sin'") > > > > > > checkmessage([[collectgarbage("nooption")]], "invalid option") > > > > > > -- > > > 2.31.0 > > > > > > > -- > > Best regards, > > IM > > -- > Best regards, > Sergey Kaplun -- Best regards, IM
next prev parent reply other threads:[~2021-04-06 21:37 UTC|newest] Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-26 7:42 [Tarantool-patches] [PATCH v2 luajit 00/30] Adapt PUC-Rio Lua 5.1 test suite Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 01/30] test: add " Sergey Kaplun via Tarantool-patches 2021-03-26 10:14 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:13 ` Igor Munkin via Tarantool-patches 2021-04-01 8:11 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 02/30] test: add compiling for C libs from PUC-Rio-Lua5.1 Sergey Kaplun via Tarantool-patches 2021-03-26 11:01 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:14 ` Igor Munkin via Tarantool-patches 2021-04-01 8:21 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 03/30] test: adapt Lua 5.1 suite for out-of-source build Sergey Kaplun via Tarantool-patches 2021-03-26 11:07 ` Sergey Ostanevich via Tarantool-patches 2021-03-26 14:25 ` Sergey Kaplun via Tarantool-patches 2021-03-31 22:58 ` Igor Munkin via Tarantool-patches 2021-04-01 8:43 ` Sergey Kaplun via Tarantool-patches 2021-03-31 22:58 ` Igor Munkin via Tarantool-patches 2021-04-01 8:40 ` Sergey Kaplun via Tarantool-patches 2021-04-06 16:56 ` Igor Munkin via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 04/30] test: remove quotes in progname from <main.lua> Sergey Kaplun via Tarantool-patches 2021-03-26 11:12 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 22:58 ` Igor Munkin via Tarantool-patches 2021-04-01 8:50 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 05/30] test: adapt arg availability test from Lua suite Sergey Kaplun via Tarantool-patches 2021-03-26 11:22 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 22:58 ` Igor Munkin via Tarantool-patches 2021-04-01 9:37 ` Sergey Kaplun via Tarantool-patches 2021-04-06 15:24 ` Igor Munkin via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 06/30] test: disable PUC Lua tests confused by -v output Sergey Kaplun via Tarantool-patches 2021-03-26 11:26 ` Sergey Ostanevich via Tarantool-patches 2021-03-26 14:31 ` Sergey Kaplun via Tarantool-patches 2021-03-31 22:58 ` Igor Munkin via Tarantool-patches 2021-04-01 9:56 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 07/30] test: disable Lua tests for bytecode with header Sergey Kaplun via Tarantool-patches 2021-03-26 11:30 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 22:59 ` Igor Munkin via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 08/30] test: disable JIT for GC step counting tests Sergey Kaplun via Tarantool-patches 2021-03-26 11:32 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:14 ` Igor Munkin via Tarantool-patches 2021-04-01 10:10 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 09/30] test: disable Lua suite tests for line hook Sergey Kaplun via Tarantool-patches 2021-03-26 11:35 ` Sergey Ostanevich via Tarantool-patches 2021-03-26 14:33 ` Sergey Kaplun via Tarantool-patches 2021-03-31 22:59 ` Igor Munkin via Tarantool-patches 2021-04-01 10:06 ` Sergey Kaplun via Tarantool-patches 2021-04-06 19:45 ` Igor Munkin via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 10/30] test: adapt test for debug.setlocal in Lua suite Sergey Kaplun via Tarantool-patches 2021-03-26 11:44 ` Sergey Ostanevich via Tarantool-patches 2021-03-26 14:45 ` Sergey Kaplun via Tarantool-patches 2021-03-30 22:14 ` Igor Munkin via Tarantool-patches 2021-04-01 10:16 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 11/30] test: adapt getlocal PUC test for vararg func Sergey Kaplun via Tarantool-patches 2021-03-26 11:47 ` Sergey Ostanevich via Tarantool-patches 2021-03-26 14:52 ` Sergey Kaplun via Tarantool-patches 2021-03-30 22:15 ` Igor Munkin via Tarantool-patches 2021-04-01 11:37 ` Sergey Kaplun via Tarantool-patches 2021-04-06 20:09 ` Igor Munkin via Tarantool-patches 2021-04-06 20:40 ` Igor Munkin via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 12/30] test: adapt PUC Lua test with count hooks Sergey Kaplun via Tarantool-patches 2021-03-26 11:49 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:15 ` Igor Munkin via Tarantool-patches 2021-04-01 11:42 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 13/30] test: disable PUC Lua test for tail call info Sergey Kaplun via Tarantool-patches 2021-03-26 14:43 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:15 ` Igor Munkin via Tarantool-patches 2021-04-01 11:52 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 14/30] test: adapt activeline check in the PUC Lua test Sergey Kaplun via Tarantool-patches 2021-03-26 14:50 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:15 ` Igor Munkin via Tarantool-patches 2021-04-01 11:58 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 15/30] test: disable PUC-Lua test for per-coroutine hooks Sergey Kaplun via Tarantool-patches 2021-03-26 14:54 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:16 ` Igor Munkin via Tarantool-patches 2021-04-01 12:03 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:42 ` [Tarantool-patches] [PATCH v2 luajit 16/30] test: adapt PUC Lua test for %q in fmt for LuaJIT Sergey Kaplun via Tarantool-patches 2021-03-26 14:56 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:16 ` Igor Munkin via Tarantool-patches 2021-04-01 12:33 ` Sergey Kaplun via Tarantool-patches 2021-04-06 21:37 ` Igor Munkin via Tarantool-patches 2021-04-07 15:50 ` Sergey Kaplun via Tarantool-patches 2021-04-07 16:31 ` Igor Munkin via Tarantool-patches 2021-04-08 8:51 ` Sergey Kaplun via Tarantool-patches 2021-04-12 10:26 ` Igor Munkin via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 17/30] test: disable locale-depended tests for Lua suite Sergey Kaplun via Tarantool-patches 2021-03-26 14:58 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:16 ` Igor Munkin via Tarantool-patches 2021-04-01 19:12 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 18/30] test: replace math.mod to math.fmod for Lua tests Sergey Kaplun via Tarantool-patches 2021-03-26 15:12 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:17 ` Igor Munkin via Tarantool-patches 2021-03-26 15:16 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:16 ` Igor Munkin via Tarantool-patches 2021-04-01 19:36 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 19/30] test: remove assert for string.gfind check Sergey Kaplun via Tarantool-patches 2021-03-26 15:14 ` Sergey Ostanevich via Tarantool-patches 2021-03-30 22:17 ` Igor Munkin via Tarantool-patches 2021-04-02 7:05 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 20/30] test: adapt PUC Lua test for args in vararg func Sergey Kaplun via Tarantool-patches 2021-03-26 14:54 ` Sergey Kaplun via Tarantool-patches 2021-03-26 15:22 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 9:51 ` Igor Munkin via Tarantool-patches 2021-04-02 7:21 ` Sergey Kaplun via Tarantool-patches 2021-04-06 20:45 ` Igor Munkin via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 21/30] test: disable test for getfenv in closure tailcall Sergey Kaplun via Tarantool-patches 2021-03-26 15:41 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 9:51 ` Igor Munkin via Tarantool-patches 2021-04-02 7:40 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 22/30] test: disable PUC Lua test for var names in error Sergey Kaplun via Tarantool-patches 2021-03-26 15:44 ` Sergey Ostanevich via Tarantool-patches 2021-03-26 16:01 ` Sergey Kaplun via Tarantool-patches 2021-03-31 19:23 ` Igor Munkin via Tarantool-patches 2021-04-02 7:48 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 23/30] test: disable PUC Lua test for fast function name Sergey Kaplun via Tarantool-patches 2021-03-26 15:45 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 19:23 ` Igor Munkin via Tarantool-patches 2021-04-02 8:14 ` Sergey Kaplun via Tarantool-patches 2021-04-06 21:37 ` Igor Munkin via Tarantool-patches [this message] 2021-04-07 16:06 ` Sergey Kaplun via Tarantool-patches 2021-04-07 16:11 ` Igor Munkin via Tarantool-patches 2021-04-07 19:57 ` Sergey Kaplun via Tarantool-patches 2021-04-12 9:36 ` Igor Munkin via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 24/30] test: disable PUC Lua test for non-asci identifier Sergey Kaplun via Tarantool-patches 2021-03-26 15:46 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 19:23 ` Igor Munkin via Tarantool-patches 2021-04-02 8:20 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 25/30] test: disable PUC Lua error test for syntax level Sergey Kaplun via Tarantool-patches 2021-03-26 15:52 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 19:24 ` Igor Munkin via Tarantool-patches 2021-04-02 8:30 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 26/30] test: disable tests with multiple -l options Sergey Kaplun via Tarantool-patches 2021-03-26 15:56 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 19:24 ` Igor Munkin via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 27/30] test: disable PUC Lua test for checking arg layout Sergey Kaplun via Tarantool-patches 2021-03-26 15:58 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 19:24 ` Igor Munkin via Tarantool-patches 2021-04-02 8:35 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 28/30] test: disable PUC Lua test checking -h option Sergey Kaplun via Tarantool-patches 2021-03-26 15:58 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 19:24 ` Igor Munkin via Tarantool-patches 2021-04-02 8:39 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 29/30] test: disable PUC Lua hanging GC test Sergey Kaplun via Tarantool-patches 2021-03-26 16:03 ` Sergey Ostanevich via Tarantool-patches 2021-03-31 19:24 ` Igor Munkin via Tarantool-patches 2021-03-31 19:24 ` Igor Munkin via Tarantool-patches 2021-04-02 8:45 ` Sergey Kaplun via Tarantool-patches 2021-03-26 7:43 ` [Tarantool-patches] [PATCH v2 luajit 30/30] test: disable too depth recursive PUC Lua test Sergey Kaplun via Tarantool-patches 2021-03-26 16:28 ` Sergey Ostanevich via Tarantool-patches 2021-03-26 16:45 ` Sergey Kaplun via Tarantool-patches 2021-03-31 19:24 ` Igor Munkin via Tarantool-patches 2021-04-02 8:47 ` Sergey Kaplun via Tarantool-patches 2021-03-26 11:09 ` [Tarantool-patches] [PATCH v2 luajit 00/30] Adapt PUC-Rio Lua 5.1 test suite Sergey Ostanevich via Tarantool-patches 2021-03-26 14:12 ` Sergey Kaplun via Tarantool-patches 2021-03-30 22:17 ` Igor Munkin via Tarantool-patches 2021-03-31 9:41 ` Sergey Kaplun via Tarantool-patches 2021-03-31 10:49 ` Igor Munkin via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210406213716.GM29703@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=imun@tarantool.org \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v2 luajit 23/30] test: disable PUC Lua test for fast function name' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox