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 3CB9A6ECCC; Fri, 16 Oct 2026 02:45:25 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 3CB9A6ECCC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1792107925; bh=SlzHxYKhCgvu06ZuASTU4n6kU6epGN/JNtXV5xJPTwY=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=vN7ezH+9KIRq2a/Rc+hbZwsWH0y2Yk9LZka1GCGVlceBsDJeNe2Fywj+IkG/FAAhm u24veGJOmorD3cMhjIHXyiwo7Vm2CM2WQBWLh+F45uafs0yOzrT19kFs13dycpK+vN jwauV2jqzYJQmTaWHnRSV7PoPZ0sxnIXsOrjMhdY= Received: from send60.i.mail.ru (send60.i.mail.ru [89.221.237.155]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id CC87D6ECCC for ; Fri, 16 Oct 2026 02:45:24 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org CC87D6ECCC Received: by exim-smtp-84d6fb566c-4ll8b with esmtpa (envelope-from ) id 1xHV8V-000000002HI-2ykq; Fri, 16 Oct 2026 02:45:24 +0300 To: Sergey Kaplun , Sergey Bronnikov , Evgeniy Temirgaleev Date: Fri, 16 Oct 2026 02:45:15 +0300 Message-ID: <20261015234516.385484-1-m.elhimov@vk.team> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261015072055.317299-1-m.elhimov@vk.team> References: <20261015072055.317299-1-m.elhimov@vk.team> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-618D5548: 694DB2FF363B847CF378A8CA21F699D69A8FD14993594E29F0EC17A0B854878037FC84135321B4A7 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9D5ABD805758C3F0BB3F6B4C14D0ED584CFFFF199AB2EF0CF182A05F538085040AEEABF6E35574E433DE06ABAFEAF6705F7FD0B8890798A405938442F89AA9D3D3406BBAD765D5998 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7CEF52BA550D6CAADEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB553375667E1D4B08D42AEC87F5B91DBDDD695E3753B98F2A0FB86344FF1EAA6DD93A4E5F8EEF46B7454FC60B9742502CCDD46D0D5FF72824B19451C6BA3038C0950A5D36D5E8D9A59859A8B64CCBAE0E750D218576E601842F6C81A1F004C906525384303E02D724532EE2C3F43C7A68FF6260569E8FC8737B5C2249EC8D19AE6D49635B68655334FD4449CB9ECD01F8117BC8BEAAAE862A0553A39223F8577A6DFFEA7C9C548C0D1874EECE43847C11F186F3C59DAA53EE0834AAEE X-C1DE0DAB: 0D63561A33F958A57ED23FC43A6B624D5002B1117B3ED69684B3435ADF1B1B7B47A99E6294EE8661823CB91A9FED034534781492E4B8EEAD27E9584FBD6BDD31C79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34C77DD89D51EBB774225B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D65914F6937A76860865A1FD159A73EEA21B43B5E4B53100610F0424DD031983A8FB62B19F9E255BF24DB8341EE9D5BE9A0AD09625044FC18B8B901FE0F167870E52E22083B851DF168C9350E1BD188BD56E4C41F94D744909CE9D6718F459EE2962AE54DA86D399E591103B389C0A9E82E8 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXOcIETfglQORZ0zpDET4Zrk3igikrdHlWBnRLcpkIfwQtEW4g7DlDWI= X-Mailru-Sender: 9662FE40E71C373194F0C5C213124E54831C979FA19CDF43B951B70A5BD4BD8EAB919BE4D53DE80F7B0B9A7C4E99E59BEAA2F645D7D0C73F8B67290C0B8F2C0D12EEFBA914E8A1CE696B58449F085A8023028798991C5DA182F85D6DCAB44FBA5FEEDEB644C299C0ED14614B50AE0675 X-Mras: Ok Subject: [Tarantool-patches] [PATCH luajit v2] dbg: remove wrong GC state 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: Mikhail Elhimov via Tarantool-patches Reply-To: Mikhail Elhimov Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" It has been copied by mistake from the LuaVela fork of LuaJIT. --- Changes in v2: * Rebased onto https://lists.tarantool.org/pipermail/tarantool-patches/2026-October/030859.html to avoid conflicts This patch is to be applied after https://lists.tarantool.org/pipermail/tarantool-patches/2026-October/030859.html Branch: https://github.com/tarantool/luajit/tree/elhimov/gh-noticket-dbg-remove-wrong-gcstate src/luajit_dbg.py | 3 +- .../debug-extension-tests.py | 96 +++++++++++++++++-- 2 files changed, 87 insertions(+), 12 deletions(-) diff --git a/src/luajit_dbg.py b/src/luajit_dbg.py index a685ecfa..8f7249ab 100644 --- a/src/luajit_dbg.py +++ b/src/luajit_dbg.py @@ -1244,7 +1244,6 @@ def gc_state(g): 3: 'SWEEPSTRING', 4: 'SWEEP', 5: 'FINALIZE', - 6: 'LAST', }.get(int(g['gc']['state']), 'INVALID') @@ -2850,7 +2849,7 @@ LJState.__doc__ = ''' lj-state The command requires no args and dumps current VM and GC states: * VM state: <{}> -* GC state: +* GC state: * JIT state: '''.format('|'.join(VM_STATES)) diff --git a/test/tarantool-debugger-tests/debug-extension-tests.py b/test/tarantool-debugger-tests/debug-extension-tests.py index bbd53dcc..735de2cb 100644 --- a/test/tarantool-debugger-tests/debug-extension-tests.py +++ b/test/tarantool-debugger-tests/debug-extension-tests.py @@ -133,6 +133,23 @@ elif machine == 'arm64' or machine == 'aarch64': else: raise Exception('Unknown architecture in testing') +GCS_PAUSE = 'PAUSE' +GCS_PROPAGATE = 'PROPAGATE' +GCS_ATOMIC = 'ATOMIC' +GCS_SWEEPSTRING = 'SWEEPSTRING' +GCS_SWEEP = 'SWEEP' +GCS_FINALIZE = 'FINALIZE' + +RX_VALID_GC_STATES = r'({})'.format('|'.join([ + GCS_PAUSE, + GCS_PROPAGATE, + GCS_ATOMIC, + GCS_SWEEPSTRING, + GCS_SWEEP, + GCS_FINALIZE, +])) +RX_INVALID_GC_STATE = r'INVALID' + class TestCaseBase(unittest.TestCase): @classmethod @@ -283,23 +300,24 @@ RX_VM_STATE = '({})'.format('|'.join([ ])) -class TestLJState(TestCaseBase): - extension_cmds = 'lj-state' - location = 'lj_cf_print' - lua_script = 'print(1)' - pattern = ( +def compose_lj_state_rx(rx_gc_state): + return ( r'VM state: ' + RX_VM_STATE + '\n' - r'GC state: [A-Z]+\n' + r'GC state: ' + rx_gc_state + '\n' r'JIT state: [A-Z]+\n' ) -class TestLJGC(TestCaseBase): - extension_cmds = 'lj-gc' +class TestLJState(TestCaseBase): + extension_cmds = 'lj-state' location = 'lj_cf_print' lua_script = 'print(1)' - pattern = ( - r'GC stats: [A-Z]+\n' + pattern = compose_lj_state_rx(RX_VALID_GC_STATES) + + +def compose_gc_stats_rx(rx_gc_state): + return ( + r'GC stats: ' + rx_gc_state + '\n' r'\ttotal: \d+\n' r'\tthreshold: \d+\n' r'\tdebt: \d+\n' @@ -315,6 +333,64 @@ class TestLJGC(TestCaseBase): ) +class TestLJGC(TestCaseBase): + extension_cmds = 'lj-gc' + location = 'lj_cf_print' + lua_script = 'print(1)' + pattern = compose_gc_stats_rx(RX_VALID_GC_STATES) + + +class TestGCStateBase(TestCaseBase): + extension_cmds = ( + 'lj-state\n' + 'lj-gc\n' + ) + lua_script = ( + 'local obj = newproxy(true)\n' + 'getmetatable(obj).__gc = function() end\n' + 'obj = nil\n' + 'collectgarbage()\n' + ) + + @classmethod + def setUpClass(cls): + cls.pattern = ( + compose_lj_state_rx(cls.gc_state) + + compose_gc_stats_rx(cls.gc_state) + ) + super(TestGCStateBase, cls).setUpClass() + + +class TestGCStatePause(TestGCStateBase): + gc_state = GCS_PAUSE + location = 'gc_mark_start' + + +class TestGCStatePropagate(TestGCStateBase): + gc_state = GCS_PROPAGATE + location = 'propagatemark' + + +class TestGCStateAtomic(TestGCStateBase): + gc_state = GCS_ATOMIC + location = 'atomic' + + +class TestGCStateSweepString(TestGCStateBase): + gc_state = GCS_SWEEPSTRING + location = 'gc_sweep_str_chain' + + +class TestGCStateSweep(TestGCStateBase): + gc_state = GCS_SWEEP + location = 'gc_sweep' + + +class TestGCStateFinalize(TestGCStateBase): + gc_state = 'FINALIZE' + location = 'gc_finalize' + + STACK_RX = ( r'-+ Red zone:\s+\d+ slots -+\n' r'(' + RX_ADDR + r'\s+' + RX_FRAME + r' VALUE: nil\n?)*\n' -- 2.43.0