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 luajit v1] tools: fix luajit-gdb stack dump Date: Thu, 22 Jul 2021 16:34:24 +0300 [thread overview] Message-ID: <20210722133424.GN11494@tarantool.org> (raw) In-Reply-To: <20210618062234.871-1-skaplun@tarantool.org> Sergey, I've checked the patch into all long-term branches in tarantool/luajit and bumped a new version in 1.10, 2.7, 2.8 and master. On 18.06.21, Sergey Kaplun wrote: > When there is only one frame (so-called dummy frame) with a dummy thread > on stack bottom at L->base - 1 - LJ_FR2, stack dump does not show stack > slots from bottom to top, because the frame link is already pointed to > stack bottom (dummy thread mentioned above). Its output looks like the > following: > > | 0x7fb512ac40:0x7fb512ac70 [ ] 7 slots: Red zone > | 0x7fb512ac38 [ M] > | 0x7fb512ab28:0x7fb512ac30 [ ] 34 slots: Free stack slots > | 0x7fb512ab20 [ T ] > | 0x7fb512ab08:0x7fb512ab10 [S ] FRAME: dummy L > > This patch unrolled first loop iteration. Stack dump first inspect all > fields for the top frame and then continue if there are other frames. > After patch the output looks like the following: > > | 0x7fb512ac40:0x7fb512ac70 [ ] 7 slots: Red zone > | 0x7fb512ac38 [ M] > | 0x7fb512ab28:0x7fb512ac30 [ ] 34 slots: Free stack slots > | 0x7fb512ab20 [ T ] > | 0x7fb512ab18 [ ] VALUE: string 0 "/tmp/net_box.lua:6: err in ser" @ 0x7fb512ade8 > | 0x7fb512ab10 [ B ] VALUE: table @ 0x7fb512ac80 (asize: 0, hmask: 0x0) > | 0x7fb512ab00:0x7fb512ab08 [S ] FRAME: dummy L > --- > > Branch: https://github.com/tarantool/luajit/tree/skaplun/fix-luajit-gdb > > Steps to test behaviour: > 0) Clone branch > 1) Build tarantool with GC64 or not (I've tested both cases) > 2) Run the following script </tmp/net_box.lua> by Tarantool via gdb. > > | $ cat /tmp/netbox.lua > | box.cfg{log_level = 50, listen = "127.0.0.1:3802"} > | box.schema.user.grant('guest','read,write,execute','universe', nil, {if_not_exists=true}) > | local net_box = require"net.box" > | local cn = net_box:connect("127.0.0.1:3802") > | local function f() > | return setmetatable({}, {__serialize = function() error[[err in ser]] end}) > | end > | _G.f = f > | local r, st = cn:call("f") > | print(r,st) > > | $ gdb --args ./tarantool /tmp/netbox.lua > | ... > | (gdb) source ~/builds_workspace/luajit/fix-luajit-gdb/src/luajit-gdb.py > | ... > > 3) Set breakpoint to ./src/lua/msgpack.c:234, and run > > | (gdb) b ./src/lua/msgpack.c:234 > > I'm not sure about your sources version, so you can just set breakpoin to > mp_encode(), run and continue (need two entries). We are interested in > the line #234: > > | 233|.......if (luaL_tofield(L, cfg, opts, lua_gettop(L), &field) < 0) > | 234|.......|.......return luaT_error(L); > > And dump the stack: > > | (gdb) lj-stack L > | 0x7fb512ac40:0x7fb512ac70 [ ] 7 slots: Red zone > | 0x7fb512ac38 [ M] > | 0x7fb512ab28:0x7fb512ac30 [ ] 34 slots: Free stack slots > | 0x7fb512ab20 [ T ] > | 0x7fb512ab18 [ ] VALUE: string 0 "/tmp/net_box.lua:6: err in ser" @ 0x7fb512ade8 > | 0x7fb512ab10 [ B ] VALUE: table @ 0x7fb512ac80 (asize: 0, hmask: 0x0) > | 0x7fb512ab00:0x7fb512ab08 [S ] FRAME: dummy L > > src/luajit-gdb.py | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > <snipped> > -- > 2.31.0 > -- Best regards, IM
prev parent reply other threads:[~2021-07-22 13:58 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-18 6:22 Sergey Kaplun via Tarantool-patches 2021-07-05 7:03 ` Sergey Kaplun via Tarantool-patches 2021-07-20 12:29 ` Igor Munkin via Tarantool-patches 2021-07-21 8:49 ` Sergey Kaplun via Tarantool-patches 2021-07-21 8:54 ` Igor Munkin via Tarantool-patches 2021-07-22 10:32 ` Sergey Ostanevich via Tarantool-patches 2021-07-22 11:48 ` Igor Munkin via Tarantool-patches 2021-07-22 12:51 ` Sergey Ostanevich via Tarantool-patches 2021-07-21 9:02 ` Sergey Kaplun via Tarantool-patches 2021-07-22 13:34 ` Igor Munkin via Tarantool-patches [this message]
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=20210722133424.GN11494@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=imun@tarantool.org \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit v1] tools: fix luajit-gdb stack dump' \ /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