From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 9BDDE6F153; Wed, 17 Aug 2022 12:27:00 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 9BDDE6F153 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1660728420; bh=jusoW6ugFxO4o9Zm/w1fPhibHuDxwWzQ8zZZKmNN30U=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=fjhTD5sfIpa+6Jyi5ppXBTq6kCg08KLihidMnvbTD4ufF/PLSrY92aZwJJVqUgZyu f0OQTQhu85WnrfR3m5ULStAPiR8GZnB/vmtv7q1f+m5Rqu2BZqxmtQckbmQdpOrZbQ dCn6rwVR+hIsTizGm85AJmxZ3jNefeUj916lDYvg= Received: from smtpng3.i.mail.ru (smtpng3.i.mail.ru [94.100.177.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 64D386F153 for ; Wed, 17 Aug 2022 12:26:58 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 64D386F153 Received: by smtpng3.m.smailru.net with esmtpa (envelope-from ) id 1oOFKD-0002BZ-5l; Wed, 17 Aug 2022 12:26:57 +0300 To: Sergey Ostanevich , Igor Munkin Date: Wed, 17 Aug 2022 12:24:24 +0300 Message-Id: <20220817092424.19463-1-skaplun@tarantool.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD999D8F08CF16C6CA71DBD9C3FAC4D955E2B144A54E1E1C57300894C459B0CD1B9230BEF1FAAE51DF5CFCF5A38D69C531BB6C54DBDAC6E689D4634D9B51EFD7DC0 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE78044725E6B9C7F2CEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F79006378D8F1FE4E764DFCDEA1F7E6F0F101C6723150C8DA25C47586E58E00D9D99D84E1BDDB23E98D2D38B8859CA687ABA27BAE0B920DE3CC1C266F752B5004363825DCC7F00164DA146DAFE8445B8C89999728AA50765F79006373F278AD70EDB56F1389733CBF5DBD5E9C8A9BA7A39EFB766F5D81C698A659EA7CC7F00164DA146DA9985D098DBDEAEC82FFDA4F57982C5F4F6B57BC7E6449061A352F6E88A58FB86F5D81C698A659EA7E827F84554CEF5019E625A9149C048EE9ECD01F8117BC8BEE2021AF6380DFAD18AA50765F790063735872C767BF85DA227C277FBC8AE2E8B7EBC23080893F72675ECD9A6C639B01B4E70A05D1297E1BBCB5012B2E24CD356 X-C1DE0DAB: C20DE7B7AB408E4181F030C43753B8186998911F362727C4F3D9923D2ACB1A8F9C2B6934AE262D3EE7EAB7254005DCEDD193D0BC5073EE450003EFFB447AF238D59269BC5F550898728CF7B057D10C70ED96AA85C75E140DE71C62924816F3340042FE9E73E973AF17A6586CE9496FEC8CC5112E3E56BCDB7C6FB206A91F05B2B45D096829C66E3C485DD5F0DA5B5395D483B058B28E5D0938CAC7F44FE29C9633AE16D62440B76777CE9183022092A84EAF44D9B582CE87C8A4C02DF684249C2E763F503762DF504DBC578B17CB11D78E8E86DC7131B365E7726E8460B7C23C X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D346B71C4B0698719D7CA15654D401331D6CBE5D969933813828C05B415BA48401E14BC0F394C8C5EFB1D7E09C32AA3244CB7D2B48AD549BB9F949A8FB3355C3A22250262A5EE9971B0927AC6DF5659F194 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojbL9S8ysBdXhEOu3d5nTWFo9RtLNR281l X-DA7885C5: 2C7F035B54A38D7462A29EFFC7B754612F068E94FDBF50AD5A1DE1784F42DA89262E2D401490A4A0DB037EFA58388B346E8BC1A9835FDE71 X-Mailru-Sender: 689FA8AB762F7393CC2E0F076E87284EC29710990437D228A5318F63262185B40FBE9A32752B8C9C2AA642CC12EC09F1FB559BB5D741EB962F61BD320559CF1EFD657A8799238ED55FEEDEB644C299C0ED14614B50AE0675 X-Mras: Ok Subject: [Tarantool-patches] [PATCH luajit] test: disable jit tests at M1 for Tarantool X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Kaplun via Tarantool-patches Reply-To: Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" During running JIT-related tests on Tarantool the trace assembling occasionally fails with the error "failed to allocate mcode memory" because there are no suitable addresses available. This patch disables those tests for Tarantool in a similar way as it is done for FreeBSD. Also, this patch refactors `utils.skipcond()` a bit to make it call readable with multiple conditions/reasons pairs. Relates to tarantool/tarantool#7571 --- Tarantool PR: https://github.com/tarantool/tarantool/pull/7578 Issue: https://github.com/tarantool/tarantool/issues/7571 Branch: https://github.com/tarantool/luajit/tree/skaplun/gh-7571-disable-jit-tests-m1-full-ci Side note: Looks like adding the trampoline, as Sergos suggested is the correct solution of this issue. For now just disable JIT related tests only for Tarantool. .../gh-4199-gc64-fuse.test.lua | 2 +- .../gh-4427-ffi-sandwich.test.lua | 7 ++++-- .../gh-5813-resolving-of-c-symbols.test.lua | 10 ++++----- ...4-add-proto-trace-sysprof-default.test.lua | 12 +++++----- .../lj-430-maxirconst.test.lua | 8 +++++-- ...lj-672-cdata-allocation-recording.test.lua | 8 +++++-- .../lj-flush-on-trace.test.lua | 7 ++++-- .../misclib-getmetrics-capi.test.lua | 8 +++++-- .../misclib-getmetrics-lapi.test.lua | 8 +++++-- .../misclib-memprof-lapi.test.lua | 17 +++++++------- .../misclib-sysprof-capi.test.lua | 11 +++++----- .../misclib-sysprof-lapi.test.lua | 11 +++++----- test/tarantool-tests/utils.lua | 22 ++++++++++++++----- 13 files changed, 83 insertions(+), 48 deletions(-) diff --git a/test/tarantool-tests/gh-4199-gc64-fuse.test.lua b/test/tarantool-tests/gh-4199-gc64-fuse.test.lua index 4d69250f..04950fd2 100644 --- a/test/tarantool-tests/gh-4199-gc64-fuse.test.lua +++ b/test/tarantool-tests/gh-4199-gc64-fuse.test.lua @@ -1,6 +1,6 @@ -- The test is GC64 only. local ffi = require('ffi') -require('utils').skipcond(not ffi.abi('gc64'), 'test is GC64 only') +require('utils').skipcond({not ffi.abi('gc64'), 'test is GC64 only'}) local tap = require('tap') local test = tap.test('gh-4199-gc64-fuse') diff --git a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua index dd02130c..fea1d181 100644 --- a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua +++ b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua @@ -1,7 +1,10 @@ local utils = require('utils') --- Disabled on *BSD due to #4819. -utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) utils.selfrun(arg, { { diff --git a/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua b/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua index d589dddf..ff0c48e6 100644 --- a/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua +++ b/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua @@ -1,8 +1,8 @@ --- Memprof is implemented for x86 and x64 architectures only. -require("utils").skipcond( - jit.arch ~= "x86" and jit.arch ~= "x64" or jit.os ~= "Linux", - jit.arch.." architecture or "..jit.os.. - " OS is NIY for memprof c symbols resolving" +local utils = require("utils") +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", jit.arch .. + " architecture is NIY for memprof c symbols resolving"}, + {jit.os ~= "Linux", jit.os .. " OS is NIY for memprof c symbols resolving"} ) local tap = require("tap") 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 index 15bd0a8b..332d4711 100644 --- 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 @@ -1,9 +1,9 @@ --- Sysprof is implemented for x86 and x64 architectures only. -require('utils').skipcond( - jit.arch ~= 'x86' and jit.arch ~= 'x64' or jit.os ~= 'Linux' - or require('ffi').abi('gc64'), - jit.arch..' architecture or '..jit.os.. - ' OS is NIY for sysprof' +local utils = require('utils') +utils.skipcond( + {jit.arch ~= 'x86' and jit.arch ~= 'x64', jit.arch .. + ' architecture is NIY for sysprof'}, + {jit.os ~= 'Linux', jit.os .. ' OS is NIY for sysprof'}, + {require('ffi').abi('gc64'), 'GC64 mode is NIY for sysprof'} ) local tap = require('tap') diff --git a/test/tarantool-tests/lj-430-maxirconst.test.lua b/test/tarantool-tests/lj-430-maxirconst.test.lua index cd3587a8..b95aacbd 100644 --- a/test/tarantool-tests/lj-430-maxirconst.test.lua +++ b/test/tarantool-tests/lj-430-maxirconst.test.lua @@ -3,8 +3,12 @@ jit.off() jit.flush() --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local tap = require('tap') local traceinfo = require('jit.util').traceinfo diff --git a/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua b/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua index 1dc741d8..c72688d6 100644 --- a/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua +++ b/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua @@ -1,5 +1,9 @@ --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local ffi = require('ffi') local traceinfo = require('jit.util').traceinfo diff --git a/test/tarantool-tests/lj-flush-on-trace.test.lua b/test/tarantool-tests/lj-flush-on-trace.test.lua index c46b93f0..006c61f0 100644 --- a/test/tarantool-tests/lj-flush-on-trace.test.lua +++ b/test/tarantool-tests/lj-flush-on-trace.test.lua @@ -1,7 +1,10 @@ local utils = require('utils') --- Disabled on *BSD due to #4819. -utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) utils.selfrun(arg, { { diff --git a/test/tarantool-tests/misclib-getmetrics-capi.test.lua b/test/tarantool-tests/misclib-getmetrics-capi.test.lua index 0cbc6cae..f747500b 100644 --- a/test/tarantool-tests/misclib-getmetrics-capi.test.lua +++ b/test/tarantool-tests/misclib-getmetrics-capi.test.lua @@ -1,5 +1,9 @@ --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local path = arg[0]:gsub('%.test%.lua', '') local suffix = package.cpath:match('?.(%a+);') diff --git a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua index 222e7d01..50a4fce3 100644 --- a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua +++ b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua @@ -2,8 +2,12 @@ -- Major portions taken verbatim or adapted from the LuaVela testing suite. -- Copyright (C) 2015-2019 IPONWEB Ltd. --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local tap = require('tap') diff --git a/test/tarantool-tests/misclib-memprof-lapi.test.lua b/test/tarantool-tests/misclib-memprof-lapi.test.lua index a11f0be1..66fb2108 100644 --- a/test/tarantool-tests/misclib-memprof-lapi.test.lua +++ b/test/tarantool-tests/misclib-memprof-lapi.test.lua @@ -1,7 +1,8 @@ -- Memprof is implemented for x86 and x64 architectures only. -require("utils").skipcond( - jit.arch ~= "x86" and jit.arch ~= "x64", - jit.arch.." architecture is NIY for memprof" +local utils = require('utils') +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", + jit.arch .. " architecture is NIY for memprof"} ) local tap = require("tap") @@ -189,9 +190,9 @@ test:test("output", function(subtest) -- one is the number of allocations. 1 event - alocation of -- table by itself + 1 allocation of array part as far it is -- bigger than LJ_MAX_COLOSIZE (16). - subtest:ok(check_alloc_report(alloc, { line = 35, linedefined = 33 }, 2)) + subtest:ok(check_alloc_report(alloc, { line = 36, linedefined = 34 }, 2)) -- 20 strings allocations. - subtest:ok(check_alloc_report(alloc, { line = 40, linedefined = 33 }, 20)) + subtest:ok(check_alloc_report(alloc, { line = 41, linedefined = 34 }, 20)) -- Collect all previous allocated objects. subtest:ok(free.INTERNAL.num == 22) @@ -291,10 +292,10 @@ test:test("jit-output", function(subtest) -- 10 allocations in interpreter mode, 1 allocation for a trace -- recording and assembling and next 9 allocations will happen -- while running the trace. - subtest:ok(check_alloc_report(alloc, { line = 40, linedefined = 33 }, 11)) - subtest:ok(check_alloc_report(alloc, { traceno = 1, line = 38 }, 9)) + subtest:ok(check_alloc_report(alloc, { line = 41, linedefined = 34 }, 11)) + subtest:ok(check_alloc_report(alloc, { traceno = 1, line = 39 }, 9)) -- See same checks with jit.off(). - subtest:ok(check_alloc_report(alloc, { line = 35, linedefined = 33 }, 2)) + subtest:ok(check_alloc_report(alloc, { line = 36, linedefined = 34 }, 2)) -- Restore default JIT settings. jit.opt.start(unpack(jit_opt_default)) diff --git a/test/tarantool-tests/misclib-sysprof-capi.test.lua b/test/tarantool-tests/misclib-sysprof-capi.test.lua index afb99cf2..32f00ffd 100644 --- a/test/tarantool-tests/misclib-sysprof-capi.test.lua +++ b/test/tarantool-tests/misclib-sysprof-capi.test.lua @@ -1,10 +1,11 @@ -- 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 utils = require("utils") +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", jit.arch .. + " architecture is NIY for sysprof"}, + {jit.os ~= "Linux", jit.os .. " OS is NIY for sysprof"}, + {ffi.abi("gc64"), "GC64 mode is NIY for sysprof"} ) local testsysprof = require("testsysprof") diff --git a/test/tarantool-tests/misclib-sysprof-lapi.test.lua b/test/tarantool-tests/misclib-sysprof-lapi.test.lua index 9e0a8a77..e9ae182e 100644 --- a/test/tarantool-tests/misclib-sysprof-lapi.test.lua +++ b/test/tarantool-tests/misclib-sysprof-lapi.test.lua @@ -1,10 +1,11 @@ -- 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 utils = require("utils") +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", jit.arch .. + " architecture is NIY for sysprof"}, + {jit.os ~= "Linux", jit.os .. " OS is NIY for sysprof"}, + {ffi.abi("gc64"), "GC64 mode is NIY for sysprof"} ) local tap = require("tap") diff --git a/test/tarantool-tests/utils.lua b/test/tarantool-tests/utils.lua index a1906498..d8412e03 100644 --- a/test/tarantool-tests/utils.lua +++ b/test/tarantool-tests/utils.lua @@ -20,6 +20,10 @@ ffi.cdef([[ } GCHeader; ]]) +function M.is_M1() + return jit.os == 'OSX' and jit.arch == 'arm64' +end + function M.gcisblack(obj) local objtype = type(obj) local address = objtype == 'string' @@ -95,12 +99,18 @@ function M.selfrun(arg, checks) os.exit(test:check() and 0 or 1) end -function M.skipcond(condition, message) - if not condition then return end - local test = tap.test(arg[0]:match('/?(.+)%.test%.lua')) - test:plan(1) - test:skip(message) - os.exit(test:check() and 0 or 1) +function M.skipcond(...) + local conditions = {...} + local ncond = #conditions + for i = 1, ncond do + local condition, message = conditions[i][1], conditions[i][2] + if condition then + local test = tap.test(arg[0]:match('/?(.+)%.test%.lua')) + test:plan(1) + test:skip(message) + os.exit(test:check() and 0 or 1) + end + end end function M.hasbc(f, bytecode) -- 2.34.1