From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp57.i.mail.ru (smtp57.i.mail.ru [217.69.128.37]) (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 46E7945C305 for ; Mon, 7 Dec 2020 12:37:36 +0300 (MSK) Date: Mon, 7 Dec 2020 09:37:32 +0000 From: Kirill Yukhin Message-ID: <20201207093731.fqksxcec2a5jzfxr@tarantool.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Subject: Re: [Tarantool-patches] [PATCH luajit] x64: Fix __call metamethod return dispatch. List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Munkin Cc: tarantool-patches@dev.tarantool.org Hello, On 04 Dec 16:42, Igor Munkin via Tarantool-patches wrote: > From: Mike Pall > > After linking new cframe to the chain KBASEa still stores the address of > the previous one. If the execution proceeds to KBASE > value (i.e. low 32 bits of the stored address) might be equal to the > current BASE address value so the execution takes the invalid path. Such > address clashing occurs only on x86_64 platform with disabled LJ_GC64, > so 64-bit registers have to be compared in x64 build. > > NB: Though there is only 32-bit load to restore BASE value prior to the > comparison, the high 32 bits of RDX are reset to zeros, according to x86 > long mode semantics. > > Igor Munkin: > * backported the original patch to tarantool/luajit repo > * extended the original commit message with the rationale > > For more info and explanation see LuaJIT/LuaJIT#636. > > Relates to tarantool/tarantool#4518 > Relates to tarantool/tarantool#4649 > > Signed-off-by: Igor Munkin I've checked your patch into Tarantool's luakit release branches and bumped a new version in 1.10, 2.5, 2.6 and master. -- Regards, Kirill Yukhin