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 B52716EC7B; Fri, 16 Oct 2026 17:49:51 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org B52716EC7B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1792162191; bh=sH6wy60mBhaSNVVCVrn1bMW59DL+hBc5vHY6n+3qlIU=; h=Date:To:Cc:References:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=NIlHTs4npcUVkgWnNBm/F54Y45KFny2eneJmfKxVNZAI9FwHRSCC7IiTmicMdNQg4 svUhCw9DzBk1l5zSuNenjOJgPbp7fseECSunK5xXuMc6l1htH9ecIgrh5fjKsYvbH6 jCwz/0wKCWsGpIdqj90qX2XCwnJER+QUFxUZYn5g= Received: from send279.i.mail.ru (send279.i.mail.ru [95.163.59.118]) (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 DC9A96EC7B for ; Fri, 16 Oct 2026 17:49:49 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org DC9A96EC7B Received: by exim-smtp-84d6fb566c-9sn5x with esmtpa (envelope-from ) id 1xHjFk-00000000FbU-2wd4; Fri, 16 Oct 2026 17:49:49 +0300 Message-ID: <9eb0d468-79c4-40d3-9e83-ba1e191897a7@tarantool.org> Date: Fri, 16 Oct 2026 17:49:47 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Mikhail Elhimov , Sergey Kaplun , Evgeniy Temirgaleev Cc: tarantool-patches@dev.tarantool.org References: <20261015072055.317299-1-m.elhimov@vk.team> <20261015234516.385484-1-m.elhimov@vk.team> Content-Language: en-US In-Reply-To: <20261015234516.385484-1-m.elhimov@vk.team> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-4EC0790: 10 X-618D5548: DF5F04659F6026DF411046492FDDF8067EEC3A828B82D6B7C98A17E6341C2A869367A8216320FB3A X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9D5ABD805758C3F0BD7C183E3FE8EB44E0C7F1B817E779673182A05F5380850406B3C577BF44A3C3C3DE06ABAFEAF67052F6BF22EEB92261323776D882C4CCDF9D73A67995FDF1B13 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE79EDB57D1FB735487EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637FE9EFE935CD7C6AE8638F802B75D45FF914D58D5BE9E6BC1A93B80C6DEB9DEE97C6FB206A91F05B21D62460D1B12FEB92E070BE324C7D3C45E89B9179E9BF920F6B57BC7E64490611E7FA7ABCAF51C92176DF2183F8FC7C06030C3405640F6718941B15DA834481F9449624AB7ADAF372E808ACE2090B5E14AD6D5ED66289B5259CC434672EE63711DD303D21008E298D5E8D9A59859A8B6B372FE9A2E580EFC725E5C173C3A84C3C9EEE74C166EF7BC35872C767BF85DA2F004C90652538430E4A6367B16DE6309 X-C1DE0DAB: 0D63561A33F958A5E9158858931446225002B1117B3ED696CB66A4D5E3467B43E41E333F9D1358D5823CB91A9FED034534781492E4B8EEAD3CCD70CEBBF18A22BDAD6C7F3747799A X-C8649E89: 1C3962B70DF3F0ADB58128AB1E6D661A716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D65904E982FC537571D23F1B9AE9C314B4F53E6B476FED423AC8C9D53EBCDFC1029D65FC6DE74DD78C63B8341EE9D5BE9A0AE803EAB00CC9EB37D91526C279BC0C6D7DB22DFA5561AE36C7CEAA0681F5848F4C41F94D744909CE2512F26BEC029E55448553D2254B8D95CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXOcIETfglQORZ0zpDET4Zrk3igikrdHlWGbK+JBpypQZOphDQ8QPJMA= X-Mailru-Sender: 689FA8AB762F73937C9FA53A4753B3130391DF4DBC93DA40F0615CC5A95039B5E69B1DBB439F7756EF86D5F70DA33880E41E8EF7A07863ECB274557F927329BE2DDF8182D28ACDB545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: Re: [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: Sergey Bronnikov via Tarantool-patches Reply-To: Sergey Bronnikov Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" Hi, Mikhail, thanks for the patch! LGTM Sergey On 10/16/26 02:45, Mikhail Elhimov wrote: > 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'