From: Maxim Kokryashkin via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: tarantool-patches@dev.tarantool.org, imun@tarantool.org, skaplun@tarantool.org Subject: [Tarantool-patches] [PATCH luajit] sysprof: disable proto and trace dumps in default Date: Sun, 12 Jun 2022 21:52:20 +0300 [thread overview] Message-ID: <20220612185220.502537-1-m.kokryashkin@tarantool.org> (raw) There is no need to dump proto or trace information for sysprof in the default mode. Moreover, attempts to do so will lead to segmentation fault due to uninitialized buffer. This commit disables proto and trace dumps in the default mode. Resolves tarantool/tarantool#7264 --- PR: https://github.com/tarantool/tarantool/pull/7265 Branch: https://github.com/tarantool/luajit/tree/fckxorg/gh-7264-dump-proto-default-mode src/lj_sysprof.c | 4 +- ...4-add-proto-trace-sysprof-default.test.lua | 58 +++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua diff --git a/src/lj_sysprof.c b/src/lj_sysprof.c index a4a70146..2e9ed9b3 100644 --- a/src/lj_sysprof.c +++ b/src/lj_sysprof.c @@ -524,7 +524,7 @@ void lj_sysprof_add_proto(const struct GCproto *pt) { struct sysprof *sp = &sysprof; - if (sp->state != SPS_PROFILE) + if (sp->state != SPS_PROFILE || sp->opt.mode == LUAM_SYSPROF_DEFAULT) return; /* @@ -543,7 +543,7 @@ void lj_sysprof_add_trace(const struct GCtrace *tr) { struct sysprof *sp = &sysprof; - if (sp->state != SPS_PROFILE) + if (sp->state != SPS_PROFILE || sp->opt.mode == LUAM_SYSPROF_DEFAULT) return; /* See the comment about the sysprof state above. */ diff --git a/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua b/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua new file mode 100644 index 00000000..2d2a756a --- /dev/null +++ b/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua @@ -0,0 +1,58 @@ +-- Sysprof is implemented for x86 and x64 architectures only. +local ffi = require("ffi") +require("utils").skipcond( + jit.arch ~= "x86" and jit.arch ~= "x64" or jit.os ~= "Linux" + or ffi.abi("gc64"), + jit.arch.." architecture or "..jit.os.. + " OS is NIY for sysprof" +) + +local tap = require("tap") +local jit = require("jit") + +local test = tap.test("gh-7264-add-proto-trace-sysprof-default.test.lua") +test:plan(2) + +jit.off() +jit.flush() + +local function allocate() + local a = {} + for _ = 1, 1e4 do table.insert(a, "teststring") end + return a +end + +local chunk = [[ +function lua_global_f() + local a = 'teststring' +end +]] + +-- Trace creation during the sysprof runtime. +jit.on() + +local _ = nil +local res, err = misc.sysprof.start({ mode = "D" }) +assert(res, err) +allocate() +res, _ = misc.sysprof.stop() +test:ok(res) + +jit.off() + +-- Proto creation during the sysprof runtime. +res, err = misc.sysprof.start({ mode = "D" }) +assert(res, err) + +res, err = loadstring(chunk) +assert(res, err) +res() + +-- luacheck: globals lua_global_f +lua_global_f() +collectgarbage() +res, _ = misc.sysprof.stop() +test:ok(res) + +jit.on() +os.exit(test:check() and 0 or 1) -- 2.36.1
next reply other threads:[~2022-06-12 18:52 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-06-12 18:52 Maxim Kokryashkin via Tarantool-patches [this message] 2022-06-16 6:56 ` Sergey Kaplun via Tarantool-patches 2022-07-04 15:27 ` Maxim Kokryashkin via Tarantool-patches 2022-07-15 13:36 ` Igor Munkin via Tarantool-patches 2022-11-11 8:54 ` 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=20220612185220.502537-1-m.kokryashkin@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=imun@tarantool.org \ --cc=max.kokryashkin@gmail.com \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit] sysprof: disable proto and trace dumps in default' \ /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