From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 02 06:11:21 2021 Received: (at submit) by debbugs.gnu.org; 2 Feb 2021 11:11:21 +0000 Received: from localhost ([127.0.0.1]:34221 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l6tab-0000zZ-4t for submit@debbugs.gnu.org; Tue, 02 Feb 2021 06:11:21 -0500 Received: from lists.gnu.org ([209.51.188.17]:39836) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l6taY-0000zI-6k for submit@debbugs.gnu.org; Tue, 02 Feb 2021 06:11:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57480) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l6taX-0001mS-8K for bug-gnu-emacs@gnu.org; Tue, 02 Feb 2021 06:11:17 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]:50189) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l6taU-0006Tt-MO for bug-gnu-emacs@gnu.org; Tue, 02 Feb 2021 06:11:17 -0500 Received: by mail-wm1-x334.google.com with SMTP id 190so2036665wmz.0 for ; Tue, 02 Feb 2021 03:11:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:subject:from:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=RUBSQxkuDW7tjunoR8zRlVKZqEAo4zF4ZvklaWGHe8o=; b=L/D8mxmS8tdPZ82QVj4Kso61sNRuev2F+ffIVHnvyXVtNgjY85Ox7yn+LYeAWXn5SI 1njapF6JKUCuWOOa86scQ+sGFfEo2/45L0/wp0iGy3n62MTINR0gI8ElKWHAyC6qg2U5 EUi3JczRvZ6YGrWhoE/zsabJdr9Plv5H/37FgEl93hPoqM9prCprqQ3RbuJzaTg+HGUt dC3x9gVqrN9svzrKa8n/2YtswXsb5yGvtx0MSoRPts6x+dxGTUuBmqQQFfgYUemndvV4 ucT9FZPVPUMiHQ4OknaNWssrRk+HYAwe5mMLSUpkaMRL7yDhxdtVCkFPXvhzPHzW9J1W fAfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:subject:from:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=RUBSQxkuDW7tjunoR8zRlVKZqEAo4zF4ZvklaWGHe8o=; b=CdkD9lH1YgVNTjsB9gmzKhvAPeaivGMk54kXUOpiIEhZOVkdXiafrGjZ6nJ/cDcGeB J75xKoTR09rYdqm/hlQuKjBKa48b0P1tkBA+Pu6pWXuE8y31rVnNdp3SFU5BA54Q0PUk DoNkRqBqQeWmyf2XDxMJjXOjKqlsZkTTHYSWvXsyT9tg6U7R++WIrFhZ+k7LMIXgw3bo WGZykYUZucex8RjqO1jLJYnUR+4lJXv4mxSGPYsLlIFYFWO6FeKkKgk/IoeApI/MLe+b QF16lyeMxlI463TcfdAN8kuAuEuMp2W2BMtfYe3VSbwYnE26rP9UjAgdP3SonH654VLy gYiQ== X-Gm-Message-State: AOAM530vnUmoG4QdKQDK0hj52P7yHLyuFabo+y9HiNlkMLXQJ3AkqkjM cxtoXPEcKEqFPC4ZrpTvFPsf+Q0rzgY= X-Google-Smtp-Source: ABdhPJzVBr2hWmcFxiOYzaRSCyau424G3qhq7XhSLVlOMDIBZ1/HYHR9pn/KpLSHhnpUk2jrDr5W8w== X-Received: by 2002:a05:600c:2253:: with SMTP id a19mr3016114wmm.75.1612264272311; Tue, 02 Feb 2021 03:11:12 -0800 (PST) Received: from [192.168.0.5] (82-69-64-228.dsl.in-addr.zen.co.uk. [82.69.64.228]) by smtp.gmail.com with ESMTPSA id q18sm30929648wrr.55.2021.02.02.03.11.10 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 02 Feb 2021 03:11:11 -0800 (PST) To: bug-gnu-emacs@gnu.org Subject: [feature/native-comp] AOT eln files ignored if run from build tree From: Andy Moreton Message-ID: Date: Tue, 2 Feb 2021 11:11:08 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=andrewjmoreton@gmail.com; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Hi, I have built emacs native-comp branch for 64bit Mingw64 with NATIVE_FULL_AOT=1 (out of tree, so build dir != source dir). I notice that if I run the built emacs from the build dir then the prebuilt .eln files are ignored, and async compilation of the .eln file happens again to add them to the user eln-cache dir. The prebuilt .eln files are not found in the user eln-cache (expected) or the installed emacs directory (also expected), but it looks like it does not also check the build dir (relative to the running emacs rather than relative to the install prefix). Running from the build dir without installing is common for developers building from source, so it would be useful to keep this working with native AOT builds. AndyM From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 03 15:51:30 2021 Received: (at 46256) by debbugs.gnu.org; 3 Feb 2021 20:51:30 +0000 Received: from localhost ([127.0.0.1]:38984 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l7P7Z-00044f-Q9 for submit@debbugs.gnu.org; Wed, 03 Feb 2021 15:51:30 -0500 Received: from mab.sdf.org ([205.166.94.33]:35724 helo=ma.sdf.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l7P7X-00044T-M5 for 46256@debbugs.gnu.org; Wed, 03 Feb 2021 15:51:28 -0500 Received: from akrl by ma.sdf.org with local (Exim 4.92) (envelope-from ) id 1l7P7U-0004jT-JI; Wed, 03 Feb 2021 20:51:24 +0000 From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: Date: Wed, 03 Feb 2021 20:51:24 +0000 In-Reply-To: (Andy Moreton's message of "Tue, 2 Feb 2021 11:11:08 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > Hi, > > I have built emacs native-comp branch for 64bit Mingw64 with > NATIVE_FULL_AOT=1 (out of tree, so build dir != source dir). > > I notice that if I run the built emacs from the build dir then the > prebuilt .eln files are ignored, and async compilation of the .eln file > happens again to add them to the user eln-cache dir. > > The prebuilt .eln files are not found in the user eln-cache (expected) > or the installed emacs directory (also expected), but it looks like it > does not also check the build dir (relative to the running emacs rather > than relative to the install prefix). > > Running from the build dir without installing is common for developers > building from source, so it would be useful to keep this working with > native AOT builds. > > AndyM Hi Andy, could you share the values of PATH_DUMPLOADSEARCH and PATH_REL_LOADSEARCH from your epaths.h ? Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 03 19:04:06 2021 Received: (at submit) by debbugs.gnu.org; 4 Feb 2021 00:04:06 +0000 Received: from localhost ([127.0.0.1]:39209 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l7S7y-0002ar-HS for submit@debbugs.gnu.org; Wed, 03 Feb 2021 19:04:06 -0500 Received: from lists.gnu.org ([209.51.188.17]:48596) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l7S7x-0002aj-0G for submit@debbugs.gnu.org; Wed, 03 Feb 2021 19:04:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50142) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l7S7s-0004MW-8c for bug-gnu-emacs@gnu.org; Wed, 03 Feb 2021 19:04:04 -0500 Received: from ciao.gmane.io ([116.202.254.214]:58838) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l7S7q-0004pA-3F for bug-gnu-emacs@gnu.org; Wed, 03 Feb 2021 19:03:59 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1l7S7l-0004Kd-QT for bug-gnu-emacs@gnu.org; Thu, 04 Feb 2021 01:03:53 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Thu, 04 Feb 2021 00:03:49 +0000 Message-ID: <865z3866my.fsf@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:Gw+ibyE3pEjgXvOnyp+Dinfs+OI= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.248, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Andy Moreton writes: > >> Hi, >> >> I have built emacs native-comp branch for 64bit Mingw64 with >> NATIVE_FULL_AOT=1 (out of tree, so build dir != source dir). >> >> I notice that if I run the built emacs from the build dir then the >> prebuilt .eln files are ignored, and async compilation of the .eln file >> happens again to add them to the user eln-cache dir. >> >> The prebuilt .eln files are not found in the user eln-cache (expected) >> or the installed emacs directory (also expected), but it looks like it >> does not also check the build dir (relative to the running emacs rather >> than relative to the install prefix). >> >> Running from the build dir without installing is common for developers >> building from source, so it would be useful to keep this working with >> native AOT builds. >> >> AndyM > > Hi Andy, > > could you share the values of PATH_DUMPLOADSEARCH and > PATH_REL_LOADSEARCH from your epaths.h ? > > Thanks > > Andrea Native branch checkout is in: "c:/emacs/git/emacs/native/" "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" #define PATH_REL_LOADSEARCH "28.0.50/lisp" HTH, AndyM From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 03 20:40:29 2021 Received: (at submit) by debbugs.gnu.org; 4 Feb 2021 01:40:29 +0000 Received: from localhost ([127.0.0.1]:39291 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l7TdF-0004yz-Bh for submit@debbugs.gnu.org; Wed, 03 Feb 2021 20:40:29 -0500 Received: from lists.gnu.org ([209.51.188.17]:46088) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l7TdD-0004ys-Pu for submit@debbugs.gnu.org; Wed, 03 Feb 2021 20:40:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43202) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l7TdB-0001Ov-Hk for bug-gnu-emacs@gnu.org; Wed, 03 Feb 2021 20:40:27 -0500 Received: from ciao.gmane.io ([116.202.254.214]:39850) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l7TdA-0001h9-Az for bug-gnu-emacs@gnu.org; Wed, 03 Feb 2021 20:40:25 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1l7Td3-0006db-6e for bug-gnu-emacs@gnu.org; Thu, 04 Feb 2021 02:40:17 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Thu, 04 Feb 2021 01:40:11 +0000 Message-ID: <865z38a9vo.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:XM2Wt5jtQHg7E938mxJj7CHOM+Q= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.248, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Thu 04 Feb 2021, Andy Moreton wrote: > On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >> >> Hi Andy, >> >> could you share the values of PATH_DUMPLOADSEARCH and >> PATH_REL_LOADSEARCH from your epaths.h ? >> >> Thanks >> >> Andrea > > Native branch checkout is in: "c:/emacs/git/emacs/native/" > > "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: > > #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" > #define PATH_REL_LOADSEARCH "28.0.50/lisp" I've bootstrapped again after the recent hash shortening to ensure my build is up to date, from commit 1f626e9662d8120acd5a937f847123cc2b8c6e31. The paths above are unchanged. Running this from the build dir, I see messages like: error in process sentinel: Native elisp load failed: "file does not exists", "c:/home/ajm/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln" This suggests that the AOT .eln files are not being found. It should find: c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln The middle hash (e67628ec vs. 8fa29c14) is not the same - any idea why ? AndyM From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 05 09:40:02 2021 Received: (at 46256) by debbugs.gnu.org; 5 Feb 2021 14:40:02 +0000 Received: from localhost ([127.0.0.1]:43262 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82HB-0001Lf-Na for submit@debbugs.gnu.org; Fri, 05 Feb 2021 09:40:02 -0500 Received: from mab.sdf.org ([205.166.94.33]:51448 helo=ma.sdf.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82HA-0001LQ-1h for 46256@debbugs.gnu.org; Fri, 05 Feb 2021 09:40:00 -0500 Received: from akrl by ma.sdf.org with local (Exim 4.92) (envelope-from ) id 1l82H8-0005Dk-KO; Fri, 05 Feb 2021 14:39:58 +0000 From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> Date: Fri, 05 Feb 2021 14:39:58 +0000 In-Reply-To: <865z3866my.fsf@gmail.com> (Andy Moreton's message of "Thu, 04 Feb 2021 00:03:49 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Andy Moreton writes: > On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > >> Andy Moreton writes: >> >>> Hi, >>> >>> I have built emacs native-comp branch for 64bit Mingw64 with >>> NATIVE_FULL_AOT=1 (out of tree, so build dir != source dir). >>> >>> I notice that if I run the built emacs from the build dir then the >>> prebuilt .eln files are ignored, and async compilation of the .eln file >>> happens again to add them to the user eln-cache dir. >>> >>> The prebuilt .eln files are not found in the user eln-cache (expected) >>> or the installed emacs directory (also expected), but it looks like it >>> does not also check the build dir (relative to the running emacs rather >>> than relative to the install prefix). >>> >>> Running from the build dir without installing is common for developers >>> building from source, so it would be useful to keep this working with >>> native AOT builds. >>> >>> AndyM >> >> Hi Andy, >> >> could you share the values of PATH_DUMPLOADSEARCH and >> PATH_REL_LOADSEARCH from your epaths.h ? >> >> Thanks >> >> Andrea > > Native branch checkout is in: "c:/emacs/git/emacs/native/" > > "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: > > #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" > #define PATH_REL_LOADSEARCH "28.0.50/lisp" > > > HTH, > > AndyM Hi Andy could you give it a go to the following blind patch? Thanks Andrea --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=46256.patch diff --git a/src/comp.c b/src/comp.c index 289d89d37d..980462b520 100644 --- a/src/comp.c +++ b/src/comp.c @@ -433,6 +433,12 @@ #define TEXT_DATA_RELOC_EPHEMERAL_SYM "text_data_reloc_eph" #define TEXT_OPTIM_QLY_SYM "text_optim_qly" #define TEXT_FDOC_SYM "text_data_fdoc" +#ifdef WINDOWSNT +#define DIR_SLASH "\\" +#else +#define DIR_SLASH "/" +#endif + #define STR_VALUE(s) #s #define STR(s) STR_VALUE (s) @@ -4032,9 +4038,11 @@ DEFUN ("comp-el-to-eln-filename", Fcomp_el_to_eln_filename, { Lisp_Object sys_re = concat2 (build_string ("\\`[[:ascii:]]+"), - Fregexp_quote (build_string ("/" PATH_REL_LOADSEARCH "/"))); + Fregexp_quote (build_string (DIR_SLASH PATH_REL_LOADSEARCH + DIR_SLASH))); loadsearch_re_list = - list2 (sys_re, Fregexp_quote (build_string (PATH_DUMPLOADSEARCH "/"))); + list2 (sys_re, Fregexp_quote (build_string (PATH_DUMPLOADSEARCH + DIR_SLASH))); } Lisp_Object lds_re_tail = loadsearch_re_list; --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 05 09:42:56 2021 Received: (at 46256) by debbugs.gnu.org; 5 Feb 2021 14:42:56 +0000 Received: from localhost ([127.0.0.1]:43266 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82K0-0001Q3-Gs for submit@debbugs.gnu.org; Fri, 05 Feb 2021 09:42:56 -0500 Received: from mab.sdf.org ([205.166.94.33]:53916 helo=ma.sdf.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82Jx-0001Pv-Vj for 46256@debbugs.gnu.org; Fri, 05 Feb 2021 09:42:55 -0500 Received: from akrl by ma.sdf.org with local (Exim 4.92) (envelope-from ) id 1l82Jx-0005wo-GF; Fri, 05 Feb 2021 14:42:53 +0000 From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> Date: Fri, 05 Feb 2021 14:42:53 +0000 In-Reply-To: <865z38a9vo.fsf@gmail.com> (Andy Moreton's message of "Thu, 04 Feb 2021 01:40:11 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > On Thu 04 Feb 2021, Andy Moreton wrote: > >> On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >>> >>> Hi Andy, >>> >>> could you share the values of PATH_DUMPLOADSEARCH and >>> PATH_REL_LOADSEARCH from your epaths.h ? >>> >>> Thanks >>> >>> Andrea >> >> Native branch checkout is in: "c:/emacs/git/emacs/native/" >> >> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: >> >> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >> #define PATH_REL_LOADSEARCH "28.0.50/lisp" > > I've bootstrapped again after the recent hash shortening to ensure my build > is up to date, from commit 1f626e9662d8120acd5a937f847123cc2b8c6e31. The > paths above are unchanged. > > Running this from the build dir, I see messages like: > > error in process sentinel: Native elisp load failed: "file does not exists", > "c:/home/ajm/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln" > > This suggests that the AOT .eln files are not being found. It should find: AFAIK you should not get any error but the eln should be recompiled automatically. I guess having updated the hash algorithm the startup is failing and you need to clean-up completely the build directory (especially native-lisp/), please retry after a git clean -xfd. Thanks Andrea > c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln > > The middle hash (e67628ec vs. 8fa29c14) is not the same - any idea why ? > > AndyM > > > > > -- akrl@sdf.org From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 05 10:08:37 2021 Received: (at 46256) by debbugs.gnu.org; 5 Feb 2021 15:08:37 +0000 Received: from localhost ([127.0.0.1]:44495 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82ir-0004Ua-CY for submit@debbugs.gnu.org; Fri, 05 Feb 2021 10:08:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59614) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82ip-0004UO-Ts for 46256@debbugs.gnu.org; Fri, 05 Feb 2021 10:08:36 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:46190) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l82ii-0004nt-CN; Fri, 05 Feb 2021 10:08:28 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4001 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1l82iZ-0004ty-6u; Fri, 05 Feb 2021 10:08:24 -0500 Date: Fri, 05 Feb 2021 17:08:22 +0200 Message-Id: <83blcypn6h.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (bug-gnu-emacs@gnu.org) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Cc: 46256@debbugs.gnu.org > Date: Fri, 05 Feb 2021 14:39:58 +0000 > From: Andrea Corallo via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > > Native branch checkout is in: "c:/emacs/git/emacs/native/" > > > > "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: > > > > #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" > > #define PATH_REL_LOADSEARCH "28.0.50/lisp" > > > > > > HTH, > > > > AndyM > > Hi Andy could you give it a go to the following blind patch? You assume that Windows programs don't understand "/" as a directory separator? They do. From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 05 15:59:48 2021 Received: (at submit) by debbugs.gnu.org; 5 Feb 2021 20:59:49 +0000 Received: from localhost ([127.0.0.1]:44717 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l88Ci-0006Va-Lw for submit@debbugs.gnu.org; Fri, 05 Feb 2021 15:59:48 -0500 Received: from lists.gnu.org ([209.51.188.17]:54996) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l88Ch-0006VT-8A for submit@debbugs.gnu.org; Fri, 05 Feb 2021 15:59:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38156) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l88Cg-0008VN-VC for bug-gnu-emacs@gnu.org; Fri, 05 Feb 2021 15:59:46 -0500 Received: from ciao.gmane.io ([116.202.254.214]:54160) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l88Cf-0007MQ-L1 for bug-gnu-emacs@gnu.org; Fri, 05 Feb 2021 15:59:46 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1l88Cc-0001Tk-9n for bug-gnu-emacs@gnu.org; Fri, 05 Feb 2021 21:59:42 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Fri, 05 Feb 2021 20:59:37 +0000 Message-ID: <86pn1e6xja.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:UtgzOH6vzHX0t8eISqqQJ2E+cyQ= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Fri 05 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Andy Moreton writes: > >> On Thu 04 Feb 2021, Andy Moreton wrote: >> >>> On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >>>> >>>> Hi Andy, >>>> >>>> could you share the values of PATH_DUMPLOADSEARCH and >>>> PATH_REL_LOADSEARCH from your epaths.h ? >>>> >>>> Thanks >>>> >>>> Andrea >>> >>> Native branch checkout is in: "c:/emacs/git/emacs/native/" >>> >>> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: >>> >>> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >>> #define PATH_REL_LOADSEARCH "28.0.50/lisp" >> >> I've bootstrapped again after the recent hash shortening to ensure my build >> is up to date, from commit 1f626e9662d8120acd5a937f847123cc2b8c6e31. The >> paths above are unchanged. >> >> Running this from the build dir, I see messages like: >> >> error in process sentinel: Native elisp load failed: "file does not exists", >> "c:/home/ajm/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln" >> >> This suggests that the AOT .eln files are not being found. It should find: > > AFAIK you should not get any error but the eln should be recompiled > automatically. I guess having updated the hash algorithm the startup is > failing and you need to clean-up completely the build directory > (especially native-lisp/), please retry after a git clean -xfd. All of these experiments are done from a clean tree after "git clean -xdf", and after removing ~/.emacs.d/eln-cache/*. >> c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln >> >> The middle hash (e67628ec vs. 8fa29c14) is not the same - any idea why ? Also a following obsrvation from this: a) Initially, the AOT bootstrap creates: /native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln b) Running /src/emacs complains about: /eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln c) The running emacs then builds: ~/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln The files (a) and (c) have the same filename, but different sizes and content. AndyM From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 05 18:55:23 2021 Received: (at submit) by debbugs.gnu.org; 5 Feb 2021 23:55:23 +0000 Received: from localhost ([127.0.0.1]:44857 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l8Awc-0002Eq-KJ for submit@debbugs.gnu.org; Fri, 05 Feb 2021 18:55:23 -0500 Received: from lists.gnu.org ([209.51.188.17]:49498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l8Awa-0002Ei-Ot for submit@debbugs.gnu.org; Fri, 05 Feb 2021 18:55:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40796) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l8Awa-0007Ka-De for bug-gnu-emacs@gnu.org; Fri, 05 Feb 2021 18:55:20 -0500 Received: from ciao.gmane.io ([116.202.254.214]:42764) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l8AwZ-0004IG-0H for bug-gnu-emacs@gnu.org; Fri, 05 Feb 2021 18:55:20 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1l8AwW-0005UN-Dd for bug-gnu-emacs@gnu.org; Sat, 06 Feb 2021 00:55:16 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Fri, 05 Feb 2021 23:55:10 +0000 Message-ID: <86eehujcip.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:kWlhmAkZoP/+HsWVubTO+pAHdCI= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Thu 04 Feb 2021, Andy Moreton wrote: > On Thu 04 Feb 2021, Andy Moreton wrote: > >> On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >>> >>> Hi Andy, >>> >>> could you share the values of PATH_DUMPLOADSEARCH and >>> PATH_REL_LOADSEARCH from your epaths.h ? >>> >>> Thanks >>> >>> Andrea >> >> Native branch checkout is in: "c:/emacs/git/emacs/native/" >> >> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: >> >> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >> #define PATH_REL_LOADSEARCH "28.0.50/lisp" > > I've bootstrapped again after the recent hash shortening to ensure my build > is up to date, from commit 1f626e9662d8120acd5a937f847123cc2b8c6e31. The > paths above are unchanged. > > Running this from the build dir, I see messages like: > > error in process sentinel: Native elisp load failed: "file does not exists", > "c:/home/ajm/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln" > > This suggests that the AOT .eln files are not being found. It should find: > > c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln > > The middle hash (e67628ec vs. 8fa29c14) is not the same - any idea why ? After looking at what `comp-el-to-eln-filename' does, I observe that: (substring (md5 "c:/emacs/git/emacs/native/lisp/hl-line.el") 0 8) "e67628ec" (substring (md5 "//hl-line.el") 0 8) "8fa29c14" That matches the two middle hashes seen above. It looks like `comp-el-to-eln-filename` fails to match the filename prefix against PATH_DUMPLOADSEARCH. It is using case-sensitive matching, but on Windows filesystems are case-insensitive. AndyM From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 17 17:39:32 2021 Received: (at 46256) by debbugs.gnu.org; 17 Feb 2021 22:39:32 +0000 Received: from localhost ([127.0.0.1]:45329 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCVTo-0000mB-1v for submit@debbugs.gnu.org; Wed, 17 Feb 2021 17:39:32 -0500 Received: from mx.sdf.org ([205.166.94.24]:58470) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCVTl-0000m3-Qa for 46256@debbugs.gnu.org; Wed, 17 Feb 2021 17:39:30 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11HMdS9P024973 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Wed, 17 Feb 2021 22:39:29 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> Date: Wed, 17 Feb 2021 22:39:28 +0000 In-Reply-To: <86eehujcip.fsf@gmail.com> (Andy Moreton's message of "Fri, 05 Feb 2021 23:55:10 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > On Thu 04 Feb 2021, Andy Moreton wrote: > >> On Thu 04 Feb 2021, Andy Moreton wrote: >> >>> On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >>>> >>>> Hi Andy, >>>> >>>> could you share the values of PATH_DUMPLOADSEARCH and >>>> PATH_REL_LOADSEARCH from your epaths.h ? >>>> >>>> Thanks >>>> >>>> Andrea >>> >>> Native branch checkout is in: "c:/emacs/git/emacs/native/" >>> >>> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: >>> >>> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >>> #define PATH_REL_LOADSEARCH "28.0.50/lisp" >> >> I've bootstrapped again after the recent hash shortening to ensure my build >> is up to date, from commit 1f626e9662d8120acd5a937f847123cc2b8c6e31. The >> paths above are unchanged. >> >> Running this from the build dir, I see messages like: >> >> error in process sentinel: Native elisp load failed: "file does not exists", >> "c:/home/ajm/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln" >> >> This suggests that the AOT .eln files are not being found. It should find: >> >> c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln >> >> The middle hash (e67628ec vs. 8fa29c14) is not the same - any idea why ? > > After looking at what `comp-el-to-eln-filename' does, I observe that: > > (substring (md5 "c:/emacs/git/emacs/native/lisp/hl-line.el") 0 8) > "e67628ec" > > (substring (md5 "//hl-line.el") 0 8) > "8fa29c14" > > That matches the two middle hashes seen above. > > It looks like `comp-el-to-eln-filename` fails to match the filename > prefix against PATH_DUMPLOADSEARCH. It is using case-sensitive matching, > but on Windows filesystems are case-insensitive. Hi Andy, The Windows filesystem is case-insensitive but the case is preserved correct? If so it should work no? Last queston: do reverse slashes '\' appear somewhere in those filenames? This was issue I tried to fix with the blind patch I've sent. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 18 15:49:10 2021 Received: (at submit) by debbugs.gnu.org; 18 Feb 2021 20:49:10 +0000 Received: from localhost ([127.0.0.1]:48204 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCqEY-00053F-Gz for submit@debbugs.gnu.org; Thu, 18 Feb 2021 15:49:10 -0500 Received: from lists.gnu.org ([209.51.188.17]:47914) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCqEX-000538-Hf for submit@debbugs.gnu.org; Thu, 18 Feb 2021 15:49:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54518) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lCqEX-0006wk-88 for bug-gnu-emacs@gnu.org; Thu, 18 Feb 2021 15:49:09 -0500 Received: from ciao.gmane.io ([116.202.254.214]:52776) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lCqEU-00080V-NQ for bug-gnu-emacs@gnu.org; Thu, 18 Feb 2021 15:49:08 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lCqEQ-0005Vx-KO for bug-gnu-emacs@gnu.org; Thu, 18 Feb 2021 21:49:02 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Thu, 18 Feb 2021 20:48:58 +0000 Message-ID: <86blch14qt.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:c8RxbaJah94as6kNDVuJWCfLLYw= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Wed 17 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Andy Moreton writes: > >> On Thu 04 Feb 2021, Andy Moreton wrote: >> >>> On Thu 04 Feb 2021, Andy Moreton wrote: >>> >>>> On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >>>>> >>>>> Hi Andy, >>>>> >>>>> could you share the values of PATH_DUMPLOADSEARCH and >>>>> PATH_REL_LOADSEARCH from your epaths.h ? >>>>> >>>>> Thanks >>>>> >>>>> Andrea >>>> >>>> Native branch checkout is in: "c:/emacs/git/emacs/native/" >>>> >>>> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: >>>> >>>> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >>>> #define PATH_REL_LOADSEARCH "28.0.50/lisp" >>> >>> I've bootstrapped again after the recent hash shortening to ensure my build >>> is up to date, from commit 1f626e9662d8120acd5a937f847123cc2b8c6e31. The >>> paths above are unchanged. >>> >>> Running this from the build dir, I see messages like: >>> >>> error in process sentinel: Native elisp load failed: "file does not exists", >>> "c:/home/ajm/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln" >>> >>> This suggests that the AOT .eln files are not being found. It should find: >>> >>> c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln >>> >>> The middle hash (e67628ec vs. 8fa29c14) is not the same - any idea why ? >> >> After looking at what `comp-el-to-eln-filename' does, I observe that: >> >> (substring (md5 "c:/emacs/git/emacs/native/lisp/hl-line.el") 0 8) >> "e67628ec" >> >> (substring (md5 "//hl-line.el") 0 8) >> "8fa29c14" >> >> That matches the two middle hashes seen above. >> >> It looks like `comp-el-to-eln-filename` fails to match the filename >> prefix against PATH_DUMPLOADSEARCH. It is using case-sensitive matching, >> but on Windows filesystems are case-insensitive. > > Hi Andy, > > The Windows filesystem is case-insensitive but the case is preserved > correct? If so it should work no? Yes, Windows filesystems are case-preserving and do case-insensitive lookup. The fact the code complains about the file not existing, and the hashes matching as described earlier shows it is clearnly not working. I have conjectured why, but the reason may well be something else. > Last queston: do reverse slashes '\' appear somewhere in those > filenames? This was issue I tried to fix with the blind patch I've > sent. As Eli pointed out, that is not the problem: forward slashes are ok. AndyM From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 18 16:00:32 2021 Received: (at 46256) by debbugs.gnu.org; 18 Feb 2021 21:00:32 +0000 Received: from localhost ([127.0.0.1]:48236 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCqPY-0005ra-BH for submit@debbugs.gnu.org; Thu, 18 Feb 2021 16:00:32 -0500 Received: from mx.sdf.org ([205.166.94.24]:50737) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCqPW-0005on-9u for 46256@debbugs.gnu.org; Thu, 18 Feb 2021 16:00:30 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11IL0TgT016730 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Thu, 18 Feb 2021 21:00:29 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> Date: Thu, 18 Feb 2021 21:00:29 +0000 In-Reply-To: <86blch14qt.fsf@gmail.com> (Andy Moreton's message of "Thu, 18 Feb 2021 20:48:58 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > On Wed 17 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > >> Andy Moreton writes: >> >>> On Thu 04 Feb 2021, Andy Moreton wrote: >>> >>>> On Thu 04 Feb 2021, Andy Moreton wrote: >>>> >>>>> On Wed 03 Feb 2021, akrl--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >>>>>> >>>>>> Hi Andy, >>>>>> >>>>>> could you share the values of PATH_DUMPLOADSEARCH and >>>>>> PATH_REL_LOADSEARCH from your epaths.h ? >>>>>> >>>>>> Thanks >>>>>> >>>>>> Andrea >>>>> >>>>> Native branch checkout is in: "c:/emacs/git/emacs/native/" >>>>> >>>>> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/src/epaths.h" contains: >>>>> >>>>> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >>>>> #define PATH_REL_LOADSEARCH "28.0.50/lisp" >>>> >>>> I've bootstrapped again after the recent hash shortening to ensure my build >>>> is up to date, from commit 1f626e9662d8120acd5a937f847123cc2b8c6e31. The >>>> paths above are unchanged. >>>> >>>> Running this from the build dir, I see messages like: >>>> >>>> error in process sentinel: Native elisp load failed: "file does not exists", >>>> "c:/home/ajm/.emacs.d/eln-cache/28.0.50-e2ae3598/hl-line-e67628ec-664ef650.eln" >>>> >>>> This suggests that the AOT .eln files are not being found. It should find: >>>> >>>> c:/emacs/git/emacs/native/build/mingw64-x86_64-O2/native-lisp/28.0.50-e2ae3598/hl-line-8fa29c14-664ef650.eln >>>> >>>> The middle hash (e67628ec vs. 8fa29c14) is not the same - any idea why ? >>> >>> After looking at what `comp-el-to-eln-filename' does, I observe that: >>> >>> (substring (md5 "c:/emacs/git/emacs/native/lisp/hl-line.el") 0 8) >>> "e67628ec" >>> >>> (substring (md5 "//hl-line.el") 0 8) >>> "8fa29c14" >>> >>> That matches the two middle hashes seen above. >>> >>> It looks like `comp-el-to-eln-filename` fails to match the filename >>> prefix against PATH_DUMPLOADSEARCH. It is using case-sensitive matching, >>> but on Windows filesystems are case-insensitive. >> >> Hi Andy, >> >> The Windows filesystem is case-insensitive but the case is preserved >> correct? If so it should work no? > > Yes, Windows filesystems are case-preserving and do case-insensitive > lookup. The fact the code complains about the file not existing, and the > hashes matching as described earlier shows it is clearnly not working. I > have conjectured why, but the reason may well be something else. > >> Last queston: do reverse slashes '\' appear somewhere in those >> filenames? This was issue I tried to fix with the blind patch I've >> sent. > > As Eli pointed out, that is not the problem: forward slashes are ok. I understand they are handled, but here as we do a substitution we must substitute what's coming in. As you have the possibility to debug this piece of code on Windows please have a look at this (or try my blind patch if you haven't). Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 19 03:02:28 2021 Received: (at 46256) by debbugs.gnu.org; 19 Feb 2021 08:02:28 +0000 Received: from localhost ([127.0.0.1]:48662 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD0k8-0007td-L3 for submit@debbugs.gnu.org; Fri, 19 Feb 2021 03:02:28 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35438) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD0k7-0007tR-MD for 46256@debbugs.gnu.org; Fri, 19 Feb 2021 03:02:27 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58364) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lD0k1-0004Zy-RJ; Fri, 19 Feb 2021 03:02:21 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1370 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lD0k0-0002Fv-Ph; Fri, 19 Feb 2021 03:02:21 -0500 Date: Fri, 19 Feb 2021 10:02:35 +0200 Message-Id: <83h7m84h9g.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (bug-gnu-emacs@gnu.org) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Cc: 46256@debbugs.gnu.org > Date: Thu, 18 Feb 2021 21:00:29 +0000 > From: Andrea Corallo via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > >> Last queston: do reverse slashes '\' appear somewhere in those > >> filenames? This was issue I tried to fix with the blind patch I've > >> sent. > > > > As Eli pointed out, that is not the problem: forward slashes are ok. > > I understand they are handled, but here as we do a substitution we must > substitute what's coming in. > > As you have the possibility to debug this piece of code on Windows > please have a look at this (or try my blind patch if you haven't). If the problem is with hashing file names, you will have to canonicalize them first, including resolving the letter-case issue, the forward/back-slashes issue, and also the issue with those pesky numerical tails Windows sometimes produces. We have a function Fw32_long_file_name for that purpose, I think you should use it (if you need it for C strings, we could add a wrapper around w32_get_long_filename to do that instead). This assumes that you are talking about existing files; if that assumption is not true, we will need a slightly different strategy. From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 19 09:49:49 2021 Received: (at submit) by debbugs.gnu.org; 19 Feb 2021 14:49:49 +0000 Received: from localhost ([127.0.0.1]:49044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD76K-0003HC-KX for submit@debbugs.gnu.org; Fri, 19 Feb 2021 09:49:48 -0500 Received: from lists.gnu.org ([209.51.188.17]:35602) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD769-0003Go-JP for submit@debbugs.gnu.org; Fri, 19 Feb 2021 09:49:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35078) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lD767-0004ST-ER for bug-gnu-emacs@gnu.org; Fri, 19 Feb 2021 09:49:37 -0500 Received: from ciao.gmane.io ([116.202.254.214]:41748) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lD765-0004c9-IE for bug-gnu-emacs@gnu.org; Fri, 19 Feb 2021 09:49:34 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lD762-0007lS-I8 for bug-gnu-emacs@gnu.org; Fri, 19 Feb 2021 15:49:30 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Fri, 19 Feb 2021 14:49:25 +0000 Message-ID: <86v9ao5czu.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:AnOx4XS34IABO3NdR70XL6xsZ5E= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Fri 19 Feb 2021, Eli Zaretskii wrote: >> Cc: 46256@debbugs.gnu.org >> Date: Thu, 18 Feb 2021 21:00:29 +0000 >> From: Andrea Corallo via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> >> Last queston: do reverse slashes '\' appear somewhere in those >> >> filenames? This was issue I tried to fix with the blind patch I've >> >> sent. >> > >> > As Eli pointed out, that is not the problem: forward slashes are ok. >> >> I understand they are handled, but here as we do a substitution we must >> substitute what's coming in. >> >> As you have the possibility to debug this piece of code on Windows >> please have a look at this (or try my blind patch if you haven't). > > If the problem is with hashing file names, you will have to > canonicalize them first, including resolving the letter-case issue, > the forward/back-slashes issue, and also the issue with those pesky > numerical tails Windows sometimes produces. We have a function > Fw32_long_file_name for that purpose, I think you should use it (if > you need it for C strings, we could add a wrapper around > w32_get_long_filename to do that instead). This assumes that you are > talking about existing files; if that assumption is not true, we will > need a slightly different strategy. The problem is with the file names used to generate the hashes, where comparison of file names. As an experiment, I changed epaths.h from: #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" to: #define PATH_DUMPLOADSEARCH "c:/emacs/git/emacs/native/lisp" and then ran make (to build without regenerating the header). The resulting emacs did not complain about mismatched filenames. Thus the fix outlined by Eli above looks like it will solve the problem. AndyM From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 19 10:28:38 2021 Received: (at 46256) by debbugs.gnu.org; 19 Feb 2021 15:28:38 +0000 Received: from localhost ([127.0.0.1]:50160 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD7ht-0004eK-Ue for submit@debbugs.gnu.org; Fri, 19 Feb 2021 10:28:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54018) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD7hp-0004e2-Jk for 46256@debbugs.gnu.org; Fri, 19 Feb 2021 10:28:36 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50613) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lD7hk-0003gc-DS; Fri, 19 Feb 2021 10:28:28 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1074 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lD7hj-0005Kq-9P; Fri, 19 Feb 2021 10:28:28 -0500 Date: Fri, 19 Feb 2021 17:28:41 +0200 Message-Id: <835z2o2i1i.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-Reply-To: <86v9ao5czu.fsf@gmail.com> (message from Andy Moreton on Fri, 19 Feb 2021 14:49:25 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andy Moreton > Date: Fri, 19 Feb 2021 14:49:25 +0000 > > As an experiment, I changed epaths.h from: > #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" > > to: > #define PATH_DUMPLOADSEARCH "c:/emacs/git/emacs/native/lisp" > > and then ran make (to build without regenerating the header). > The resulting emacs did not complain about mismatched filenames. > > Thus the fix outlined by Eli above looks like it will solve the problem. Btw, there's a similar in principle, but different in details, problem with macOS: it stores file names in decomposed form, i.e., for example, ä will be stored as two codepoints: a, followed by U+00A8 DIAERESIS. So any hashing that relies on comparing file names as strings will need to normalize the file names on macOS filesystems (HFS) as well. From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 19 11:01:05 2021 Received: (at 46256) by debbugs.gnu.org; 19 Feb 2021 16:01:05 +0000 Received: from localhost ([127.0.0.1]:50212 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD8DI-0007aJ-Tk for submit@debbugs.gnu.org; Fri, 19 Feb 2021 11:01:05 -0500 Received: from mx.sdf.org ([205.166.94.24]:63336) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lD8DG-0007Zf-5w for 46256@debbugs.gnu.org; Fri, 19 Feb 2021 11:01:04 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11JG11FH000872 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 19 Feb 2021 16:01:01 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> Date: Fri, 19 Feb 2021 16:01:01 +0000 In-Reply-To: <86v9ao5czu.fsf@gmail.com> (Andy Moreton's message of "Fri, 19 Feb 2021 14:49:25 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > As an experiment, I changed epaths.h from: > #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" > > to: > #define PATH_DUMPLOADSEARCH "c:/emacs/git/emacs/native/lisp" > > and then ran make (to build without regenerating the header). > The resulting emacs did not complain about mismatched filenames. > > Thus the fix outlined by Eli above looks like it will solve the problem. Sounds great! I'll write the fix in the following days (in case somebody wants to take over the task just mention it here, indeed this is very welcome). Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 26 15:34:19 2021 Received: (at 46256) by debbugs.gnu.org; 26 Feb 2021 20:34:19 +0000 Received: from localhost ([127.0.0.1]:42645 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFjoV-0005Ha-3Y for submit@debbugs.gnu.org; Fri, 26 Feb 2021 15:34:18 -0500 Received: from mx.sdf.org ([205.166.94.24]:64014) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFjoS-0005HR-Lc for 46256@debbugs.gnu.org; Fri, 26 Feb 2021 15:34:13 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11QKYAap007081 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 26 Feb 2021 20:34:11 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> Date: Fri, 26 Feb 2021 20:34:10 +0000 In-Reply-To: <86v9ao5czu.fsf@gmail.com> (Andy Moreton's message of "Fri, 19 Feb 2021 14:49:25 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Andy Moreton writes: [...] > The problem is with the file names used to generate the hashes, where > comparison of file names. > > As an experiment, I changed epaths.h from: > #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" > > to: > #define PATH_DUMPLOADSEARCH "c:/emacs/git/emacs/native/lisp" > > and then ran make (to build without regenerating the header). > The resulting emacs did not complain about mismatched filenames. > > Thus the fix outlined by Eli above looks like it will solve the problem. > > AndyM Hi Andy, could you give it a try to the attached patch? It follows Eli's suggestion of using 'Fw32_long_file_name'. Thanks Andrea --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Canonicalize-filenames-on-Windows-before-hashing-bug.patch >From 312deba5302a8136fa104b054af54572cc64ea5e Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Fri, 26 Feb 2021 21:27:02 +0100 Subject: [PATCH] * Canonicalize filenames on Windows before hashing (bug#46256) * src/comp.c (Fcomp_el_to_eln_filename): On Windowns canonicalize filenames before hashing. --- src/comp.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/comp.c b/src/comp.c index a8b8ef95fa..1a89e4e62a 100644 --- a/src/comp.c +++ b/src/comp.c @@ -3983,6 +3983,10 @@ DEFUN ("comp-el-to-eln-filename", Fcomp_el_to_eln_filename, if (NILP (Ffile_exists_p (filename))) xsignal1 (Qfile_missing, filename); +#ifdef WINDOWSNT + filename = Fw32_long_file_name (filename); +#endif + Lisp_Object content_hash = comp_hash_source_file (filename); if (suffix_p (filename, ".gz")) @@ -4014,8 +4018,11 @@ DEFUN ("comp-el-to-eln-filename", Fcomp_el_to_eln_filename, Lisp_Object sys_re = concat2 (build_string ("\\`[[:ascii:]]+"), Fregexp_quote (build_string ("/" PATH_REL_LOADSEARCH "/"))); - loadsearch_re_list = - list2 (sys_re, Fregexp_quote (build_string (PATH_DUMPLOADSEARCH "/"))); + Lisp_Object dump_load_search = build_string (PATH_DUMPLOADSEARCH "/"); +#ifdef WINDOWSNT + dump_load_search = Fw32_long_file_name (dump_load_search); +#endif + loadsearch_re_list = list2 (sys_re, Fregexp_quote (dump_load_search)); } Lisp_Object lds_re_tail = loadsearch_re_list; -- 2.20.1 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 26 15:45:41 2021 Received: (at 46256) by debbugs.gnu.org; 26 Feb 2021 20:45:41 +0000 Received: from localhost ([127.0.0.1]:42665 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFjzY-0005Z0-Ra for submit@debbugs.gnu.org; Fri, 26 Feb 2021 15:45:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37830) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFjzX-0005Yo-4K for 46256@debbugs.gnu.org; Fri, 26 Feb 2021 15:45:39 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41850) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lFjzR-0003FJ-QY; Fri, 26 Feb 2021 15:45:33 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4938 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lFjzP-0003Ot-W7; Fri, 26 Feb 2021 15:45:32 -0500 Date: Fri, 26 Feb 2021 22:45:19 +0200 Message-Id: <83k0qupnhc.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (bug-gnu-emacs@gnu.org) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Cc: 46256@debbugs.gnu.org > Date: Fri, 26 Feb 2021 20:34:10 +0000 > From: Andrea Corallo via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > --- a/src/comp.c > +++ b/src/comp.c > @@ -3983,6 +3983,10 @@ DEFUN ("comp-el-to-eln-filename", Fcomp_el_to_eln_filename, > if (NILP (Ffile_exists_p (filename))) > xsignal1 (Qfile_missing, filename); > > +#ifdef WINDOWSNT > + filename = Fw32_long_file_name (filename); > +#endif Is "filename" here a name of an existing file? If not, Fw32_long_file_name will return nil. From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 26 15:48:54 2021 Received: (at 46256) by debbugs.gnu.org; 26 Feb 2021 20:48:54 +0000 Received: from localhost ([127.0.0.1]:42669 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFk2g-0005de-Ca for submit@debbugs.gnu.org; Fri, 26 Feb 2021 15:48:54 -0500 Received: from mx.sdf.org ([205.166.94.24]:63070) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFk2f-0005dX-HV for 46256@debbugs.gnu.org; Fri, 26 Feb 2021 15:48:54 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11QKmqUF023479 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 26 Feb 2021 20:48:53 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <83k0qupnhc.fsf@gnu.org> Date: Fri, 26 Feb 2021 20:48:52 +0000 In-Reply-To: <83k0qupnhc.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 26 Feb 2021 22:45:19 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> Cc: 46256@debbugs.gnu.org >> Date: Fri, 26 Feb 2021 20:34:10 +0000 >> From: Andrea Corallo via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> --- a/src/comp.c >> +++ b/src/comp.c >> @@ -3983,6 +3983,10 @@ DEFUN ("comp-el-to-eln-filename", Fcomp_el_to_eln_filename, >> if (NILP (Ffile_exists_p (filename))) >> xsignal1 (Qfile_missing, filename); >> >> +#ifdef WINDOWSNT >> + filename = Fw32_long_file_name (filename); >> +#endif > > Is "filename" here a name of an existing file? If not, > Fw32_long_file_name will return nil. It should always be as we explicitly check for that. Quick question: I assumed Fw32_long_file_name works for directories as well, is this correct? Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 26 15:52:53 2021 Received: (at 46256) by debbugs.gnu.org; 26 Feb 2021 20:52:53 +0000 Received: from localhost ([127.0.0.1]:42675 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFk6W-0005jO-Sh for submit@debbugs.gnu.org; Fri, 26 Feb 2021 15:52:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39862) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFk6V-0005jC-Jy for 46256@debbugs.gnu.org; Fri, 26 Feb 2021 15:52:51 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42011) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lFk6Q-0006Ql-8p; Fri, 26 Feb 2021 15:52:46 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1407 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lFk6P-00044O-K1; Fri, 26 Feb 2021 15:52:46 -0500 Date: Fri, 26 Feb 2021 22:52:35 +0200 Message-Id: <83im6epn58.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 26 Feb 2021 20:48:52 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <83k0qupnhc.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: andrewjmoreton@gmail.com, 46256@debbugs.gnu.org > Date: Fri, 26 Feb 2021 20:48:52 +0000 > > Quick question: I assumed Fw32_long_file_name works for directories as > well, is this correct? Yes, it does. From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 27 01:58:50 2021 Received: (at 46256) by debbugs.gnu.org; 27 Feb 2021 06:58:50 +0000 Received: from localhost ([127.0.0.1]:43096 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFtYv-0005Rn-TX for submit@debbugs.gnu.org; Sat, 27 Feb 2021 01:58:50 -0500 Received: from mx.sdf.org ([205.166.94.24]:61699) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFtYt-0005Rc-DA for 46256@debbugs.gnu.org; Sat, 27 Feb 2021 01:58:48 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11R6wjX8029002 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 27 Feb 2021 06:58:46 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <83k0qupnhc.fsf@gnu.org> <83im6epn58.fsf@gnu.org> Date: Sat, 27 Feb 2021 06:58:45 +0000 In-Reply-To: <83im6epn58.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 26 Feb 2021 22:52:35 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: andrewjmoreton@gmail.com, 46256@debbugs.gnu.org >> Date: Fri, 26 Feb 2021 20:48:52 +0000 >> >> Quick question: I assumed Fw32_long_file_name works for directories as >> well, is this correct? > > Yes, it does. Nice, thinking about I've got a last question: normalizing "c:/foo/" the trainling '/' is kept or removed? If the case is the second the patch needs an adjustment. Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 27 02:55:18 2021 Received: (at 46256) by debbugs.gnu.org; 27 Feb 2021 07:55:18 +0000 Received: from localhost ([127.0.0.1]:43135 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFuRa-0006ru-Cb for submit@debbugs.gnu.org; Sat, 27 Feb 2021 02:55:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40876) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFuRY-0006rd-Ie for 46256@debbugs.gnu.org; Sat, 27 Feb 2021 02:55:17 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:56763) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lFuRT-0000kv-Am; Sat, 27 Feb 2021 02:55:11 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2120 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lFuRS-0003sP-MP; Sat, 27 Feb 2021 02:55:11 -0500 Date: Sat, 27 Feb 2021 09:55:02 +0200 Message-Id: <834khyosh5.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 27 Feb 2021 06:58:45 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <83k0qupnhc.fsf@gnu.org> <83im6epn58.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: andrewjmoreton@gmail.com, 46256@debbugs.gnu.org > Date: Sat, 27 Feb 2021 06:58:45 +0000 > > Nice, thinking about I've got a last question: normalizing "c:/foo/" the > trainling '/' is kept or removed? If the case is the second the patch > needs an adjustment. A single trailing slash, if any, is kept. Multiple trailing slashes are collapsed into a single one. From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 27 07:08:16 2021 Received: (at submit) by debbugs.gnu.org; 27 Feb 2021 12:08:16 +0000 Received: from localhost ([127.0.0.1]:43310 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFyOO-0004d5-7P for submit@debbugs.gnu.org; Sat, 27 Feb 2021 07:08:16 -0500 Received: from lists.gnu.org ([209.51.188.17]:40004) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lFyOM-0004cy-OS for submit@debbugs.gnu.org; Sat, 27 Feb 2021 07:08:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33178) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFyOM-0007fH-K0 for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 07:08:14 -0500 Received: from ciao.gmane.io ([116.202.254.214]:44984) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFyOL-0001fm-As for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 07:08:14 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lFyOI-00016d-IV for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 13:08:10 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 27 Feb 2021 12:08:02 +0000 Message-ID: <86wnutogrh.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:q7yvs+GpnN5iWxhXB62Xj7rnX1I= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Fri 26 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Andy Moreton writes: > > [...] > >> The problem is with the file names used to generate the hashes, where >> comparison of file names. >> >> As an experiment, I changed epaths.h from: >> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >> >> to: >> #define PATH_DUMPLOADSEARCH "c:/emacs/git/emacs/native/lisp" >> >> and then ran make (to build without regenerating the header). >> The resulting emacs did not complain about mismatched filenames. >> >> Thus the fix outlined by Eli above looks like it will solve the problem. >> >> AndyM > > Hi Andy, > > could you give it a try to the attached patch? It follows Eli's > suggestion of using 'Fw32_long_file_name'. The patch looks good - please apply it. I tried building with the patch applied to a clean tree, and the resulting emacs runs without the filename mismatch messages, and did not recompile the AOT files into the per-user eln-cache. There were also a couple of errors in the build: Backtrace: 00007ff78467a2a2 00007ff78453be26 00007ff7845a98ac ...[snipped]... 00007ff784626548 Eager macro-expansion failure: (file-error "Renaming" "Permission denied" "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2-native/native-lisp/28.0.50-e09cfb99/cc-bytecomp-4817e810-d16f606e.eln" "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2-native/native-lisp/28.0.50-e09cfb99/cc-bytecomp-4817e810-d16f606e.elnGMMUdn.eln.tmp") C:/emacs/git/emacs/native/src/alloc.c:3160: Emacs fatal error: assertion failed: cu->handle make[2]: *** [Makefile:319: progmodes/antlr-mode.elc] Error 3 The backtrace addresses did not give anything useful from addr2line. There are still some elisp files that did not get native compiled when the build was done with "make -j8 NATIVE_FULL_AOT=1", and so get async compiled when running the built emacs: ansi-color auth_source byte-opt bytecomp cconv cl-extra cl-lib cl-macs cl-seq comint comp comp-cstr cus-edit cus-start desktop display-fill-column-indicator easy-mmode easymenu edmacro eieio eieio-core frameset gv help-mode hl-line image-file info json kmacro map minibuf-eldef package paren password-cache pcase pp ring rx seq subr-x time-date warnings wid-edit That may be a result of the error during the build. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 27 14:14:26 2021 Received: (at 46256) by debbugs.gnu.org; 27 Feb 2021 19:14:26 +0000 Received: from localhost ([127.0.0.1]:45408 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG52o-0004xx-EK for submit@debbugs.gnu.org; Sat, 27 Feb 2021 14:14:26 -0500 Received: from mx.sdf.org ([205.166.94.24]:49159) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG52l-0004xk-Hc for 46256@debbugs.gnu.org; Sat, 27 Feb 2021 14:14:25 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11RJEKF0017330 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 27 Feb 2021 19:14:21 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> Date: Sat, 27 Feb 2021 19:14:20 +0000 In-Reply-To: <86wnutogrh.fsf@gmail.com> (Andy Moreton's message of "Sat, 27 Feb 2021 12:08:02 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > On Fri 26 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > >> Andy Moreton writes: >> >> [...] >> >>> The problem is with the file names used to generate the hashes, where >>> comparison of file names. >>> >>> As an experiment, I changed epaths.h from: >>> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >>> >>> to: >>> #define PATH_DUMPLOADSEARCH "c:/emacs/git/emacs/native/lisp" >>> >>> and then ran make (to build without regenerating the header). >>> The resulting emacs did not complain about mismatched filenames. >>> >>> Thus the fix outlined by Eli above looks like it will solve the problem. >>> >>> AndyM >> >> Hi Andy, >> >> could you give it a try to the attached patch? It follows Eli's >> suggestion of using 'Fw32_long_file_name'. > > The patch looks good - please apply it. Thanks for verifying it, installed as 312deba530. > I tried building with the patch applied to a clean tree, and the > resulting emacs runs without the filename mismatch messages, and did not > recompile the AOT files into the per-user eln-cache. > > There were also a couple of errors in the build: > > Backtrace: > 00007ff78467a2a2 > 00007ff78453be26 > 00007ff7845a98ac > ...[snipped]... > 00007ff784626548 > Eager macro-expansion failure: (file-error "Renaming" "Permission > denied" > "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2-native/native-lisp/28.0.50-e09cfb99/cc-bytecomp-4817e810-d16f606e.eln" > "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2-native/native-lisp/28.0.50-e09cfb99/cc-bytecomp-4817e810-d16f606e.elnGMMUdn.eln.tmp") > C:/emacs/git/emacs/native/src/alloc.c:3160: Emacs fatal error: assertion failed: cu->handle > make[2]: *** [Makefile:319: progmodes/antlr-mode.elc] Error 3 > > The backtrace addresses did not give anything useful from addr2line. > > There are still some elisp files that did not get native compiled when > the build was done with "make -j8 NATIVE_FULL_AOT=1", and so get async > compiled when running the built emacs: > > ansi-color auth_source byte-opt bytecomp cconv cl-extra cl-lib cl-macs > cl-seq comint comp comp-cstr cus-edit cus-start desktop > display-fill-column-indicator easy-mmode easymenu edmacro eieio > eieio-core frameset gv help-mode hl-line image-file info json kmacro > map minibuf-eldef package paren password-cache pcase pp ring rx seq > subr-x time-date warnings wid-edit > > That may be a result of the error during the build. Mmmmh, that's strange some of these are even compiled as COMPILE_FIRST therfore are certainly native compiled. One thing you could do (before one of these is recompiled) is to use `comp-el-to-eln-filename' to check what the native compiler is expecting as eln filename and if this is present in any of the folders in your `comp-eln-load-path'. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 27 14:20:37 2021 Received: (at submit) by debbugs.gnu.org; 27 Feb 2021 19:20:38 +0000 Received: from localhost ([127.0.0.1]:45416 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG58n-00057F-HT for submit@debbugs.gnu.org; Sat, 27 Feb 2021 14:20:37 -0500 Received: from lists.gnu.org ([209.51.188.17]:43038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG58m-000577-HQ for submit@debbugs.gnu.org; Sat, 27 Feb 2021 14:20:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lG58h-0004gN-E1 for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 14:20:35 -0500 Received: from mx.sdf.org ([205.166.94.24]:65236) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lG58d-0003fs-P0 for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 14:20:31 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11RJKOKk015805 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 27 Feb 2021 19:20:24 GMT From: Andrea Corallo To: Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> Date: Sat, 27 Feb 2021 19:20:24 +0000 In-Reply-To: (Andrea Corallo via's message of "Sat, 27 Feb 2021 19:14:20 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=205.166.94.24; envelope-from=akrl@sdf.org; helo=mx.sdf.org X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: 46256@debbugs.gnu.org, Andy Moreton X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" writes: > Andy Moreton writes: > >> On Fri 26 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >> >>> Andy Moreton writes: >>> >>> [...] >>> >>>> The problem is with the file names used to generate the hashes, where >>>> comparison of file names. >>>> >>>> As an experiment, I changed epaths.h from: >>>> #define PATH_DUMPLOADSEARCH "C:/emacs/git/emacs/native/lisp" >>>> >>>> to: >>>> #define PATH_DUMPLOADSEARCH "c:/emacs/git/emacs/native/lisp" >>>> >>>> and then ran make (to build without regenerating the header). >>>> The resulting emacs did not complain about mismatched filenames. >>>> >>>> Thus the fix outlined by Eli above looks like it will solve the problem. >>>> >>>> AndyM >>> >>> Hi Andy, >>> >>> could you give it a try to the attached patch? It follows Eli's >>> suggestion of using 'Fw32_long_file_name'. >> >> The patch looks good - please apply it. > > Thanks for verifying it, installed as 312deba530. > >> I tried building with the patch applied to a clean tree, and the >> resulting emacs runs without the filename mismatch messages, and did not >> recompile the AOT files into the per-user eln-cache. >> >> There were also a couple of errors in the build: >> >> Backtrace: >> 00007ff78467a2a2 >> 00007ff78453be26 >> 00007ff7845a98ac >> ...[snipped]... >> 00007ff784626548 >> Eager macro-expansion failure: (file-error "Renaming" "Permission >> denied" >> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2-native/native-lisp/28.0.50-e09cfb99/cc-bytecomp-4817e810-d16f606e.eln" >> "c:/emacs/git/emacs/native/build/mingw64-x86_64-O2-native/native-lisp/28.0.50-e09cfb99/cc-bytecomp-4817e810-d16f606e.elnGMMUdn.eln.tmp") >> C:/emacs/git/emacs/native/src/alloc.c:3160: Emacs fatal error: assertion failed: cu->handle >> make[2]: *** [Makefile:319: progmodes/antlr-mode.elc] Error 3 >> >> The backtrace addresses did not give anything useful from addr2line. >> >> There are still some elisp files that did not get native compiled when >> the build was done with "make -j8 NATIVE_FULL_AOT=1", and so get async >> compiled when running the built emacs: >> >> ansi-color auth_source byte-opt bytecomp cconv cl-extra cl-lib cl-macs >> cl-seq comint comp comp-cstr cus-edit cus-start desktop >> display-fill-column-indicator easy-mmode easymenu edmacro eieio >> eieio-core frameset gv help-mode hl-line image-file info json kmacro >> map minibuf-eldef package paren password-cache pcase pp ring rx seq >> subr-x time-date warnings wid-edit >> >> That may be a result of the error during the build. > > Mmmmh, that's strange some of these are even compiled as COMPILE_FIRST > therfore are certainly native compiled. > > One thing you could do (before one of these is recompiled) is to use > `comp-el-to-eln-filename' to check what the native compiler is expecting > as eln filename and if this is present in any of the folders in your > `comp-eln-load-path'. Apologies, to be more precise: if the file is compiled during the build (as should be in this case) it should be in the "native-lisp/" dir in the build tree. Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 27 14:46:15 2021 Received: (at submit) by debbugs.gnu.org; 27 Feb 2021 19:46:15 +0000 Received: from localhost ([127.0.0.1]:45428 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG5Xb-0005ht-4L for submit@debbugs.gnu.org; Sat, 27 Feb 2021 14:46:15 -0500 Received: from lists.gnu.org ([209.51.188.17]:45782) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG5XZ-0005hl-1m for submit@debbugs.gnu.org; Sat, 27 Feb 2021 14:46:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51038) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lG5XY-00008T-Nq for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 14:46:12 -0500 Received: from ciao.gmane.io ([116.202.254.214]:53806) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lG5XX-0006wz-D0 for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 14:46:12 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lG5XU-000A4P-E9 for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 20:46:08 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 27 Feb 2021 19:46:02 +0000 Message-ID: <86wnut8fb9.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:/Uu+llnaFnDLEE3+gbGHfxojOc8= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Sat 27 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Andy Moreton writes: >> There are still some elisp files that did not get native compiled when >> the build was done with "make -j8 NATIVE_FULL_AOT=1", and so get async >> compiled when running the built emacs: >> >> ansi-color auth_source byte-opt bytecomp cconv cl-extra cl-lib cl-macs >> cl-seq comint comp comp-cstr cus-edit cus-start desktop >> display-fill-column-indicator easy-mmode easymenu edmacro eieio >> eieio-core frameset gv help-mode hl-line image-file info json kmacro >> map minibuf-eldef package paren password-cache pcase pp ring rx seq >> subr-x time-date warnings wid-edit >> >> That may be a result of the error during the build. > > Mmmmh, that's strange some of these are even compiled as COMPILE_FIRST > therfore are certainly native compiled. I suspect that the issue may be with parallel builds (note the "-j8" above). Repeating the build with "-j1" appears to be building the missing .eln files as expected. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 27 16:58:38 2021 Received: (at submit) by debbugs.gnu.org; 27 Feb 2021 21:58:38 +0000 Received: from localhost ([127.0.0.1]:45503 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG7bi-0000MF-52 for submit@debbugs.gnu.org; Sat, 27 Feb 2021 16:58:38 -0500 Received: from lists.gnu.org ([209.51.188.17]:56274) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lG7bg-0000M8-UL for submit@debbugs.gnu.org; Sat, 27 Feb 2021 16:58:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lG7bf-0003Qb-6T for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 16:58:35 -0500 Received: from ciao.gmane.io ([116.202.254.214]:47124) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lG7bc-0006dJ-Om for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 16:58:34 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lG7ba-0004Pf-5P for bug-gnu-emacs@gnu.org; Sat, 27 Feb 2021 22:58:30 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 27 Feb 2021 21:58:25 +0000 Message-ID: <861rd1tbpa.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:cdb+ZYDgt0KA8pd6BQnJyRYfDoM= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Sat 27 Feb 2021, Andy Moreton wrote: > On Sat 27 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > >> Andy Moreton writes: >>> There are still some elisp files that did not get native compiled when >>> the build was done with "make -j8 NATIVE_FULL_AOT=1", and so get async >>> compiled when running the built emacs: >>> >>> ansi-color auth_source byte-opt bytecomp cconv cl-extra cl-lib cl-macs >>> cl-seq comint comp comp-cstr cus-edit cus-start desktop >>> display-fill-column-indicator easy-mmode easymenu edmacro eieio >>> eieio-core frameset gv help-mode hl-line image-file info json kmacro >>> map minibuf-eldef package paren password-cache pcase pp ring rx seq >>> subr-x time-date warnings wid-edit >>> >>> That may be a result of the error during the build. >> >> Mmmmh, that's strange some of these are even compiled as COMPILE_FIRST >> therfore are certainly native compiled. > > I suspect that the issue may be with parallel builds (note the "-j8" > above). Repeating the build with "-j1" appears to be building the > missing .eln files as expected. Now that the -j1 build has completed (without error), all of the lisp files have been compiled AOT as expected, and running the resulting emacs does not rebuild any of those .eln files. So I think there are still some other issues with dependencies and handling parallel builds, but this bug has been fixed. Thanks, AndyM From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 28 12:35:54 2021 Received: (at 46256) by debbugs.gnu.org; 28 Feb 2021 17:35:54 +0000 Received: from localhost ([127.0.0.1]:47127 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGPyz-0007Yz-Vq for submit@debbugs.gnu.org; Sun, 28 Feb 2021 12:35:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51844) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGPyy-0007Yn-GK for 46256@debbugs.gnu.org; Sun, 28 Feb 2021 12:35:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53147) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGPyo-000486-Dh; Sun, 28 Feb 2021 12:35:43 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3795 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lGPyS-00028T-EM; Sun, 28 Feb 2021 12:35:24 -0500 Date: Sun, 28 Feb 2021 19:35:16 +0200 Message-Id: <83pn0km6y3.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-Reply-To: <861rd1tbpa.fsf@gmail.com> (message from Andy Moreton on Sat, 27 Feb 2021 21:58:25 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andy Moreton > Date: Sat, 27 Feb 2021 21:58:25 +0000 > > > I suspect that the issue may be with parallel builds (note the "-j8" > > above). Repeating the build with "-j1" appears to be building the > > missing .eln files as expected. > > Now that the -j1 build has completed (without error), all of the lisp > files have been compiled AOT as expected, and running the resulting > emacs does not rebuild any of those .eln files. > > So I think there are still some other issues with dependencies and > handling parallel builds, but this bug has been fixed. Hmm... what would be the reason for parallel builds not work well on MS-Windows? file sharing issues? Does the async native compilation use temporary files, and if so, do they reside in the same directory when multiple compilations are running? From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 28 16:04:46 2021 Received: (at 46256-done) by debbugs.gnu.org; 28 Feb 2021 21:04:46 +0000 Received: from localhost ([127.0.0.1]:47341 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGTF8-00005l-4e for submit@debbugs.gnu.org; Sun, 28 Feb 2021 16:04:46 -0500 Received: from mx.sdf.org ([205.166.94.24]:63787) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGTF6-00005e-Qn for 46256-done@debbugs.gnu.org; Sun, 28 Feb 2021 16:04:45 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11SL4h07024772 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 28 Feb 2021 21:04:43 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> Date: Sun, 28 Feb 2021 21:04:43 +0000 In-Reply-To: <861rd1tbpa.fsf@gmail.com> (Andy Moreton's message of "Sat, 27 Feb 2021 21:58:25 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256-done Cc: 46256-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > On Sat 27 Feb 2021, Andy Moreton wrote: > >> On Sat 27 Feb 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: >> >>> Andy Moreton writes: >>>> There are still some elisp files that did not get native compiled when >>>> the build was done with "make -j8 NATIVE_FULL_AOT=1", and so get async >>>> compiled when running the built emacs: >>>> >>>> ansi-color auth_source byte-opt bytecomp cconv cl-extra cl-lib cl-macs >>>> cl-seq comint comp comp-cstr cus-edit cus-start desktop >>>> display-fill-column-indicator easy-mmode easymenu edmacro eieio >>>> eieio-core frameset gv help-mode hl-line image-file info json kmacro >>>> map minibuf-eldef package paren password-cache pcase pp ring rx seq >>>> subr-x time-date warnings wid-edit >>>> >>>> That may be a result of the error during the build. >>> >>> Mmmmh, that's strange some of these are even compiled as COMPILE_FIRST >>> therfore are certainly native compiled. >> >> I suspect that the issue may be with parallel builds (note the "-j8" >> above). Repeating the build with "-j1" appears to be building the >> missing .eln files as expected. > > Now that the -j1 build has completed (without error), all of the lisp > files have been compiled AOT as expected, and running the resulting > emacs does not rebuild any of those .eln files. > > So I think there are still some other issues with dependencies and > handling parallel builds, but this bug has been fixed. Thanks for checking, I'm closing then. Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 28 16:15:07 2021 Received: (at 46256) by debbugs.gnu.org; 28 Feb 2021 21:15:07 +0000 Received: from localhost ([127.0.0.1]:47348 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGTP9-0000Ky-5Y for submit@debbugs.gnu.org; Sun, 28 Feb 2021 16:15:07 -0500 Received: from mx.sdf.org ([205.166.94.24]:63026) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGTP6-0000Ko-Aj for 46256@debbugs.gnu.org; Sun, 28 Feb 2021 16:15:05 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 11SLF3Ou026373 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 28 Feb 2021 21:15:03 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> Date: Sun, 28 Feb 2021 21:15:03 +0000 In-Reply-To: <83pn0km6y3.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 28 Feb 2021 19:35:16 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, Andy Moreton X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andy Moreton >> Date: Sat, 27 Feb 2021 21:58:25 +0000 >> >> > I suspect that the issue may be with parallel builds (note the "-j8" >> > above). Repeating the build with "-j1" appears to be building the >> > missing .eln files as expected. >> >> Now that the -j1 build has completed (without error), all of the lisp >> files have been compiled AOT as expected, and running the resulting >> emacs does not rebuild any of those .eln files. >> >> So I think there are still some other issues with dependencies and >> handling parallel builds, but this bug has been fixed. > > Hmm... what would be the reason for parallel builds not work well on > MS-Windows? file sharing issues? I suspect this is not Windows related. > Does the async native compilation use temporary files, and if so, do > they reside in the same directory when multiple compilations are > running? Yes, we rely on Fmake_temp_file_internal in Fcomp__compile_ctxt_to_file to decide the output filename to be passed to libgccjit when asking for compilation. There should be no conflict unless more then one process is trying to compile the same file (not sure ATM if this is what we are seeing here and why this should be happening). Andrea From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 01 00:36:35 2021 Received: (at 46256) by debbugs.gnu.org; 1 Mar 2021 05:36:35 +0000 Received: from localhost ([127.0.0.1]:47811 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGbEQ-0006JG-QI for submit@debbugs.gnu.org; Mon, 01 Mar 2021 00:36:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51524) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGbEP-0006J3-Es for 46256@debbugs.gnu.org; Mon, 01 Mar 2021 00:36:33 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38896) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGbEK-0006ak-7D; Mon, 01 Mar 2021 00:36:28 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4175 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lGbEI-0002yo-Vu; Mon, 01 Mar 2021 00:36:27 -0500 Date: Mon, 01 Mar 2021 07:36:23 +0200 Message-Id: <83lfb78mg8.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sun, 28 Feb 2021 21:15:03 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: Andy Moreton , 46256@debbugs.gnu.org > Date: Sun, 28 Feb 2021 21:15:03 +0000 > > > Does the async native compilation use temporary files, and if so, do > > they reside in the same directory when multiple compilations are > > running? > > Yes, we rely on Fmake_temp_file_internal in Fcomp__compile_ctxt_to_file > to decide the output filename to be passed to libgccjit when asking for > compilation. That shouldn't cause a problem, I think. > There should be no conflict unless more then one process is trying to > compile the same file Is there a way to print to some log file the names of the files being compiled? Then perhaps we could catch such multiple compilations. AFAIR, the Emacs build process divides files into several groups, and no 2 groups include the same file. So the top-level compilation process cannot cause multiple compilations of the same file. But could it happen that compiling file A indirectly causes file B to be compiled, because file A requires B or loads B or calls functions declared to be in B, and there's not yet a .eln file for file B? From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 01 01:34:36 2021 Received: (at 46256) by debbugs.gnu.org; 1 Mar 2021 06:34:36 +0000 Received: from localhost ([127.0.0.1]:47867 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGc8a-0007qi-CS for submit@debbugs.gnu.org; Mon, 01 Mar 2021 01:34:36 -0500 Received: from mx.sdf.org ([205.166.94.24]:55920) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGc8Y-0007qa-Jw for 46256@debbugs.gnu.org; Mon, 01 Mar 2021 01:34:35 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1216YWEQ001296 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Mon, 1 Mar 2021 06:34:33 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <83lfb78mg8.fsf@gnu.org> Date: Mon, 01 Mar 2021 06:34:32 +0000 In-Reply-To: <83lfb78mg8.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 01 Mar 2021 07:36:23 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: Andy Moreton , 46256@debbugs.gnu.org >> Date: Sun, 28 Feb 2021 21:15:03 +0000 >> >> > Does the async native compilation use temporary files, and if so, do >> > they reside in the same directory when multiple compilations are >> > running? >> >> Yes, we rely on Fmake_temp_file_internal in Fcomp__compile_ctxt_to_file >> to decide the output filename to be passed to libgccjit when asking for >> compilation. > > That shouldn't cause a problem, I think. > >> There should be no conflict unless more then one process is trying to >> compile the same file > > Is there a way to print to some log file the names of the files being > compiled? Then perhaps we could catch such multiple compilations. We don't have any log facility ATM for that. Yesterday evening testing a patch I had the same issue, it should be sufficient to add some print. I'll try to look into. > AFAIR, the Emacs build process divides files into several groups, and > no 2 groups include the same file. So the top-level compilation > process cannot cause multiple compilations of the same file. But > could it happen that compiling file A indirectly causes file B to be > compiled, because file A requires B or loads B or calls functions > declared to be in B, and there's not yet a .eln file for file B? It should not happen. When 'noninteractive' is true we disable deferred compilation in 'maybe_defer_native_compilation'. Reason for this being that we want to trigger automatic compilations only for reasonably long standing sessions and very often non interactive ones aren't. Andrea From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 01 04:49:10 2021 Received: (at submit) by debbugs.gnu.org; 1 Mar 2021 09:49:10 +0000 Received: from localhost ([127.0.0.1]:48134 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGfAs-0004J5-Ej for submit@debbugs.gnu.org; Mon, 01 Mar 2021 04:49:10 -0500 Received: from lists.gnu.org ([209.51.188.17]:59340) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lGfAr-0004Iy-6Q for submit@debbugs.gnu.org; Mon, 01 Mar 2021 04:49:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34070) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGfAq-0001U0-T7 for bug-gnu-emacs@gnu.org; Mon, 01 Mar 2021 04:49:08 -0500 Received: from ciao.gmane.io ([116.202.254.214]:51572) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGfAp-0007G1-JF for bug-gnu-emacs@gnu.org; Mon, 01 Mar 2021 04:49:08 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lGfAl-0002zI-Gi for bug-gnu-emacs@gnu.org; Mon, 01 Mar 2021 10:49:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Mon, 01 Mar 2021 09:48:57 +0000 Message-ID: <86ft1f8ara.fsf@gmail.com> References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:ZLd6eF7cBxaNiXUCY95dVEHI4po= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Sun 28 Feb 2021, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Sat, 27 Feb 2021 21:58:25 +0000 >> >> > I suspect that the issue may be with parallel builds (note the "-j8" >> > above). Repeating the build with "-j1" appears to be building the >> > missing .eln files as expected. >> >> Now that the -j1 build has completed (without error), all of the lisp >> files have been compiled AOT as expected, and running the resulting >> emacs does not rebuild any of those .eln files. >> >> So I think there are still some other issues with dependencies and >> handling parallel builds, but this bug has been fixed. > > Hmm... what would be the reason for parallel builds not work well on > MS-Windows? file sharing issues? > > Does the async native compilation use temporary files, and if so, do > they reside in the same directory when multiple compilations are > running? I've tried a few builds from a clean tree (after "git clean -xdf") and have note been able to reproduce this parallel build problem again. Do let me know if there are any steps I should take to help diagnose it if it does reproduce again. AndyM From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 13:28:25 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 18:28:25 +0000 Received: from localhost ([127.0.0.1]:56969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHWET-0007qC-K6 for submit@debbugs.gnu.org; Wed, 03 Mar 2021 13:28:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39906) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHWES-0007pv-7I for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 13:28:24 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42205) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHWEN-0002I4-0W; Wed, 03 Mar 2021 13:28:19 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1951 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHWEL-0001x6-7m; Wed, 03 Mar 2021 13:28:17 -0500 Date: Wed, 03 Mar 2021 20:27:55 +0200 Message-Id: <83sg5cjdn8.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-Reply-To: <86ft1f8ara.fsf@gmail.com> (message from Andy Moreton on Mon, 01 Mar 2021 09:48:57 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Progress report: . I've successfully build a 32-bit Emacs --with-wide-int on MS-Windows, for now _without_ NATIVE_FULL_AOT=1. . The built Emacs crashes on startup in interactive invocations from cmd.exe, if invoked as "emacs -Q" or "src/emacs -Q". This was traced to set_invocation_vars, which calls openp, which calls expand-file-name, which on MS-Windows expects the emacs_dir variable to be defined in the environment -- but this is false at that point, because init_environment was not yet called. I fixed this by avoiding the call to openp (MS-Windows executables have an easy way of determining their full absolute file name), but in general I must say that the call to init_vars_for_load in pdumper_load worries me quite a bit: this is a very early stage in startup, before we init most of our infrastructure, and so relying on file-name functions, memory allocation, etc. is very dangerous, especially on Windows, where the infrastructure not yet initialized at that point includes the environment. . After fixing the above, Emacs starts, but as soon as some simple command is invoked, and Emacs starts native-compiling Lisp packages, the Emacs subprocesses which run the async compilation start crashing. Not all of them crash, but some do. I wasn't yet able to find where they crash or why; stay tuned. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 13:43:31 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 18:43:31 +0000 Received: from localhost ([127.0.0.1]:56979 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHWT5-0008ET-Dx for submit@debbugs.gnu.org; Wed, 03 Mar 2021 13:43:31 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42832) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHWT3-0008EG-W3 for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 13:43:30 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42399) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHWSy-0006eI-OX; Wed, 03 Mar 2021 13:43:24 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2888 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHWSx-00046s-KT; Wed, 03 Mar 2021 13:43:24 -0500 Date: Wed, 03 Mar 2021 20:43:01 +0200 Message-Id: <83r1kwjcy2.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: <83sg5cjdn8.fsf@gnu.org> (message from Eli Zaretskii on Wed, 03 Mar 2021 20:27:55 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Wed, 03 Mar 2021 20:27:55 +0200 > From: Eli Zaretskii > Cc: 46256@debbugs.gnu.org > > . After fixing the above, Emacs starts, but as soon as some simple > command is invoked, and Emacs starts native-compiling Lisp > packages, the Emacs subprocesses which run the async compilation > start crashing. Not all of them crash, but some do. I wasn't yet > able to find where they crash or why; stay tuned. Some more info about these crashes: I see this in the *Messages* buffer when a compilation crashes: Warning (comp): comp.h:70: Emacs fatal error: assertion failed: NATIVE_COMP_UNITP (a)^M I also see similar picture in emacs_backtrace.txt: emacs_abort at src/w32fns.c:10947 terminate_due_to_signal at src/emacs.c:417 die at src/alloc.c:7452 XNATIVE_COMP_UNIT at src/comp.h:70 load_comp_unit at src/comp.c:4766 syms_of_comp at src/comp.c:5077 Fload at src/lread.c:1548 (My Emacs is compiled with --enable-checking=yes.) Btw, that ^M character after the error message probably means we don't correctly decode messages from the async compilation subprocesses -- but this is a secondary problem for now. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 13:49:26 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 18:49:26 +0000 Received: from localhost ([127.0.0.1]:56983 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHWYo-0008NO-3L for submit@debbugs.gnu.org; Wed, 03 Mar 2021 13:49:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44532) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHWYm-0008ND-Tw for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 13:49:25 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42511) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHWYh-00008x-FI; Wed, 03 Mar 2021 13:49:19 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3243 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHWYd-0004aT-Qo; Wed, 03 Mar 2021 13:49:18 -0500 Date: Wed, 03 Mar 2021 20:48:55 +0200 Message-Id: <83pn0gjco8.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: <83sg5cjdn8.fsf@gnu.org> (message from Eli Zaretskii on Wed, 03 Mar 2021 20:27:55 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Also, while compiling I see this warning: comp.c: In function 'eln_load_path_final_clean_up': comp.c:4514:15: warning: trampoline generated for nested function 'return_nil' [-Wtrampolines] 4514 | Lisp_Object return_nil (Lisp_Object arg) { return Qnil; } | ^~~~~~~~~~ Why do we need this nested function on Windows, and what is the story about the trampoline? And how to avoid the warning? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 14:29:21 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 19:29:21 +0000 Received: from localhost ([127.0.0.1]:57027 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXBQ-00031G-Bt for submit@debbugs.gnu.org; Wed, 03 Mar 2021 14:29:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55286) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXBO-000312-0H for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 14:29:18 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43186) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHXBH-0003Pp-P8; Wed, 03 Mar 2021 14:29:11 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1713 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHXBG-0006Xf-Kw; Wed, 03 Mar 2021 14:29:11 -0500 Date: Wed, 03 Mar 2021 21:28:51 +0200 Message-Id: <83lfb4jato.fsf@gnu.org> From: Eli Zaretskii To: akrl@sdf.org In-Reply-To: <83pn0gjco8.fsf@gnu.org> (message from Eli Zaretskii on Wed, 03 Mar 2021 20:48:55 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83pn0gjco8.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) I have a question: how do I determine which Emacs binary corresponds to a particular directory in ~/.emacs.d/eln-cache/ ? AFAIU, when I make a change in Emacs C sources and rebuild Emacs, the netive-compiled files will be put in a new directory under eln-cache, right? Suppose I later would later like to remove stale binaries -- how do I know which eln-cache subdirectories I can remove at that time? TIA From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 14:37:56 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 19:37:56 +0000 Received: from localhost ([127.0.0.1]:57040 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXJk-0003F5-HH for submit@debbugs.gnu.org; Wed, 03 Mar 2021 14:37:56 -0500 Received: from mx.sdf.org ([205.166.94.24]:52149) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXJi-0003Ex-Db for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 14:37:55 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 123JbqTL009921 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Wed, 3 Mar 2021 19:37:53 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83pn0gjco8.fsf@gnu.org> Date: Wed, 03 Mar 2021 19:37:52 +0000 In-Reply-To: <83pn0gjco8.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 03 Mar 2021 20:48:55 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > Also, while compiling I see this warning: > > comp.c: In function 'eln_load_path_final_clean_up': > comp.c:4514:15: warning: trampoline generated for nested function 'return_nil' [-Wtrampolines] > 4514 | Lisp_Object return_nil (Lisp_Object arg) { return Qnil; } > | ^~~~~~~~~~ > > Why do we need this nested function on Windows, and what is the story > about the trampoline? And how to avoid the warning? > > Thanks. This nested function was nested only to save some ifdefs (as it's used only in Windows ifdefed code). Didn't know it could cause warnings, I've made it a regular function with cf37850e2d. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 14:47:12 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 19:47:13 +0000 Received: from localhost ([127.0.0.1]:57048 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXSi-0003T8-Mg for submit@debbugs.gnu.org; Wed, 03 Mar 2021 14:47:12 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58526) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXSh-0003Su-8y for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 14:47:11 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43490) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHXSb-0000ZC-V6; Wed, 03 Mar 2021 14:47:05 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2807 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHXSb-0007zk-7g; Wed, 03 Mar 2021 14:47:05 -0500 Date: Wed, 03 Mar 2021 21:46:44 +0200 Message-Id: <83k0qoj9zv.fsf@gnu.org> From: Eli Zaretskii To: akrl@sdf.org In-Reply-To: <83r1kwjcy2.fsf@gnu.org> (message from Eli Zaretskii on Wed, 03 Mar 2021 20:43:01 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Wed, 03 Mar 2021 20:43:01 +0200 > From: Eli Zaretskii > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > Some more info about these crashes: I see this in the *Messages* > buffer when a compilation crashes: > > Warning (comp): comp.h:70: Emacs fatal error: assertion failed: NATIVE_COMP_UNITP (a)^M > > I also see similar picture in emacs_backtrace.txt: > > emacs_abort at src/w32fns.c:10947 > terminate_due_to_signal at src/emacs.c:417 > die at src/alloc.c:7452 > XNATIVE_COMP_UNIT at src/comp.h:70 > load_comp_unit at src/comp.c:4766 > syms_of_comp at src/comp.c:5077 > Fload at src/lread.c:1548 It looks like these crashes are when compiling subr-x, because I see zero-sized subr-x-XXXXX.eln.tmp files in the eln-cache directory. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 14:50:08 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 19:50:08 +0000 Received: from localhost ([127.0.0.1]:57056 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXVY-0003Y8-Eh for submit@debbugs.gnu.org; Wed, 03 Mar 2021 14:50:08 -0500 Received: from mx.sdf.org ([205.166.94.24]:50693) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXVX-0003Xx-GQ for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 14:50:08 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 123Jo5GS020968 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Wed, 3 Mar 2021 19:50:06 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83pn0gjco8.fsf@gnu.org> <83lfb4jato.fsf@gnu.org> Date: Wed, 03 Mar 2021 19:50:05 +0000 In-Reply-To: <83lfb4jato.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 03 Mar 2021 21:28:51 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > I have a question: how do I determine which Emacs binary corresponds > to a particular directory in ~/.emacs.d/eln-cache/ ? > > AFAIU, when I make a change in Emacs C sources and rebuild Emacs, the > netive-compiled files will be put in a new directory under eln-cache, > right? Essentially only if you add a primitive function. > Suppose I later would later like to remove stale binaries -- > how do I know which eln-cache subdirectories I can remove at that > time? ATM I tipically just remove all but the least recent one. But another smarter technique might be looking at the subfolder name in the build tree you are interested in inside the 'native-lisp' directory, this is the same subfolder name that's used inside 'eln-cache'. Thinking about from Emacs one can find it simply inspecting the `comp-abi-hash' variable. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 15:05:07 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 20:05:07 +0000 Received: from localhost ([127.0.0.1]:57084 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXk3-0003vq-4t for submit@debbugs.gnu.org; Wed, 03 Mar 2021 15:05:07 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34494) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXk1-0003vC-Nq for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 15:05:06 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43783) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHXjv-0005nK-JK; Wed, 03 Mar 2021 15:04:59 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3917 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHXjt-0004gL-96; Wed, 03 Mar 2021 15:04:59 -0500 Date: Wed, 03 Mar 2021 22:04:36 +0200 Message-Id: <83im68j963.fsf@gnu.org> From: Eli Zaretskii To: akrl@sdf.org In-Reply-To: <83k0qoj9zv.fsf@gnu.org> (message from Eli Zaretskii on Wed, 03 Mar 2021 21:46:44 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Wed, 03 Mar 2021 21:46:44 +0200 > From: Eli Zaretskii > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > emacs_abort at src/w32fns.c:10947 > > terminate_due_to_signal at src/emacs.c:417 > > die at src/alloc.c:7452 > > XNATIVE_COMP_UNIT at src/comp.h:70 > > load_comp_unit at src/comp.c:4766 > > syms_of_comp at src/comp.c:5077 > > Fload at src/lread.c:1548 > > It looks like these crashes are when compiling subr-x, because I see > zero-sized subr-x-XXXXX.eln.tmp files in the eln-cache directory. Yes: (gdb) r -batch -l comp -f batch-native-compile ../lisp/emacs-lisp/subr-x.el Starting program: D:\gnu\git\emacs\native-comp\src\emacs.exe -batch -l comp -f batch-native-compile ../lisp/emacs-lisp/subr-x.el warning: Enabling Low Fragmentation Heap failed: error 31 [New Thread 14244.0x320c] [New Thread 14244.0x3540] [Thread 14244.0x3540 exited with code 1] Debugger entered--Lisp error: (native-compiler-error "../lisp/emacs-lisp/subr-x.el" "\nException 0xc0000005 at this address:\n07cdac3e\n\nB...") signal(native-compiler-error ("../lisp/emacs-lisp/subr-x.el" "\nException 0xc0000005 at this address:\n07cdac3e\n\nB...")) comp--native-compile("../lisp/emacs-lisp/subr-x.el") batch-native-compile() command-line-1(("-l" "comp" "-f" "batch-native-compile" "../lisp/emacs-lisp/subr-x.el")) command-line() normal-top-level() So the async compilation process crashes with SIGSEGV when compiling subr-x.el. Andrea, can you help me figure out the command line with which the async compilation subprocess is invoked in this case? I'd like to run it as a foreground process under a debugger, and see why it crashes. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 15:09:25 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 20:09:25 +0000 Received: from localhost ([127.0.0.1]:57088 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXoC-00041r-Po for submit@debbugs.gnu.org; Wed, 03 Mar 2021 15:09:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35638) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXo8-00041c-1v for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 15:09:23 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43878) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHXo2-00075f-QM; Wed, 03 Mar 2021 15:09:14 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4176 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHXo2-00056D-4X; Wed, 03 Mar 2021 15:09:14 -0500 Date: Wed, 03 Mar 2021 22:08:53 +0200 Message-Id: <83h7lsj8yy.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Wed, 03 Mar 2021 19:50:05 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83pn0gjco8.fsf@gnu.org> <83lfb4jato.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org > Date: Wed, 03 Mar 2021 19:50:05 +0000 > > > AFAIU, when I make a change in Emacs C sources and rebuild Emacs, the > > netive-compiled files will be put in a new directory under eln-cache, > > right? > > Essentially only if you add a primitive function. Ah, okay, that's better. > > Suppose I later would later like to remove stale binaries -- > > how do I know which eln-cache subdirectories I can remove at that > > time? > > ATM I tipically just remove all but the least recent one. But another > smarter technique might be looking at the subfolder name in the build > tree you are interested in inside the 'native-lisp' directory, this is > the same subfolder name that's used inside 'eln-cache'. OK, but the name of the subfolder doesn't include the full version number, I see 28.0.50-XXXXX, whereas the Emacs binaries are 28.0.50.1, 28.0.50.2, etc. > Thinking about from Emacs one can find it simply inspecting the > `comp-abi-hash' variable. OK, so we can ask the binary itself which subdirectory it needs, thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 15:13:32 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 20:13:32 +0000 Received: from localhost ([127.0.0.1]:57093 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXsC-00047e-Bc for submit@debbugs.gnu.org; Wed, 03 Mar 2021 15:13:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36610) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHXsA-00047R-Pe for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 15:13:31 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:44011) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHXs5-0008JL-CC; Wed, 03 Mar 2021 15:13:25 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4439 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHXs4-0005Ze-7h; Wed, 03 Mar 2021 15:13:24 -0500 Date: Wed, 03 Mar 2021 22:13:05 +0200 Message-Id: <83ft1cj8ry.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Wed, 03 Mar 2021 19:37:52 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83pn0gjco8.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: andrewjmoreton@gmail.com, 46256@debbugs.gnu.org > Date: Wed, 03 Mar 2021 19:37:52 +0000 > > > comp.c: In function 'eln_load_path_final_clean_up': > > comp.c:4514:15: warning: trampoline generated for nested function 'return_nil' [-Wtrampolines] > > 4514 | Lisp_Object return_nil (Lisp_Object arg) { return Qnil; } > > | ^~~~~~~~~~ > > > > Why do we need this nested function on Windows, and what is the story > > about the trampoline? And how to avoid the warning? > > > > Thanks. > > This nested function was nested only to save some ifdefs (as it's used > only in Windows ifdefed code). Didn't know it could cause warnings, > I've made it a regular function with cf37850e2d. Thanks, the warning is gone now. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 03 15:21:44 2021 Received: (at 46256) by debbugs.gnu.org; 3 Mar 2021 20:21:44 +0000 Received: from localhost ([127.0.0.1]:57111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHY07-0004LF-UO for submit@debbugs.gnu.org; Wed, 03 Mar 2021 15:21:44 -0500 Received: from mx.sdf.org ([205.166.94.24]:65146) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHY05-0004Kq-H2 for 46256@debbugs.gnu.org; Wed, 03 Mar 2021 15:21:42 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 123KLcPj022319 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Wed, 3 Mar 2021 20:21:39 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> Date: Wed, 03 Mar 2021 20:21:38 +0000 In-Reply-To: <83im68j963.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 03 Mar 2021 22:04:36 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> Date: Wed, 03 Mar 2021 21:46:44 +0200 >> From: Eli Zaretskii >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> >> > emacs_abort at src/w32fns.c:10947 >> > terminate_due_to_signal at src/emacs.c:417 >> > die at src/alloc.c:7452 >> > XNATIVE_COMP_UNIT at src/comp.h:70 >> > load_comp_unit at src/comp.c:4766 >> > syms_of_comp at src/comp.c:5077 >> > Fload at src/lread.c:1548 >> >> It looks like these crashes are when compiling subr-x, because I see >> zero-sized subr-x-XXXXX.eln.tmp files in the eln-cache directory. > > Yes: > > (gdb) r -batch -l comp -f batch-native-compile ../lisp/emacs-lisp/subr-x.el > Starting program: D:\gnu\git\emacs\native-comp\src\emacs.exe -batch -l comp -f batch-native-compile ../lisp/emacs-lisp/subr-x.el > warning: Enabling Low Fragmentation Heap failed: error 31 > [New Thread 14244.0x320c] > [New Thread 14244.0x3540] > [Thread 14244.0x3540 exited with code 1] > Debugger entered--Lisp error: (native-compiler-error "../lisp/emacs-lisp/subr-x.el" "\nException 0xc0000005 at this address:\n07cdac3e\n\nB...") > signal(native-compiler-error ("../lisp/emacs-lisp/subr-x.el" "\nException 0xc0000005 at this address:\n07cdac3e\n\nB...")) > comp--native-compile("../lisp/emacs-lisp/subr-x.el") > batch-native-compile() > command-line-1(("-l" "comp" "-f" "batch-native-compile" "../lisp/emacs-lisp/subr-x.el")) > command-line() > normal-top-level() > > So the async compilation process crashes with SIGSEGV when compiling > subr-x.el. > > Andrea, can you help me figure out the command line with which the > async compilation subprocess is invoked in this case? I'd like to run > it as a foreground process under a debugger, and see why it crashes. Yes, each async compilation runs executing a temporary (not to exceed the max command line length on Windows) Elisp file. This file is created by `comp-run-async-workers'. One can put a print there to have the name of this file (and execute it regularly with emacs -batch -l ...) to have the reproducer or look into the temporary directory for the most recent emacs-async-comp-...something... file. Andrea PS ATM I see a crash too in my 32bit wide-int setup here, this is while executing a top_level_run function loading a .eln file. I need to compile a more recent gdb to look into this further but it looks something basic is going wrong there. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 03:30:50 2021 Received: (at submit) by debbugs.gnu.org; 4 Mar 2021 08:30:51 +0000 Received: from localhost ([127.0.0.1]:57646 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHjNi-00038P-ME for submit@debbugs.gnu.org; Thu, 04 Mar 2021 03:30:50 -0500 Received: from lists.gnu.org ([209.51.188.17]:51884) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHjNg-00038H-Cx for submit@debbugs.gnu.org; Thu, 04 Mar 2021 03:30:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55182) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHjNg-0003CQ-4M for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 03:30:48 -0500 Received: from mx.sdf.org ([205.166.94.24]:62174) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHjNc-00030F-IZ; Thu, 04 Mar 2021 03:30:47 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1248UbY1004212 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Thu, 4 Mar 2021 08:30:38 GMT From: Andrea Corallo To: Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> Date: Thu, 04 Mar 2021 08:30:37 +0000 In-Reply-To: (Andrea Corallo via's message of "Wed, 03 Mar 2021 20:21:38 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=205.166.94.24; envelope-from=akrl@sdf.org; helo=mx.sdf.org X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" writes: [...] > PS ATM I see a crash too in my 32bit wide-int setup here, this is while > executing a top_level_run function loading a .eln file. I need to > compile a more recent gdb to look into this further but it looks > something basic is going wrong there. Ok, I think this issue was that `comp-abi-hash' was not accounting for '--with-wide-int' and on my system a wide-int binary was loading a non-wide-int .eln. With 6444f69de2 I added `system-configuration-options' as an input to the hash. This is a conservative choice, we may want to look only at '--with-wide-int' but I'm wondering if that's really the only sensitive input therefore having `system-configuration-options' in the equation looked safer to me at least for now. Andrea From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 06:54:37 2021 Received: (at submit) by debbugs.gnu.org; 4 Mar 2021 11:54:37 +0000 Received: from localhost ([127.0.0.1]:57971 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHmYv-0004DX-BD for submit@debbugs.gnu.org; Thu, 04 Mar 2021 06:54:37 -0500 Received: from lists.gnu.org ([209.51.188.17]:45618) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHmYt-0004DP-MA for submit@debbugs.gnu.org; Thu, 04 Mar 2021 06:54:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43476) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHmYt-00066c-EB for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 06:54:35 -0500 Received: from mx.sdf.org ([205.166.94.24]:61877) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHmYp-0004UV-NG; Thu, 04 Mar 2021 06:54:33 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 124BsNOM025720 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Thu, 4 Mar 2021 11:54:25 GMT From: Andrea Corallo To: Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> Date: Thu, 04 Mar 2021 11:54:23 +0000 In-Reply-To: (Andrea Corallo via's message of "Thu, 04 Mar 2021 08:30:37 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=205.166.94.24; envelope-from=akrl@sdf.org; helo=mx.sdf.org X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, eliz@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" writes: > Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of > text editors" writes: > > [...] > >> PS ATM I see a crash too in my 32bit wide-int setup here, this is while >> executing a top_level_run function loading a .eln file. I need to >> compile a more recent gdb to look into this further but it looks >> something basic is going wrong there. > > Ok, I think this issue was that `comp-abi-hash' was not accounting for > '--with-wide-int' and on my system a wide-int binary was loading a > non-wide-int .eln. With 6444f69de2 I added > `system-configuration-options' as an input to the hash. > > This is a conservative choice, we may want to look only at > '--with-wide-int' but I'm wondering if that's really the only sensitive > input therefore having `system-configuration-options' in the equation > looked safer to me at least for now. Just to report, this morning I've used a bit Emacs 32bit wide-int and as of 6444f69de2 seems to work fine here (some or org and C file editing), also the compiler testsuite is passing clean. Andrea From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 09:14:06 2021 Received: (at 46256) by debbugs.gnu.org; 4 Mar 2021 14:14:06 +0000 Received: from localhost ([127.0.0.1]:58202 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHojt-0005ki-Nd for submit@debbugs.gnu.org; Thu, 04 Mar 2021 09:14:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60296) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHojr-0005jv-Pe for 46256@debbugs.gnu.org; Thu, 04 Mar 2021 09:14:04 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60277) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHojl-0008Vv-Fz; Thu, 04 Mar 2021 09:13:58 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2774 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHojk-0000Md-1n; Thu, 04 Mar 2021 09:13:56 -0500 Date: Thu, 04 Mar 2021 16:13:39 +0200 Message-Id: <83tuprhur0.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Thu, 04 Mar 2021 11:54:23 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, eliz@gnu.org, andrewjmoreton@gmail.com > Date: Thu, 04 Mar 2021 11:54:23 +0000 > > Just to report, this morning I've used a bit Emacs 32bit wide-int and as > of 6444f69de2 seems to work fine here (some or org and C file editing), > also the compiler testsuite is passing clean. Did you successfully native-compiled subr-x.el? If you did, the problem is probably Windows specific. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 09:24:51 2021 Received: (at 46256) by debbugs.gnu.org; 4 Mar 2021 14:24:51 +0000 Received: from localhost ([127.0.0.1]:58225 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHouJ-00061v-2U for submit@debbugs.gnu.org; Thu, 04 Mar 2021 09:24:51 -0500 Received: from mx.sdf.org ([205.166.94.24]:63119) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHouH-00061m-NQ for 46256@debbugs.gnu.org; Thu, 04 Mar 2021 09:24:50 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 124EOlIh014103 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Thu, 4 Mar 2021 14:24:47 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> Date: Thu, 04 Mar 2021 14:24:47 +0000 In-Reply-To: <83tuprhur0.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 04 Mar 2021 16:13:39 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, eliz@gnu.org, andrewjmoreton@gmail.com >> Date: Thu, 04 Mar 2021 11:54:23 +0000 >> >> Just to report, this morning I've used a bit Emacs 32bit wide-int and as >> of 6444f69de2 seems to work fine here (some or org and C file editing), >> also the compiler testsuite is passing clean. > > Did you successfully native-compiled subr-x.el? If you did, the > problem is probably Windows specific. Yes subr-x.el is compiled and the eln it's loaded as well. I'll keep on using it for what I can and see if something pops-up, that's still possible. Andrea From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 09:49:58 2021 Received: (at submit) by debbugs.gnu.org; 4 Mar 2021 14:49:58 +0000 Received: from localhost ([127.0.0.1]:58271 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHpIc-0006eG-7b for submit@debbugs.gnu.org; Thu, 04 Mar 2021 09:49:58 -0500 Received: from lists.gnu.org ([209.51.188.17]:37560) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHpIb-0006e8-9e for submit@debbugs.gnu.org; Thu, 04 Mar 2021 09:49:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60764) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHpIa-0003ko-7T for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 09:49:57 -0500 Received: from mx.sdf.org ([205.166.94.24]:61288) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHpIW-000063-2o; Thu, 04 Mar 2021 09:49:56 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 124EnlGN000968 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Thu, 4 Mar 2021 14:49:47 GMT From: Andrea Corallo To: Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> Date: Thu, 04 Mar 2021 14:49:47 +0000 In-Reply-To: (Andrea Corallo via's message of "Thu, 04 Mar 2021 14:24:47 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=205.166.94.24; envelope-from=akrl@sdf.org; helo=mx.sdf.org X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" writes: > I'll keep on using it for what I can and see if something pops-up, > that's still possible. Exactly... I've a reproducer that is most luckily due to the same issue you are observing: emacs -batch -l comp -f batch-native-compile .../emacs/lisp/progmodes/cc-engine.el GC kicks-in and we end-up marking #, we try then to mark its compilation unit but we segfault (backtrace below). Will look more into this as soon as I can. Andrea (gdb) bt #0 0x081ccce3 in symbol_marked_p (s=0x110a02e0) at alloc.c:3982 #1 0x081d1053 in mark_object (arg=XIL(0x8a15f3008a6e8c0)) at alloc.c:6775 #2 0x081d0fe3 in mark_object (arg=XIL(0xa000000008986f10)) at alloc.c:6754 #3 0x081d107f in mark_object (arg=XIL(0xc000000008a78510)) at alloc.c:6781 #4 0x081d1095 in mark_object (arg=XIL(0x351b38)) at alloc.c:6782 #5 0x081d122c in mark_object (arg=XIL(0xc00000000899b4a0)) at alloc.c:6828 #6 0x081d122c in mark_object (arg=XIL(0xc00000000899b470)) at alloc.c:6828 #7 0x081d122c in mark_object (arg=XIL(0xc00000000899b160)) at alloc.c:6828 #8 0x081d10d9 in mark_object (arg=XIL(0x304c78)) at alloc.c:6785 #9 0x081d122c in mark_object (arg=XIL(0xc000000008935960)) at alloc.c:6828 #10 0x081d122c in mark_object (arg=XIL(0xc000000008935420)) at alloc.c:6828 #11 0x081d10d9 in mark_object (arg=XIL(0x273fa0)) at alloc.c:6785 #12 0x081d0d97 in mark_objects (obj=0x89366f8, n=333) at alloc.c:6575 [...] #979 0x081d1024 in mark_object (arg=XIL(0xa0000000086cc2c0)) at alloc.c:6766 #980 0x081d0fe3 in mark_object (arg=XIL(0xa00000000884a410)) at alloc.c:6754 #981 0x081d107f in mark_object (arg=XIL(0xacd34d78)) at alloc.c:6781 #982 0x081d122c in mark_object (arg=XIL(0xc0000000086d6260)) at alloc.c:6828 #983 0x081d1095 in mark_object (arg=XIL(0x5f78)) at alloc.c:6782 #984 0x081d122c in mark_object (arg=XIL(0xc0000000b5918910)) at alloc.c:6828 #985 0x081d0fcd in mark_object (arg=XIL(0xa0000000b59188d4)) at alloc.c:6753 #986 0x081d107f in mark_object (arg=XIL(0x51b8)) at alloc.c:6781 #987 0x081cf4cf in mark_object_root_visitor ( root_ptr=0x8629f6c , type=GC_ROOT_BUFFER_LOCAL_DEFAULT, data=0x0) at alloc.c:5907 #988 0x081cf3dd in visit_vectorlike_root (visitor=..., ptr=0x8629f20 , type=GC_ROOT_BUFFER_LOCAL_DEFAULT) at alloc.c:5858 #989 0x081cf40a in visit_buffer_root (visitor=..., buffer=0x8629f20 , type=GC_ROOT_BUFFER_LOCAL_DEFAULT) at alloc.c:5873 #990 0x081cf428 in visit_static_gc_roots (visitor=...) at alloc.c:5885 #991 0x081cfb2d in garbage_collect () at alloc.c:6105 #992 0x081cf8c0 in maybe_garbage_collect () at alloc.c:6018 #993 0x08200031 in maybe_gc () at lisp.h:5124 #994 0x0820825d in Ffuncall (nargs=2, args=0xbfffbfe0) at eval.c:2993 #995 0x082077b7 in call1 (fn=XIL(0xa000000008a11d18), arg1=XIL(0xc000000008b076f0)) at eval.c:2869 #996 0x08218858 in mapcar1 (leni=352, vals=0xbfffc0d0, fn=XIL(0xa000000008a11d18), seq=XIL(0xc000000008b07cf0)) at fns.c:2742 #997 0x08218e34 in Fmapcar (function=XIL(0xa000000008a11d18), sequence=XIL(0xc000000008b07cf0)) at fns.c:2798 #998 0xb425f1c5 in F627974652d636f6d70696c652d726563757273652d746f706c6576656c_byte_compile_recurse_toplevel_0 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/bytecomp-12882072-bfe84587.eln #999 0x082087c6 in funcall_subr (subr=0x87ee840, numargs=2, args=0xbfffce40) at eval.c:3086 #1000 0x08208375 in Ffuncall (nargs=3, args=0xbfffce38) at eval.c:3009 #1001 0xb4270738 in F627974652d636f6d70696c652d746f706c6576656c2d66696c652d666f726d_byte_compile_toplevel_file_form_0 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/bytecomp-12882072-bfe84587.eln #1002 0x0820879f in funcall_subr (subr=0x884a010, numargs=1, args=0xbfffd008) at eval.c:3084 #1003 0x08208375 in Ffuncall (nargs=2, args=0xbfffd000) at eval.c:3009 #1004 0xb426dfc8 in F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_43 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/bytecomp-12882072-bfe84587.eln #1005 0x0820879f in funcall_subr (subr=0x86c8840, numargs=1, args=0xbfffd1e8) at eval.c:3084 #1006 0x08208375 in Ffuncall (nargs=2, args=0xbfffd1e0) at eval.c:3009 #1007 0xb426eddc in F627974652d636f6d70696c652d66726f6d2d627566666572_byte_compile_from_buffer_0 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/bytecomp-12882072-bfe84587.eln #1008 0x0820879f in funcall_subr (subr=0x8849e50, numargs=1, args=0xbfffd438) at eval.c:3084 #1009 0x08208375 in Ffuncall (nargs=2, args=0xbfffd430) at eval.c:3009 #1010 0xb426b91a in F627974652d636f6d70696c652d66696c65_byte_compile_file_0 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/bytecomp-12882072-bfe84587.eln #1011 0x082087c6 in funcall_subr (subr=0x8849dd0, numargs=1, args=0xbfffd608) at eval.c:3086 #1012 0x08208375 in Ffuncall (nargs=2, args=0xbfffd600) at eval.c:3009 #1013 0x0825e5b4 in exec_byte_code (bytestr=XIL(0x8000000008815760), vector=XIL(0xa0000000086b1828), maxdepth=make_fixnum(16), args_template=make_fixnum(257), nargs=1, args=0xbfffded0) at bytecode.c:632 #1014 0x08208c03 in fetch_and_exec_byte_code (fun=XIL(0xa0000000086b1968), syms_left=make_fixnum(257), nargs=1, args=0xbfffdec8) at eval.c:3133 #1015 0x08208fe9 in funcall_lambda (fun=XIL(0xa0000000086b1968), nargs=1, arg_vector=0xbfffdec8) at eval.c:3214 #1016 0x082083d7 in Ffuncall (nargs=2, args=0xbfffdec0) at eval.c:3013 #1017 0x08206ca2 in Fapply (nargs=3, args=0xbfffdec0) at eval.c:2592 #1018 0x082086fa in funcall_subr (subr=0x85db400 , numargs=3, args=0xbfffdec0) at eval.c:3064 #1019 0x08208375 in Ffuncall (nargs=4, args=0xbfffdeb8) at eval.c:3009 #1020 0x0825e5b4 in exec_byte_code (bytestr=XIL(0x80000000b55aa5f8), vector=XIL(0xa0000000089994a0), maxdepth=make_fixnum(14), args_template=make_fixnum(385), nargs=1, args=0xbfffe4e0) at bytecode.c:632 #1021 0x08208c03 in fetch_and_exec_byte_code (fun=XIL(0xa0000000089984c8), syms_left=make_fixnum(385), nargs=1, args=0xbfffe4d8) at eval.c:3133 #1022 0x08208fe9 in funcall_lambda (fun=XIL(0xa0000000089984c8), nargs=1, arg_vector=0xbfffe4d8) at eval.c:3214 #1023 0x082083d7 in Ffuncall (nargs=2, args=0xbfffe4d0) at eval.c:3013 #1024 0xb43033fd in F636f6d702d7370696c6c2d6c6170_comp_spill_lap_0 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/comp-7672a6ed-2df580e9.eln #1025 0x0820879f in funcall_subr (subr=0x89984f8, numargs=1, args=0xbfffe6c8) at eval.c:3084 #1026 0x08208375 in Ffuncall (nargs=2, args=0xbfffe6c0) at eval.c:3009 #1027 0xb434f53d in F636f6d702d2d6e61746976652d636f6d70696c65_comp__native_compile_0 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/comp-7672a6ed-2df580e9.eln #1028 0x08208803 in funcall_subr (subr=0x89a70a8, numargs=1, args=0xbfffe8b0) at eval.c:3089 #1029 0x08208375 in Ffuncall (nargs=2, args=0xbfffe8a8) at eval.c:3009 #1030 0xb4350921 in F62617463682d6e61746976652d636f6d70696c65_batch_native_compile_0 () from /home/andcor03/emacs2/native-lisp/28.0.50-92e930fb/comp-7672a6ed-2df580e9.eln #1031 0x08208785 in funcall_subr (subr=0x89a71a8, numargs=0, args=0xbfffeb18) at eval.c:3082 #1032 0x08208375 in Ffuncall (nargs=1, args=0xbfffeb10) at eval.c:3009 #1033 0xb4a2b841 in F636f6d6d616e642d6c696e652d31_command_line_1_0 () from /home/andcor03/emacs2/src/../native-lisp/28.0.50-92e930fb/startup-bbc6ea72-9be7c541.eln #1034 0x0820879f in funcall_subr (subr=0xb55deb90, numargs=1, args=0xbfffeec8) at eval.c:3084 #1035 0x08208375 in Ffuncall (nargs=2, args=0xbfffeec0) at eval.c:3009 #1036 0xb4a2168d in F636f6d6d616e642d6c696e65_command_line_0 () from /home/andcor03/emacs2/src/../native-lisp/28.0.50-92e930fb/startup-bbc6ea72-9be7c541.eln #1037 0x08208785 in funcall_subr (subr=0xb54eccb0, numargs=0, args=0xbffff0b8) at eval.c:3082 #1038 0x08208375 in Ffuncall (nargs=1, args=0xbffff0b0) at eval.c:3009 #1039 0xb4a1c8ce in F6e6f726d616c2d746f702d6c6576656c_normal_top_level_0 () from /home/andcor03/emacs2/src/../native-lisp/28.0.50-92e930fb/startup-bbc6ea72-9be7c541.eln #1040 0x08206353 in eval_sub (form=XIL(0xc0000000b565b170)) at eval.c:2481 #1041 0x082059ee in Feval (form=XIL(0xc0000000b565b170), lexical=XIL(0)) at eval.c:2313 #1042 0x081391f5 in top_level_2 () at keyboard.c:1103 #1043 0x08203347 in internal_condition_case (bfun=0x81391cc , handlers=XIL(0x78), hfun=0x8138ab4 ) at eval.c:1448 #1044 0x08139268 in top_level_1 (ignore=XIL(0)) at keyboard.c:1111 #1045 0x082029e7 in internal_catch (tag=XIL(0xa410), func=0x81391fd , arg=XIL(0)) at eval.c:1198 #1046 0x081390d6 in command_loop () at keyboard.c:1072 #1047 0x08138666 in recursive_edit_1 () at keyboard.c:720 #1048 0x08138841 in Frecursive_edit () at keyboard.c:789 #1049 0x08134e4a in main (argc=7, argv=0xbffff5f4) at emacs.c:2095 Lisp Backtrace: "Automatic GC" (0x0) 0x8a11d18 PVEC_COMPILED "byte-compile-recurse-toplevel" (0xbfffce40) "byte-compile-toplevel-file-form" (0xbfffd008) 0x86c8840 PVEC_SUBR "byte-compile-from-buffer" (0xbfffd438) "byte-compile-file" (0xbfffd608) 0x86b1968 PVEC_COMPILED "apply" (0xbfffdec0) "comp-spill-lap-function" (0xbfffe4d8) "comp-spill-lap" (0xbfffe6c8) "comp--native-compile" (0xbfffe8b0) "batch-native-compile" (0xbfffeb18) "command-line-1" (0xbfffeec8) "command-line" (0xbffff0b8) "normal-top-level" (0xbffff168) (gdb) From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 12:24:55 2021 Received: (at 46256) by debbugs.gnu.org; 4 Mar 2021 17:24:55 +0000 Received: from localhost ([127.0.0.1]:60078 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHriY-0002Rg-S0 for submit@debbugs.gnu.org; Thu, 04 Mar 2021 12:24:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59680) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHriX-0002RU-ET for 46256@debbugs.gnu.org; Thu, 04 Mar 2021 12:24:53 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:37348) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHriS-0005FP-64; Thu, 04 Mar 2021 12:24:48 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4053 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHriR-0004rB-29; Thu, 04 Mar 2021 12:24:47 -0500 Date: Thu, 04 Mar 2021 19:24:29 +0200 Message-Id: <831rcu25o2.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Thu, 04 Mar 2021 14:49:47 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) When I build on MS-Windows, I see this: make -C src VCSWITNESS='$(srcdir)/../.git/logs/HEAD' BIN_DESTDIR='/d/usr/bin/' \ ELN_DESTDIR='"/d/usr/lib/emacs/28.0.50/"' all ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Why is ELN_DESTDIR's value quoted twice? is that intentional? From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 13:56:33 2021 Received: (at 46256) by debbugs.gnu.org; 4 Mar 2021 18:56:33 +0000 Received: from localhost ([127.0.0.1]:60236 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHt9F-0004j7-0y for submit@debbugs.gnu.org; Thu, 04 Mar 2021 13:56:33 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50416) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHt9D-0004iu-Lo for 46256@debbugs.gnu.org; Thu, 04 Mar 2021 13:56:31 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39073) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHt97-0004M3-Dt; Thu, 04 Mar 2021 13:56:25 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1924 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHt96-0007PS-2G; Thu, 04 Mar 2021 13:56:24 -0500 Date: Thu, 04 Mar 2021 20:56:05 +0200 Message-Id: <83v9a6zr22.fsf@gnu.org> From: Eli Zaretskii To: akrl@sdf.org In-Reply-To: <831rcu25o2.fsf@gnu.org> (message from Eli Zaretskii on Thu, 04 Mar 2021 19:24:29 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) I have a question about the build process of the native-comp branch: Say I bootstrapped a fresh checkout without NATIVE_FULL_AOT=1, and I now have a subdirectory under the native-lisp/ directory populated with the *.eln files of the Lisp files we preload. Now I make some change in Emacs that modifies the ABI hash, and rebuild. The previous subdirectory of native-lisp/ is no longer valid; if I modify some of the preloaded Lisp files, a new .eln file is produced in a new subdirectory of native-lisp/. But now that new subdirectory has only the *.eln files for those Lisp files I modified _after_ the ABI-changing change. Which means most of the preloaded files do not have *.eln files in the native-lisp/ subdirectory that corresponds to the latest ABI. Does this mean Emacs now falls back to using *.elc files when it produces the emacs.pdmp file? From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 15:11:46 2021 Received: (at 46256) by debbugs.gnu.org; 4 Mar 2021 20:11:46 +0000 Received: from localhost ([127.0.0.1]:60317 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHuJm-0000Ch-W8 for submit@debbugs.gnu.org; Thu, 04 Mar 2021 15:11:46 -0500 Received: from mx.sdf.org ([205.166.94.24]:63432) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHuJk-0000CY-T4 for 46256@debbugs.gnu.org; Thu, 04 Mar 2021 15:11:30 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 124KBRgs002396 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Thu, 4 Mar 2021 20:11:28 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> Date: Thu, 04 Mar 2021 20:11:27 +0000 In-Reply-To: <83v9a6zr22.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 04 Mar 2021 20:56:05 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > I have a question about the build process of the native-comp branch: > > Say I bootstrapped a fresh checkout without NATIVE_FULL_AOT=1, and I > now have a subdirectory under the native-lisp/ directory populated > with the *.eln files of the Lisp files we preload. > > Now I make some change in Emacs that modifies the ABI hash, and > rebuild. The previous subdirectory of native-lisp/ is no longer > valid; if I modify some of the preloaded Lisp files, a new .eln file > is produced in a new subdirectory of native-lisp/. But now that new > subdirectory has only the *.eln files for those Lisp files I modified > _after_ the ABI-changing change. Which means most of the preloaded > files do not have *.eln files in the native-lisp/ subdirectory that > corresponds to the latest ABI. Does this mean Emacs now falls back to > using *.elc files when it produces the emacs.pdmp file? Yes, I think so. ATM if the ABI hash is modified something like 'make bootstrap' is needed to re-build all .eln. Andrea From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 15:48:00 2021 Received: (at 46256) by debbugs.gnu.org; 4 Mar 2021 20:48:00 +0000 Received: from localhost ([127.0.0.1]:60428 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHut6-0007T0-2k for submit@debbugs.gnu.org; Thu, 04 Mar 2021 15:48:00 -0500 Received: from mx.sdf.org ([205.166.94.24]:61413) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHut1-0007Sp-Oe for 46256@debbugs.gnu.org; Thu, 04 Mar 2021 15:47:58 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 124KlsCh023647 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Thu, 4 Mar 2021 20:47:54 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> Date: Thu, 04 Mar 2021 20:47:54 +0000 In-Reply-To: <831rcu25o2.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 04 Mar 2021 19:24:29 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > When I build on MS-Windows, I see this: > > make -C src VCSWITNESS='$(srcdir)/../.git/logs/HEAD' BIN_DESTDIR='/d/usr/bin/' \ > > ELN_DESTDIR='"/d/usr/lib/emacs/28.0.50/"' all > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > Why is ELN_DESTDIR's value quoted twice? is that intentional? I've no memory of that and to my test it works also removing it, so I guess was really unintentional. b9ccbac768 removes this double quote. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 16:30:52 2021 Received: (at submit) by debbugs.gnu.org; 4 Mar 2021 21:30:52 +0000 Received: from localhost ([127.0.0.1]:60507 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHvYZ-00007Q-N5 for submit@debbugs.gnu.org; Thu, 04 Mar 2021 16:30:51 -0500 Received: from lists.gnu.org ([209.51.188.17]:50698) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHvYV-00007D-Ra for submit@debbugs.gnu.org; Thu, 04 Mar 2021 16:30:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:45448) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHvYV-0005Fo-LG for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 16:30:47 -0500 Received: from ciao.gmane.io ([116.202.254.214]:57880) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHvYQ-0004BX-MC for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 16:30:43 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lHvYM-0003qL-AT for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 22:30:38 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Thu, 04 Mar 2021 21:30:33 +0000 Message-ID: <86v9a6ip3a.fsf@gmail.com> References: <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:FXkRdpG31HtPJafgwYJri2hltO0= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Thu 04 Mar 2021, Eli Zaretskii wrote: > I have a question about the build process of the native-comp branch: > > Say I bootstrapped a fresh checkout without NATIVE_FULL_AOT=1, and I > now have a subdirectory under the native-lisp/ directory populated > with the *.eln files of the Lisp files we preload. > > Now I make some change in Emacs that modifies the ABI hash, and > rebuild. The previous subdirectory of native-lisp/ is no longer > valid; if I modify some of the preloaded Lisp files, a new .eln file > is produced in a new subdirectory of native-lisp/. But now that new > subdirectory has only the *.eln files for those Lisp files I modified > _after_ the ABI-changing change. Which means most of the preloaded > files do not have *.eln files in the native-lisp/ subdirectory that > corresponds to the latest ABI. Does this mean Emacs now falls back to > using *.elc files when it produces the emacs.pdmp file? Also, if you build out-of-tree for two different targets, the .elc files are built for the first one, but the second target tree does not have a native-lisp directory, and no eln files are built. Both of these problems show that the build does not have the correct dependencies yet. AndyM From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 04 16:33:46 2021 Received: (at 46256) by debbugs.gnu.org; 4 Mar 2021 21:33:46 +0000 Received: from localhost ([127.0.0.1]:60511 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHvbO-0000Bk-5W for submit@debbugs.gnu.org; Thu, 04 Mar 2021 16:33:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56368) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHvbN-0000BY-2p for 46256@debbugs.gnu.org; Thu, 04 Mar 2021 16:33:45 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42852) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHvbH-0005S8-19; Thu, 04 Mar 2021 16:33:39 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3623 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lHvbF-0004TM-Oy; Thu, 04 Mar 2021 16:33:38 -0500 Date: Thu, 04 Mar 2021 23:33:20 +0200 Message-Id: <83o8fyzjrz.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Thu, 04 Mar 2021 20:11:27 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org > Date: Thu, 04 Mar 2021 20:11:27 +0000 > > > Now I make some change in Emacs that modifies the ABI hash, and > > rebuild. The previous subdirectory of native-lisp/ is no longer > > valid; if I modify some of the preloaded Lisp files, a new .eln file > > is produced in a new subdirectory of native-lisp/. But now that new > > subdirectory has only the *.eln files for those Lisp files I modified > > _after_ the ABI-changing change. Which means most of the preloaded > > files do not have *.eln files in the native-lisp/ subdirectory that > > corresponds to the latest ABI. Does this mean Emacs now falls back to > > using *.elc files when it produces the emacs.pdmp file? > > Yes, I think so. ATM if the ABI hash is modified something like 'make > bootstrap' is needed to re-build all .eln. Ouch! We should fix that, because making ABI-breaking changes in the tree is a frequent case during development, and bootstrap removes all the previous binaries, which is why I never bootstrap. So currently the only way to fill up a newly created subdirectory of native-lisp/ is to manually delete the *.elc files of all the files in lisp.mk's $shortlisp list, is that sufficient? From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 04:32:41 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 09:32:41 +0000 Received: from localhost ([127.0.0.1]:32864 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI6p7-0000ze-62 for submit@debbugs.gnu.org; Fri, 05 Mar 2021 04:32:41 -0500 Received: from mx.sdf.org ([205.166.94.24]:60558) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI6p5-0000zS-Uh for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 04:32:40 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1259WZLr026106 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 09:32:36 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> Date: Fri, 05 Mar 2021 09:32:35 +0000 In-Reply-To: <83o8fyzjrz.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 04 Mar 2021 23:33:20 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org >> Date: Thu, 04 Mar 2021 20:11:27 +0000 >> >> > Now I make some change in Emacs that modifies the ABI hash, and >> > rebuild. The previous subdirectory of native-lisp/ is no longer >> > valid; if I modify some of the preloaded Lisp files, a new .eln file >> > is produced in a new subdirectory of native-lisp/. But now that new >> > subdirectory has only the *.eln files for those Lisp files I modified >> > _after_ the ABI-changing change. Which means most of the preloaded >> > files do not have *.eln files in the native-lisp/ subdirectory that >> > corresponds to the latest ABI. Does this mean Emacs now falls back to >> > using *.elc files when it produces the emacs.pdmp file? >> >> Yes, I think so. ATM if the ABI hash is modified something like 'make >> bootstrap' is needed to re-build all .eln. > > Ouch! We should fix that, because making ABI-breaking changes in the > tree is a frequent case during development, and bootstrap removes all > the previous binaries, which is why I never bootstrap. > > So currently the only way to fill up a newly created subdirectory of > native-lisp/ is to manually delete the *.elc files of all the files in > lisp.mk's $shortlisp list, is that sufficient? Yes I think so. The trouble of using make for building such a system is that make is not aware of the .eln filename, so it should be necessary to ask the Emacs binary about that to create dynamically the precise (multiple target) rule. Not very practical IMO... In the past I've experimented with making the elc .FORCE targets and have the Emacs decide what to do, but the downside there is that for each file that might need compilation Emacs has to start and often decide that nothing has to be done because the .eln is already there... As a consequence a make invocation that was supposed to do nothing became considerably slower. Another option would be to invoke Emacs only once passing to it the list of the .el files to be compiled and the parallelism requested and have Emacs do the job. I think this might be easier and we have in the codebase already the all that's needed for that. The downside is that we'd drift away from how the vanilla build is working. Regards Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 05:10:32 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 10:10:32 +0000 Received: from localhost ([127.0.0.1]:32928 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI7Pk-0001xl-Gy for submit@debbugs.gnu.org; Fri, 05 Mar 2021 05:10:32 -0500 Received: from mail-ot1-f48.google.com ([209.85.210.48]:46999) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI7Ph-0001xW-JQ for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 05:10:30 -0500 Received: by mail-ot1-f48.google.com with SMTP id 97so1234151otf.13 for <46256@debbugs.gnu.org>; Fri, 05 Mar 2021 02:10:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=sbSOnJ7CS19GoQxTFVCkkfQ/EQotMX6YbyplmaGLZ1g=; b=CI9HLCDzvUzvAMlgKpTw1+VZx0r8y0y4DNPfAIKYuauKqlpfE5LIlySvf/OAE20MvD U287c0QzA9bY6zpZExDy0jXGN8E395KUVZbka2P7KoArI3Qt8PWHCAcHnSzT79JCIjg8 996hIl3Dp8ejxBe1EyOutKwBSlRr81uzaESpNErB3dnhb4Q2rLUd/vVch1wRB7CXgqUb ROT5Uyn9X0Hlds7PUzR3j1gydeH8dWowGvcmTt4hB9wzsXnxDIUhH3QJL2JE68HxLId3 Rwi20/pZ84iPBGBQP4GTWMk2lksNRRbEtLpQYsMcG53LqKLWWhVhoCj9mMAPedSagYPd HwWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sbSOnJ7CS19GoQxTFVCkkfQ/EQotMX6YbyplmaGLZ1g=; b=Nv9fysCUZZF6TJMOKtInBSlAQe0B271d3cna3IBTtgDpb1towlt+Ssi0rpSnaOdnh7 KD5jpoB/86+kcRb3V2MfSylX0w1UBZsvE/44LrF6D3coP9O6vC4QHSN/C5d8F/4fxL2s TIPSZ2EB+Qc0feee6Jkcmg9dPaJB/FAwnxkO4h6p2JPBb53RkA4Vy+PoOCkvGL1ja0Rq xZZX3pudn47Z/lLvSuhV+yQPHuvYl6gcQdIKQp5znlQgefuYc9pK1ainOrZt/7zUF9hH 4RrmuQwucqLjs/t7mPVgx4rttKQmzfFjeNAuJ4lMjeib/hBuU95SD6fee2hiMPOvsFfr EUhA== X-Gm-Message-State: AOAM5323fJZen7OxqSjCSXkPwOOmMUvuRVRQJJVyhf/RD85VVv1g9X07 5plMdwl7jIDeiZ2V1fiZYYbtViBhZhA7TST2y08= X-Google-Smtp-Source: ABdhPJxgozDDM0U1uJMRW2bYaEXRIdRcBElhLeEoZq5dKp8xpef1M2WKwPClaeI2TYbMO6ZKggxgV48rCXBCmvpfyl0= X-Received: by 2002:a05:6830:1011:: with SMTP id a17mr5126069otp.154.1614939023782; Fri, 05 Mar 2021 02:10:23 -0800 (PST) MIME-Version: 1.0 References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Fri, 5 Mar 2021 10:09:47 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Fri, Mar 5, 2021 at 9:33 AM Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors wrote: > Eli Zaretskii writes: > > So currently the only way to fill up a newly created subdirectory of > > native-lisp/ is to manually delete the *.elc files of all the files in > > lisp.mk's $shortlisp list, is that sufficient? > > Yes I think so. > > The trouble of using make for building such a system is that make is not > aware of the .eln filename, so it should be necessary to ask the Emacs > binary about that to create dynamically the precise (multiple target) > rule. Not very practical IMO... I do wonder whether the whole filename scheme is really the best option. IIUC, and that's a big if in this case, the main motivation for using hashes in the .eln filenames is that dlopen() is broken and may return the same handle for subsequent dlopen()s of the same name, even if the underlying file changed in between. Merely verifying that the ABI is correct could be done at runtime, so that's no reason to keep a hash in the filename. So my vague idea is this: 1. implement fixed_dlopen(), which keeps track of filenames that have been opened and, if necessary, creates a temporary file and loads that instead of its argument. 2. compile lisp/emacs-lisp/bytecomp.el to lisp/emacs-lisp/bytecomp.elc and native-lisp/emacs-lisp/bytecomp.eln 3. add extra code in the top level function of each .eln to check that the ABI is correct. This would allow us to use standard make rules. It would also make .eln filenames predictable. It might even draw someone's attention to the fact that dlopen() is broken and make them fix it. I'm probably missing other good reasons for the hashed filename scheme. Pip From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 05:19:18 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 10:19:18 +0000 Received: from localhost ([127.0.0.1]:32934 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI7YE-0002Al-EN for submit@debbugs.gnu.org; Fri, 05 Mar 2021 05:19:18 -0500 Received: from mx.sdf.org ([205.166.94.24]:58442) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI7Y9-0002AZ-8w for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 05:19:17 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 125AJBKT016169 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 10:19:12 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> Date: Fri, 05 Mar 2021 10:19:11 +0000 In-Reply-To: (Pip Cet's message of "Fri, 5 Mar 2021 10:09:47 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Fri, Mar 5, 2021 at 9:33 AM Andrea Corallo via Bug reports for GNU > Emacs, the Swiss army knife of text editors > wrote: >> Eli Zaretskii writes: >> > So currently the only way to fill up a newly created subdirectory of >> > native-lisp/ is to manually delete the *.elc files of all the files in >> > lisp.mk's $shortlisp list, is that sufficient? >> >> Yes I think so. >> >> The trouble of using make for building such a system is that make is not >> aware of the .eln filename, so it should be necessary to ask the Emacs >> binary about that to create dynamically the precise (multiple target) >> rule. Not very practical IMO... > > I do wonder whether the whole filename scheme is really the best option. > > IIUC, and that's a big if in this case, the main motivation for using > hashes in the .eln filenames is that dlopen() is broken and may return > the same handle for subsequent dlopen()s of the same name, even if the > underlying file changed in between. Unfortunately this was only an unfortunate discover along the road... this design predates that. > Merely verifying that the ABI is correct could be done at runtime, so > that's no reason to keep a hash in the filename. > > So my vague idea is this: > > 1. implement fixed_dlopen(), which keeps track of filenames that have > been opened and, if necessary, creates a temporary file and loads that > instead of its argument. > 2. compile lisp/emacs-lisp/bytecomp.el to lisp/emacs-lisp/bytecomp.elc > and native-lisp/emacs-lisp/bytecomp.eln So it was at the beginning, I think we moved away from that before the odd dlopen behavior. > 3. add extra code in the top level function of each .eln to check that > the ABI is correct. > > This would allow us to use standard make rules. It would also make > .eln filenames predictable. It might even draw someone's attention to > the fact that dlopen() is broken and make them fix it. > > I'm probably missing other good reasons for the hashed filename scheme. Yep, this was discussed in length on emacs-devel, IIRC mainly on a long standing thread called "native compilation the bird-eye view" (or something close). Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 06:55:59 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 11:55:59 +0000 Received: from localhost ([127.0.0.1]:33054 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI93n-0004kp-Ff for submit@debbugs.gnu.org; Fri, 05 Mar 2021 06:55:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47456) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI93l-0004kZ-8s for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 06:55:57 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:34509) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lI93f-0003Fm-IC; Fri, 05 Mar 2021 06:55:51 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4833 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lI93T-0002bU-GP; Fri, 05 Mar 2021 06:55:49 -0500 Date: Fri, 05 Mar 2021 13:55:23 +0200 Message-Id: <83wnulyfv8.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 05 Mar 2021 09:32:35 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org > Date: Fri, 05 Mar 2021 09:32:35 +0000 > > The trouble of using make for building such a system is that make is not > aware of the .eln filename, so it should be necessary to ask the Emacs > binary about that to create dynamically the precise (multiple target) > rule. Not very practical IMO... Why can't we have a rule in the Makefile conditioned by HAVE_NATIVE_COMP? > Another option would be to invoke Emacs only once passing to it the list > of the .el files to be compiled and the parallelism requested and have > Emacs do the job. I think this might be easier and we have in the > codebase already the all that's needed for that. The downside is that > we'd drift away from how the vanilla build is working. Each time we add another Emacs invocation in the build process, we make the goal of supporting cross-build farther. From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 08:52:59 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 13:52:59 +0000 Received: from localhost ([127.0.0.1]:33297 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIAt0-0007gY-IA for submit@debbugs.gnu.org; Fri, 05 Mar 2021 08:52:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47642) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIAsy-0007gJ-Ms for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 08:52:57 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41338) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIAst-00066I-CM; Fri, 05 Mar 2021 08:52:51 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4093 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIAss-0004vm-RF; Fri, 05 Mar 2021 08:52:51 -0500 Date: Fri, 05 Mar 2021 15:52:34 +0200 Message-Id: <83o8fxyafx.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Thu, 04 Mar 2021 14:49:47 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, > andrewjmoreton@gmail.com > Date: Thu, 04 Mar 2021 14:49:47 +0000 > > I've a reproducer that is most luckily due to the same issue you are > observing: > > emacs -batch -l comp -f batch-native-compile .../emacs/lisp/progmodes/cc-engine.el > > GC kicks-in and we end-up marking #, we try then > to mark its compilation unit but we segfault (backtrace below). AFAICT, the crash I see here, while compiling subr-x.el, is not inside GC: gc_in_progress is zero when Emacs crashes. To make debugging easier, I started Emacs like this: emacs -batch -l comp -f batch-byte-native-compile-for-bootstrap ../lisp/emacs-lisp/subr-x.el (AFAIU, using batch-byte-native-compile-for-bootstrap is currently the only way of invoking the native compilation in the same Emacs process, not in an async subprocess, is that right?) It crashes inside comp--compile-ctxt-to-file, and when it does, the C stack seems to be smashed: Thread 1 received signal SIGSEGV, Segmentation fault. 0x06acac3e in ?? () (gdb) bt #0 0x06acac3e in ?? () #1 0x00010101 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) Lisp Backtrace: "comp--compile-ctxt-to-file" (0x82ca78) "comp-compile-ctxt-to-file" (0x82cc88) "comp-final1" (0x82cfb0) "comp-final" (0x82d238) "comp--native-compile" (0x82d468) "batch-native-compile" (0x82d6a0) "batch-byte-native-compile-for-bootstrap" (0x82d908) "command-line-1" (0x82e360) "command-line" (0x82ef08) "normal-top-level" (0x82f630) I then put a breakpoint in comp--compile-ctxt-to-file and stepped through it. This behaves erratically: if I just step with "next", it seems to crash inside the call to gcc_jit_context_set_int_option, here: gcc_jit_context_set_int_option (comp.ctxt, GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, comp.speed < 0 ? 0 : (comp.speed > 3 ? 3 : comp.speed)); But if I "stepi" inside gcc_jit_int_option_optimization_level, it somehow seems to return, proceeds to this line: gcc_jit_context_compile_to_file (comp.ctxt, GCC_JIT_OUTPUT_KIND_DYNAMIC_LIBRARY, SSDATA (tmp_file)); Then something goes wrong inside it: the backtrace shows bogus addresses (note the "0xbaadf00d" thingies): 0x0766f180 in ?? () (gdb) bt #0 0x0766f180 in ?? () #1 0x672f756e in ?? () #2 0x652f7469 in ?? () #3 0x7363616d in ?? () #4 0x74616e2f in ?? () #5 0x2d657669 in ?? () #6 0x706d6f63 in ?? () #7 0x74616e2f in ?? () #8 0x2d657669 in ?? () #9 0x7073696c in ?? () #10 0x2e38322f in ?? () #11 0x30352e30 in ?? () #12 0x3238312d in ?? () #13 0x65306335 in ?? () #14 0x75732f32 in ?? () #15 0x782d7262 in ?? () #16 0x6432302d in ?? () #17 0x33666566 in ?? () #18 0x37312d32 in ?? () #19 0x62656166 in ?? () #20 0x47736431 in ?? () #21 0x47305561 in ?? () #22 0x6e6c652e in ?? () #23 0x706d742e in ?? () #24 0xbaadf000 in ?? () #25 0xbaadf00d in ?? () #26 0xbaadf00d in ?? () #27 0xbaadf00d in ?? () #28 0xbaadf00d in ?? () #29 0xbaadf00d in ?? () #30 0xbaadf00d in ?? () #31 0xbaadf00d in ?? () #32 0xbaadf00d in ?? () #33 0xbaadf00d in ?? () #34 0xbaadf00d in ?? () #35 0xbaadf00d in ?? () #36 0xbaadf00d in ?? () #37 0xbaadf00d in ?? () #38 0xbaadf00d in ?? () #39 0xbaadf00d in ?? () #40 0xbaadf00d in ?? () #41 0xbaadf00d in ?? () #42 0xbaadf00d in ?? () #43 0xbaadf00d in ?? () #44 0xbaadf00d in ?? () #45 0xbaadf00d in ?? () #46 0xbaadf00d in ?? () #47 0xbaadf00d in ?? () #48 0xbaadf00d in ?? () #49 0xbaadf00d in ?? () #50 0xbaadf00d in ?? () #51 0xbaadf00d in ?? () #52 0xbaadf00d in ?? () #53 0xbaadf00d in ?? () #54 0xbaadf00d in ?? () #55 0xbaadf00d in ?? () #56 0xbaadf00d in ?? () #57 0xbaadf00d in ?? () #58 0xbaadf00d in ?? () #59 0xbaadf00d in ?? () #60 0xbaadf00d in ?? () #61 0xbaadf00d in ?? () #62 0xbaadf00d in ?? () #63 0xbaadf00d in ?? () #64 0xbaadf00d in ?? () #65 0xbaadf00d in ?? () #66 0xbaadf00d in ?? () #67 0xbaadf00d in ?? () #68 0xbaadf00d in ?? () #69 0xbaadf00d in ?? () #70 0xbaadf00d in ?? () #71 0xbaadf00d in ?? () #72 0xbaadf00d in ?? () #73 0xbaadf00d in ?? () #74 0xbaadf00d in ?? () #75 0xbaadf00d in ?? () #76 0xbaadf00d in ?? () #77 0xbaadf00d in ?? () #78 0xbaadf00d in ?? () #79 0xbaadf00d in ?? () #80 0xbaadf00d in ?? () #81 0xbaadf00d in ?? () #82 0xbaadf00d in ?? () #83 0xbaadf00d in ?? () #84 0xbaadf00d in ?? () #85 0xbaadf00d in ?? () #86 0xbaadf00d in ?? () #87 0xbaadf00d in ?? () #88 0xbaadf00d in ?? () #89 0xbaadf00d in ?? () #90 0xbaadf00d in ?? () #91 0xbaadf00d in ?? () #92 0xbaadf00d in ?? () #93 0xbaadf00d in ?? () #94 0xbaadf00d in ?? () #95 0xbaadf00d in ?? () #96 0xbaadf00d in ?? () #97 0xbaadf00d in ?? () #98 0xbaadf00d in ?? () #99 0xbaadf00d in ?? () #100 0xbaadf00d in ?? () #101 0xbaadf00d in ?? () #102 0xbaadf00d in ?? () #103 0xbaadf00d in ?? () #104 0xbaadf00d in ?? () #105 0xbaadf00d in ?? () #106 0xbaadf00d in ?? () #107 0xbaadf00d in ?? () #108 0xbaadf00d in ?? () #109 0xbaadf00d in ?? () #110 0xbaadf00d in ?? () #111 0xbaadf00d in ?? () #112 0xbaadf00d in ?? () #113 0xbaadf00d in ?? () #114 0xbaadf00d in ?? () #115 0xbaadf00d in ?? () #116 0xbaadf00d in ?? () #117 0xbaadf00d in ?? () #118 0xbaadf00d in ?? () #119 0xbaadf00d in ?? () #120 0xbaadf00d in ?? () #121 0xbaadf00d in ?? () #122 0xbaadf00d in ?? () #123 0xbaadf00d in ?? () #124 0xbaadf00d in ?? () #125 0xbaadf00d in ?? () #126 0xbaadf00d in ?? () #127 0xbaadf00d in ?? () #128 0xbaadf00d in ?? () #129 0xbaadf00d in ?? () #130 0xbaadf00d in ?? () #131 0xbaadf00d in ?? () #132 0xbaadf00d in ?? () #133 0xbaadf00d in ?? () #134 0xbaadf00d in ?? () #135 0xbaadf00d in ?? () #136 0xbaadf00d in ?? () #137 0xbaadf00d in ?? () #138 0xbaadf00d in ?? () #139 0xbaadf00d in ?? () #140 0xbaadf00d in ?? () #141 0xbaadf00d in ?? () #142 0xbaadf00d in ?? () #143 0xbaadf00d in ?? () #144 0xbaadf00d in ?? () #145 0xbaadf00d in ?? () #146 0xbaadf00d in ?? () #147 0xbaadf00d in ?? () #148 0xbaadf00d in ?? () #149 0xbaadf00d in ?? () #150 0xbaadf00d in ?? () #151 0xbaadf00d in ?? () #152 0xbaadf00d in ?? () #153 0xbaadf00d in ?? () #154 0xbaadf00d in ?? () #155 0xbaadf00d in ?? () #156 0xbaadf00d in ?? () #157 0xbaadf00d in ?? () #158 0xbaadf00d in ?? () #159 0xbaadf00d in ?? () #160 0xbaadf00d in ?? () #161 0xbaadf00d in ?? () #162 0xbaadf00d in ?? () #163 0xbaadf00d in ?? () #164 0xbaadf00d in ?? () #165 0xbaadf00d in ?? () #166 0xbaadf00d in ?? () #167 0xbaadf00d in ?? () #168 0xbaadf00d in ?? () #169 0xbaadf00d in ?? () #170 0xbaadf00d in ?? () #171 0xbaadf00d in ?? () #172 0xbaadf00d in ?? () #173 0xbaadf00d in ?? () #174 0xbaadf00d in ?? () #175 0xbaadf00d in ?? () #176 0xbaadf00d in ?? () #177 0xbaadf00d in ?? () #178 0xbaadf00d in ?? () #179 0xbaadf00d in ?? () #180 0xbaadf00d in ?? () #181 0xbaadf00d in ?? () #182 0xbaadf00d in ?? () #183 0xbaadf00d in ?? () #184 0xbaadf00d in ?? () #185 0xbaadf00d in ?? () #186 0xbaadf00d in ?? () #187 0xbaadf00d in ?? () #188 0xbaadf00d in ?? () #189 0xbaadf00d in ?? () #190 0xbaadf00d in ?? () #191 0xbaadf00d in ?? () #192 0xbaadf00d in ?? () #193 0xbaadf00d in ?? () #194 0xbaadf00d in ?? () #195 0xbaadf00d in ?? () #196 0xbaadf00d in ?? () #197 0xbaadf00d in ?? () #198 0xbaadf00d in ?? () #199 0xbaadf00d in ?? () #200 0xbaadf00d in ?? () #201 0xbaadf00d in ?? () #202 0xbaadf00d in ?? () #203 0xbaadf00d in ?? () #204 0xbaadf00d in ?? () #205 0xbaadf00d in ?? () #206 0xbaadf00d in ?? () #207 0xbaadf00d in ?? () #208 0xbaadf00d in ?? () #209 0xbaadf00d in ?? () #210 0xbaadf00d in ?? () #211 0xbaadf00d in ?? () #212 0xbaadf00d in ?? () #213 0xbaadf00d in ?? () #214 0xbaadf00d in ?? () #215 0xbaadf00d in ?? () #216 0xbaadf00d in ?? () #217 0xbaadf00d in ?? () #218 0xbaadf00d in ?? () #219 0xbaadf00d in ?? () #220 0xbaadf00d in ?? () #221 0xbaadf00d in ?? () #222 0xbaadf00d in ?? () #223 0xbaadf00d in ?? () #224 0xbaadf00d in ?? () #225 0xbaadf00d in ?? () #226 0xbaadf00d in ?? () #227 0xbaadf00d in ?? () #228 0xbaadf00d in ?? () #229 0xbaadf00d in ?? () #230 0xbaadf00d in ?? () #231 0xbaadf00d in ?? () #232 0xabababab in ?? () #233 0xabababab in ?? () #234 0xfeeefeee in ?? () #235 0x00000000 in ?? () Maybe if I "stepi" inside that last libgccjit function, I will be able to advance more. But something is definitely fishy here, and I'm not sure what that is. Ideas for further debugging are welcome. From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 08:56:27 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 13:56:28 +0000 Received: from localhost ([127.0.0.1]:33307 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIAwN-0007lr-LI for submit@debbugs.gnu.org; Fri, 05 Mar 2021 08:56:27 -0500 Received: from mx.sdf.org ([205.166.94.24]:59287) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIAwL-0007lj-UU for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 08:56:26 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 125DuOh4014540 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 13:56:24 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <83wnulyfv8.fsf@gnu.org> Date: Fri, 05 Mar 2021 13:56:24 +0000 In-Reply-To: <83wnulyfv8.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 05 Mar 2021 13:55:23 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org >> Date: Fri, 05 Mar 2021 09:32:35 +0000 >> >> The trouble of using make for building such a system is that make is not >> aware of the .eln filename, so it should be necessary to ask the Emacs >> binary about that to create dynamically the precise (multiple target) >> rule. Not very practical IMO... > > Why can't we have a rule in the Makefile conditioned by > HAVE_NATIVE_COMP? We certainly can, the difficult part is to generate the rule as the .eln filename is known only by the Emacs binary. I'm probably missing something. >> Another option would be to invoke Emacs only once passing to it the list >> of the .el files to be compiled and the parallelism requested and have >> Emacs do the job. I think this might be easier and we have in the >> codebase already the all that's needed for that. The downside is that >> we'd drift away from how the vanilla build is working. > > Each time we add another Emacs invocation in the build process, we > make the goal of supporting cross-build farther. Point taken. [ To be considered also that as of today libgccjit is not meant to work for cross compilation. ] Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 09:05:02 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 14:05:02 +0000 Received: from localhost ([127.0.0.1]:33315 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIB4f-0007zj-P8 for submit@debbugs.gnu.org; Fri, 05 Mar 2021 09:05:02 -0500 Received: from mx.sdf.org ([205.166.94.24]:58815) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIB4d-0007za-7j for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 09:05:00 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 125E4wON012022 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 14:04:58 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> Date: Fri, 05 Mar 2021 14:04:58 +0000 In-Reply-To: <83o8fxyafx.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 05 Mar 2021 15:52:34 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: Eli Zaretskii , 46256@debbugs.gnu.org, >> andrewjmoreton@gmail.com >> Date: Thu, 04 Mar 2021 14:49:47 +0000 >> >> I've a reproducer that is most luckily due to the same issue you are >> observing: >> >> emacs -batch -l comp -f batch-native-compile .../emacs/lisp/progmodes/cc-engine.el >> >> GC kicks-in and we end-up marking #, we try then >> to mark its compilation unit but we segfault (backtrace below). > > AFAICT, the crash I see here, while compiling subr-x.el, is not inside > GC: gc_in_progress is zero when Emacs crashes. > > To make debugging easier, I started Emacs like this: > > emacs -batch -l comp -f batch-byte-native-compile-for-bootstrap ../lisp/emacs-lisp/subr-x.el > > (AFAIU, using batch-byte-native-compile-for-bootstrap is currently the > only way of invoking the native compilation in the same Emacs process, > not in an async subprocess, is that right?) Correct > It crashes inside comp--compile-ctxt-to-file, and when it does, the C > stack seems to be smashed: > > Thread 1 received signal SIGSEGV, Segmentation fault. > 0x06acac3e in ?? () > (gdb) bt > #0 0x06acac3e in ?? () > #1 0x00010101 in ?? () > Backtrace stopped: previous frame inner to this frame (corrupt stack?) > > Lisp Backtrace: > "comp--compile-ctxt-to-file" (0x82ca78) > "comp-compile-ctxt-to-file" (0x82cc88) > "comp-final1" (0x82cfb0) > "comp-final" (0x82d238) > "comp--native-compile" (0x82d468) > "batch-native-compile" (0x82d6a0) > "batch-byte-native-compile-for-bootstrap" (0x82d908) > "command-line-1" (0x82e360) > "command-line" (0x82ef08) > "normal-top-level" (0x82f630) > > I then put a breakpoint in comp--compile-ctxt-to-file and stepped > through it. This behaves erratically: if I just step with "next", it > seems to crash inside the call to gcc_jit_context_set_int_option, > here: > > gcc_jit_context_set_int_option (comp.ctxt, > GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, > comp.speed < 0 ? 0 > : (comp.speed > 3 ? 3 : comp.speed)); > > But if I "stepi" inside gcc_jit_int_option_optimization_level, it > somehow seems to return, proceeds to this line: > > gcc_jit_context_compile_to_file (comp.ctxt, > GCC_JIT_OUTPUT_KIND_DYNAMIC_LIBRARY, > SSDATA (tmp_file)); > > Then something goes wrong inside it: the backtrace shows bogus > addresses (note the "0xbaadf00d" thingies): > > 0x0766f180 in ?? () > (gdb) bt > #0 0x0766f180 in ?? () > #1 0x672f756e in ?? () > #2 0x652f7469 in ?? () > #3 0x7363616d in ?? () > #4 0x74616e2f in ?? () > #5 0x2d657669 in ?? () > #6 0x706d6f63 in ?? () > #7 0x74616e2f in ?? () > #8 0x2d657669 in ?? () > #9 0x7073696c in ?? () > #10 0x2e38322f in ?? () > #11 0x30352e30 in ?? () > #12 0x3238312d in ?? () > #13 0x65306335 in ?? () > #14 0x75732f32 in ?? () > #15 0x782d7262 in ?? () > #16 0x6432302d in ?? () > #17 0x33666566 in ?? () > #18 0x37312d32 in ?? () > #19 0x62656166 in ?? () > #20 0x47736431 in ?? () > #21 0x47305561 in ?? () > #22 0x6e6c652e in ?? () > #23 0x706d742e in ?? () > #24 0xbaadf000 in ?? () > #25 0xbaadf00d in ?? () > #26 0xbaadf00d in ?? () > #27 0xbaadf00d in ?? () > #28 0xbaadf00d in ?? () > #29 0xbaadf00d in ?? () > #30 0xbaadf00d in ?? () > #31 0xbaadf00d in ?? () > #32 0xbaadf00d in ?? () > #33 0xbaadf00d in ?? () > #34 0xbaadf00d in ?? () > #35 0xbaadf00d in ?? () > #36 0xbaadf00d in ?? () > #37 0xbaadf00d in ?? () > #38 0xbaadf00d in ?? () > #39 0xbaadf00d in ?? () > #40 0xbaadf00d in ?? () > #41 0xbaadf00d in ?? () > #42 0xbaadf00d in ?? () > #43 0xbaadf00d in ?? () > #44 0xbaadf00d in ?? () > #45 0xbaadf00d in ?? () > #46 0xbaadf00d in ?? () > #47 0xbaadf00d in ?? () > #48 0xbaadf00d in ?? () > #49 0xbaadf00d in ?? () > #50 0xbaadf00d in ?? () > #51 0xbaadf00d in ?? () > #52 0xbaadf00d in ?? () > #53 0xbaadf00d in ?? () > #54 0xbaadf00d in ?? () > #55 0xbaadf00d in ?? () > #56 0xbaadf00d in ?? () > #57 0xbaadf00d in ?? () > #58 0xbaadf00d in ?? () > #59 0xbaadf00d in ?? () > #60 0xbaadf00d in ?? () > #61 0xbaadf00d in ?? () > #62 0xbaadf00d in ?? () > #63 0xbaadf00d in ?? () > #64 0xbaadf00d in ?? () > #65 0xbaadf00d in ?? () > #66 0xbaadf00d in ?? () > #67 0xbaadf00d in ?? () > #68 0xbaadf00d in ?? () > #69 0xbaadf00d in ?? () > #70 0xbaadf00d in ?? () > #71 0xbaadf00d in ?? () > #72 0xbaadf00d in ?? () > #73 0xbaadf00d in ?? () > #74 0xbaadf00d in ?? () > #75 0xbaadf00d in ?? () > #76 0xbaadf00d in ?? () > #77 0xbaadf00d in ?? () > #78 0xbaadf00d in ?? () > #79 0xbaadf00d in ?? () > #80 0xbaadf00d in ?? () > #81 0xbaadf00d in ?? () > #82 0xbaadf00d in ?? () > #83 0xbaadf00d in ?? () > #84 0xbaadf00d in ?? () > #85 0xbaadf00d in ?? () > #86 0xbaadf00d in ?? () > #87 0xbaadf00d in ?? () > #88 0xbaadf00d in ?? () > #89 0xbaadf00d in ?? () > #90 0xbaadf00d in ?? () > #91 0xbaadf00d in ?? () > #92 0xbaadf00d in ?? () > #93 0xbaadf00d in ?? () > #94 0xbaadf00d in ?? () > #95 0xbaadf00d in ?? () > #96 0xbaadf00d in ?? () > #97 0xbaadf00d in ?? () > #98 0xbaadf00d in ?? () > #99 0xbaadf00d in ?? () > #100 0xbaadf00d in ?? () > #101 0xbaadf00d in ?? () > #102 0xbaadf00d in ?? () > #103 0xbaadf00d in ?? () > #104 0xbaadf00d in ?? () > #105 0xbaadf00d in ?? () > #106 0xbaadf00d in ?? () > #107 0xbaadf00d in ?? () > #108 0xbaadf00d in ?? () > #109 0xbaadf00d in ?? () > #110 0xbaadf00d in ?? () > #111 0xbaadf00d in ?? () > #112 0xbaadf00d in ?? () > #113 0xbaadf00d in ?? () > #114 0xbaadf00d in ?? () > #115 0xbaadf00d in ?? () > #116 0xbaadf00d in ?? () > #117 0xbaadf00d in ?? () > #118 0xbaadf00d in ?? () > #119 0xbaadf00d in ?? () > #120 0xbaadf00d in ?? () > #121 0xbaadf00d in ?? () > #122 0xbaadf00d in ?? () > #123 0xbaadf00d in ?? () > #124 0xbaadf00d in ?? () > #125 0xbaadf00d in ?? () > #126 0xbaadf00d in ?? () > #127 0xbaadf00d in ?? () > #128 0xbaadf00d in ?? () > #129 0xbaadf00d in ?? () > #130 0xbaadf00d in ?? () > #131 0xbaadf00d in ?? () > #132 0xbaadf00d in ?? () > #133 0xbaadf00d in ?? () > #134 0xbaadf00d in ?? () > #135 0xbaadf00d in ?? () > #136 0xbaadf00d in ?? () > #137 0xbaadf00d in ?? () > #138 0xbaadf00d in ?? () > #139 0xbaadf00d in ?? () > #140 0xbaadf00d in ?? () > #141 0xbaadf00d in ?? () > #142 0xbaadf00d in ?? () > #143 0xbaadf00d in ?? () > #144 0xbaadf00d in ?? () > #145 0xbaadf00d in ?? () > #146 0xbaadf00d in ?? () > #147 0xbaadf00d in ?? () > #148 0xbaadf00d in ?? () > #149 0xbaadf00d in ?? () > #150 0xbaadf00d in ?? () > #151 0xbaadf00d in ?? () > #152 0xbaadf00d in ?? () > #153 0xbaadf00d in ?? () > #154 0xbaadf00d in ?? () > #155 0xbaadf00d in ?? () > #156 0xbaadf00d in ?? () > #157 0xbaadf00d in ?? () > #158 0xbaadf00d in ?? () > #159 0xbaadf00d in ?? () > #160 0xbaadf00d in ?? () > #161 0xbaadf00d in ?? () > #162 0xbaadf00d in ?? () > #163 0xbaadf00d in ?? () > #164 0xbaadf00d in ?? () > #165 0xbaadf00d in ?? () > #166 0xbaadf00d in ?? () > #167 0xbaadf00d in ?? () > #168 0xbaadf00d in ?? () > #169 0xbaadf00d in ?? () > #170 0xbaadf00d in ?? () > #171 0xbaadf00d in ?? () > #172 0xbaadf00d in ?? () > #173 0xbaadf00d in ?? () > #174 0xbaadf00d in ?? () > #175 0xbaadf00d in ?? () > #176 0xbaadf00d in ?? () > #177 0xbaadf00d in ?? () > #178 0xbaadf00d in ?? () > #179 0xbaadf00d in ?? () > #180 0xbaadf00d in ?? () > #181 0xbaadf00d in ?? () > #182 0xbaadf00d in ?? () > #183 0xbaadf00d in ?? () > #184 0xbaadf00d in ?? () > #185 0xbaadf00d in ?? () > #186 0xbaadf00d in ?? () > #187 0xbaadf00d in ?? () > #188 0xbaadf00d in ?? () > #189 0xbaadf00d in ?? () > #190 0xbaadf00d in ?? () > #191 0xbaadf00d in ?? () > #192 0xbaadf00d in ?? () > #193 0xbaadf00d in ?? () > #194 0xbaadf00d in ?? () > #195 0xbaadf00d in ?? () > #196 0xbaadf00d in ?? () > #197 0xbaadf00d in ?? () > #198 0xbaadf00d in ?? () > #199 0xbaadf00d in ?? () > #200 0xbaadf00d in ?? () > #201 0xbaadf00d in ?? () > #202 0xbaadf00d in ?? () > #203 0xbaadf00d in ?? () > #204 0xbaadf00d in ?? () > #205 0xbaadf00d in ?? () > #206 0xbaadf00d in ?? () > #207 0xbaadf00d in ?? () > #208 0xbaadf00d in ?? () > #209 0xbaadf00d in ?? () > #210 0xbaadf00d in ?? () > #211 0xbaadf00d in ?? () > #212 0xbaadf00d in ?? () > #213 0xbaadf00d in ?? () > #214 0xbaadf00d in ?? () > #215 0xbaadf00d in ?? () > #216 0xbaadf00d in ?? () > #217 0xbaadf00d in ?? () > #218 0xbaadf00d in ?? () > #219 0xbaadf00d in ?? () > #220 0xbaadf00d in ?? () > #221 0xbaadf00d in ?? () > #222 0xbaadf00d in ?? () > #223 0xbaadf00d in ?? () > #224 0xbaadf00d in ?? () > #225 0xbaadf00d in ?? () > #226 0xbaadf00d in ?? () > #227 0xbaadf00d in ?? () > #228 0xbaadf00d in ?? () > #229 0xbaadf00d in ?? () > #230 0xbaadf00d in ?? () > #231 0xbaadf00d in ?? () > #232 0xabababab in ?? () > #233 0xabababab in ?? () > #234 0xfeeefeee in ?? () > #235 0x00000000 in ?? () > > Maybe if I "stepi" inside that last libgccjit function, I will be able > to advance more. But something is definitely fishy here, and I'm not > sure what that is. Ideas for further debugging are welcome. Not many here, just two Mr. obvious observations: Recompiling comp.c at -O0 -g3 might help the broken stepping? Is SSDATA (tmp_file) containing something not meaningful or maybe suspicious? Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 09:54:32 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 14:54:32 +0000 Received: from localhost ([127.0.0.1]:33373 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIBqa-0002su-1w for submit@debbugs.gnu.org; Fri, 05 Mar 2021 09:54:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36750) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIBqY-0002si-B1 for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 09:54:31 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42606) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIBqS-0001KF-Bz; Fri, 05 Mar 2021 09:54:24 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4170 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIBqR-0000qD-EF; Fri, 05 Mar 2021 09:54:23 -0500 Date: Fri, 05 Mar 2021 16:54:09 +0200 Message-Id: <83lfb1y7la.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 05 Mar 2021 13:56:24 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <83wnulyfv8.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org > Date: Fri, 05 Mar 2021 13:56:24 +0000 > > > Why can't we have a rule in the Makefile conditioned by > > HAVE_NATIVE_COMP? > > We certainly can, the difficult part is to generate the rule as the .eln > filename is known only by the Emacs binary. I'm probably missing > something. Oh, you mean because of the ABI hash? Yes, that'd preclude using Make to decide when a .eln file needs to be regenerated. > > Each time we add another Emacs invocation in the build process, we > > make the goal of supporting cross-build farther. > > Point taken. > > [ To be considered also that as of today libgccjit is not meant to work > for cross compilation. ] Then perhaps we could invoke Emacs only in order to detect when the ABI has changed. Because when that happens, we need to regenerate all the preloaded *.eln files anyway, so there's no need to test individual files. Right? From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 10:00:33 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 15:00:33 +0000 Received: from localhost ([127.0.0.1]:35141 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIBwP-0003To-9i for submit@debbugs.gnu.org; Fri, 05 Mar 2021 10:00:33 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38330) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIBwO-0003Td-H5 for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 10:00:32 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42687) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIBwJ-00048W-1I; Fri, 05 Mar 2021 10:00:27 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4547 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIBwH-0001IU-Ry; Fri, 05 Mar 2021 10:00:26 -0500 Date: Fri, 05 Mar 2021 17:00:12 +0200 Message-Id: <83h7lpy7b7.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 05 Mar 2021 14:04:58 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Fri, 05 Mar 2021 14:04:58 +0000 > > > Maybe if I "stepi" inside that last libgccjit function, I will be able > > to advance more. But something is definitely fishy here, and I'm not > > sure what that is. Ideas for further debugging are welcome. > > Not many here, just two Mr. obvious observations: > > Recompiling comp.c at -O0 -g3 might help the broken stepping? comp.c (and all of Emacs) is already compiled with those options, as this is an unoptimized build. And anyway, I'm stepping through the code of libgccjit, not comp.c, when the crash happens. > Is SSDATA (tmp_file) containing something not meaningful or maybe > suspicious? The file name is fine. Thanks, I guess I will keep debugging this, then (The garbled callstack hints on some memory-related issue. Hmmm...) From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 10:18:56 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 15:18:56 +0000 Received: from localhost ([127.0.0.1]:35153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICEC-0003vl-CC for submit@debbugs.gnu.org; Fri, 05 Mar 2021 10:18:56 -0500 Received: from mail-oi1-f175.google.com ([209.85.167.175]:41149) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICEA-0003vY-54 for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 10:18:55 -0500 Received: by mail-oi1-f175.google.com with SMTP id o3so2854608oic.8 for <46256@debbugs.gnu.org>; Fri, 05 Mar 2021 07:18:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=kOicbhMbWUe89WNUU3S9cZ46hI1eA4GazUdr1apODPw=; b=B6Ax0jrW06a9pijym7z4iK4ChnLyxpEOi+bLVT3gjQhmOCRy07jiqMCjbwpYmpkFjI hzmqse9WL3tSu6Oe09Rof8BKxJptwpDeZIyTNSceb+VzmoiSSx1UjzQkPByYo6IddVwy zHcwZRAkQfAxr5b2oKvk/VTnZm/GB8QrvOQkmkAPVCYG0CXj20C4Fco8siPucWvxQs9C 2MVOeqVuDo/PTt8ouuBbfXEeofgq/u7pQKGNDdEZc5FBC4wOLB8SpsFELefvnW0sOYuX rrm3WDBQi9b9PMB5xyQP9o1tirxbWQzy5vdLn8tquYm2D3raFVaZvSFUtORk9KSY8Xkw Ge1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=kOicbhMbWUe89WNUU3S9cZ46hI1eA4GazUdr1apODPw=; b=B+J6DLJUxN0/3aGUTnuflZ1+nEStKhMo2rE3hqxVQn/8J4xYzbby9GW2HJ6N8EuXDn de6Ymvz6JUy6EoxhJml/zBCM2deaGzpOYZGuWe7KNaANf69iUX9VElKrGHbT3/2LbeAi eY0lFDXlUNLjRFtnQVUcaqRokVzuzF2XE2V5lxJOujpipqhNUUGamoYvGXpHb5qO38r5 4yRmKkostnyD3+bYGXeM4LsmrvgEEoJq7DdKeaHYI5t4WOjXegJ/KtHuDftij887VikR XjOVmiNLVzOmJCLvoezxB1D+cDUJFMMpye9kw6HfLDOQmQaQo/EwhNtpYmQHXS0JdBq4 jBSA== X-Gm-Message-State: AOAM531sDFppFj7lgaruSi4E+j5s+HZ956TflyF2TDt5eAlIwPGS5IFy Yzhfl+8V7KJUEOF+4Eu8oWTGoVz0cweCk3fWP1U= X-Google-Smtp-Source: ABdhPJynfDOuHRxSbrv2KElRdAvXaDwW1WJ+i91OypxBnTQmp5ziMupBW8Tezhh7fFPfnhApe8Jj084hgQO+41FjCfw= X-Received: by 2002:aca:aad6:: with SMTP id t205mr7572152oie.122.1614957528663; Fri, 05 Mar 2021 07:18:48 -0800 (PST) MIME-Version: 1.0 References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <83wnulyfv8.fsf@gnu.org> <83lfb1y7la.fsf@gnu.org> In-Reply-To: <83lfb1y7la.fsf@gnu.org> From: Pip Cet Date: Fri, 5 Mar 2021 15:18:12 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Fri, Mar 5, 2021 at 2:55 PM Eli Zaretskii wrote: > > From: Andrea Corallo > > Cc: 46256@debbugs.gnu.org > > Date: Fri, 05 Mar 2021 13:56:24 +0000 > > > > > Why can't we have a rule in the Makefile conditioned by > > > HAVE_NATIVE_COMP? > > > > We certainly can, the difficult part is to generate the rule as the .eln > > filename is known only by the Emacs binary. I'm probably missing > > something. > > Oh, you mean because of the ABI hash? Yes, that'd preclude using Make > to decide when a .eln file needs to be regenerated. I think storing the ABI hash somewhere accessible in the build tree is a good idea, anyway, and then we could do it with some make magic. > > [ To be considered also that as of today libgccjit is not meant to work > > for cross compilation. ] > > Then perhaps we could invoke Emacs only in order to detect when the > ABI has changed. IIUC, the ABI only changes when DEFUNs do, and then we regenerate most of the Emacs binaries anyway, so we could make abi-hash depend on gl-stamp/globals.h? > Because when that happens, we need to regenerate all > the preloaded *.eln files anyway, so there's no need to test > individual files. Right? But do we want to keep the old files around in case the ABI changes back? I don't think we do. Pip From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 10:22:47 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 15:22:47 +0000 Received: from localhost ([127.0.0.1]:35164 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICHv-00042f-8D for submit@debbugs.gnu.org; Fri, 05 Mar 2021 10:22:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43466) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICHt-00042T-Kk for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 10:22:46 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43090) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lICHn-0005FC-8G; Fri, 05 Mar 2021 10:22:39 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1970 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lICHm-00079m-KO; Fri, 05 Mar 2021 10:22:39 -0500 Date: Fri, 05 Mar 2021 17:22:24 +0200 Message-Id: <83eegty6a7.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Fri, 5 Mar 2021 15:18:12 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <83wnulyfv8.fsf@gnu.org> <83lfb1y7la.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Fri, 5 Mar 2021 15:18:12 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org > > > Then perhaps we could invoke Emacs only in order to detect when the > > ABI has changed. > > IIUC, the ABI only changes when DEFUNs do, and then we regenerate most > of the Emacs binaries anyway, so we could make abi-hash depend on > gl-stamp/globals.h? Why should we have the knowledge about what determines the ABI hash in more than one place? > > Because when that happens, we need to regenerate all > > the preloaded *.eln files anyway, so there's no need to test > > individual files. Right? > > But do we want to keep the old files around in case the ABI changes > back? I don't think we do. That's a separate issue. It depends on whether the build included non-preloaded files. From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 10:26:50 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 15:26:50 +0000 Received: from localhost ([127.0.0.1]:35172 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICLq-00049H-72 for submit@debbugs.gnu.org; Fri, 05 Mar 2021 10:26:50 -0500 Received: from mx.sdf.org ([205.166.94.24]:51067) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICLo-000497-Bs for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 10:26:49 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 125FQkQh001128 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 15:26:46 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <83wnulyfv8.fsf@gnu.org> <83lfb1y7la.fsf@gnu.org> Date: Fri, 05 Mar 2021 15:26:46 +0000 In-Reply-To: <83lfb1y7la.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 05 Mar 2021 16:54:09 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org >> Date: Fri, 05 Mar 2021 13:56:24 +0000 >> >> > Why can't we have a rule in the Makefile conditioned by >> > HAVE_NATIVE_COMP? >> >> We certainly can, the difficult part is to generate the rule as the .eln >> filename is known only by the Emacs binary. I'm probably missing >> something. > > Oh, you mean because of the ABI hash? Yes, that'd preclude using Make > to decide when a .eln file needs to be regenerated. Yep >> > Each time we add another Emacs invocation in the build process, we >> > make the goal of supporting cross-build farther. >> >> Point taken. >> >> [ To be considered also that as of today libgccjit is not meant to work >> for cross compilation. ] > > Then perhaps we could invoke Emacs only in order to detect when the > ABI has changed. Because when that happens, we need to regenerate all > the preloaded *.eln files anyway, so there's no need to test > individual files. Right? Sounds good to me. Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 10:54:53 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 15:54:53 +0000 Received: from localhost ([127.0.0.1]:35201 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICmy-0004pZ-O5 for submit@debbugs.gnu.org; Fri, 05 Mar 2021 10:54:52 -0500 Received: from mail-ot1-f42.google.com ([209.85.210.42]:43015) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICmv-0004pM-MA for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 10:54:50 -0500 Received: by mail-ot1-f42.google.com with SMTP id v12so2209699ott.10 for <46256@debbugs.gnu.org>; Fri, 05 Mar 2021 07:54:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=zQ0MRHHo9pcXSWGyXjh16fCpwcQ//DMjgEp1lFlezcA=; b=lmBWd6r8V1hbXJ1X3IoPAXmMf/0A4qHxuvArCch49Eq9WHg4i6uCWVVGJBeeG+U+Uf zIcrEe5oMtnsll6PoWL/rUq0EdFsRqHFFhFtzWjCPf0Emhymf+wQM1qDM+FWVQxb96OD KHs1GHl4m0QMWKfxIiBzvnODZ8sju/9/0Z+MquWtTWq90pdMMh66JNaNGb/44PONDkOJ XBs6b54LuqYnV1YAKDyQ3gu0P+lch2cVoQHr+UcjcWMMBKPdyXsMx33bD3ZXzE97YOFi Cv4cHgMEgHw4azJMO6LYhYUhlsQdhk1dFugfHaS5TYLVchPQ0OnsvI/OuDGZ6hmdmsG8 +0Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zQ0MRHHo9pcXSWGyXjh16fCpwcQ//DMjgEp1lFlezcA=; b=Afzqsc4Nf1oELiGU8JP8ihlC5B5Dwc9uuQV2BQmgM5lXiOkY9e2yTr3qf0I00NyEJ5 k4gN1baLIv7dPj3UMmF89sGt9FEjU6RSNf65GVicBu4M5a3jYe/YTs63qHTqqf4q1qOX 5BzCnhi8psPDQ+EcD1zNEDI37jYOzMrIyFLjjEAMzXYgCf+f/NBoQkKDfuv66IDcr2nb ZKM0zqku2d/AqCorC/JBPRYAiyoFfoa4pxWl9Ih7ubxrWtUyK3NuKUD+sNML/ATHBRqq pShXW9Pb2YW9xm/OSFM/kCi4R6sokdeAN0aV85/zJ4IlhIX8tjEd6uE/qvKQqo8/EwbU LEsQ== X-Gm-Message-State: AOAM533P7aCBgnFTmuDJmtTVSqJSkCLD+WZS5Ewwn9DmVwc1mUXvcpmD WCdvHEQ7cLPwZh6ikcuVJPsTCvCu9Ias2aVMXn4= X-Google-Smtp-Source: ABdhPJzDG8+MwKS1/WR4U/2Ab3igULzj++7e1Mbja4wTnq39gITEBo8vs+niZUa6syZHQWgkyzSJgtHiQLcOxhQal60= X-Received: by 2002:a05:6830:1e51:: with SMTP id e17mr8547150otj.292.1614959684010; Fri, 05 Mar 2021 07:54:44 -0800 (PST) MIME-Version: 1.0 References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <83wnulyfv8.fsf@gnu.org> <83lfb1y7la.fsf@gnu.org> <83eegty6a7.fsf@gnu.org> In-Reply-To: <83eegty6a7.fsf@gnu.org> From: Pip Cet Date: Fri, 5 Mar 2021 15:54:07 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Fri, Mar 5, 2021 at 3:22 PM Eli Zaretskii wrote: > > From: Pip Cet > > Date: Fri, 5 Mar 2021 15:18:12 +0000 > > Cc: Andrea Corallo , 46256@debbugs.gnu.org > > > > > Then perhaps we could invoke Emacs only in order to detect when the > > > ABI has changed. > > > > IIUC, the ABI only changes when DEFUNs do, and then we regenerate most > > of the Emacs binaries anyway, so we could make abi-hash depend on > > gl-stamp/globals.h? > > Why should we have the knowledge about what determines the ABI hash in > more than one place? At least in my case, I end up building several emacs binaries in a tree, and then I have to ls -l native-lisp to find out which one is current, and that's annoying. But Andrea pointed out, entirely correctly, that I missed the discussion and a consensus has apparently been reached to do it this way. I do think it's weird to have to run Emacs to find out which directories the Emacs binary looks at, but maybe that's just me. > > > Because when that happens, we need to regenerate all > > > the preloaded *.eln files anyway, so there's no need to test > > > individual files. Right? > > > > But do we want to keep the old files around in case the ABI changes > > back? I don't think we do. > > That's a separate issue. Indeed. > It depends on whether the build included non-preloaded files. I'm afraid I don't follow. Pip From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 10:56:57 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 15:56:57 +0000 Received: from localhost ([127.0.0.1]:35205 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICoz-0004sg-5a for submit@debbugs.gnu.org; Fri, 05 Mar 2021 10:56:57 -0500 Received: from mx.sdf.org ([205.166.94.24]:65529) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lICox-0004sY-Rd for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 10:56:56 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 125Fusje019605 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 15:56:55 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> Date: Fri, 05 Mar 2021 15:56:54 +0000 In-Reply-To: <83h7lpy7b7.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 05 Mar 2021 17:00:12 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Fri, 05 Mar 2021 14:04:58 +0000 >> >> > Maybe if I "stepi" inside that last libgccjit function, I will be able >> > to advance more. But something is definitely fishy here, and I'm not >> > sure what that is. Ideas for further debugging are welcome. >> >> Not many here, just two Mr. obvious observations: >> >> Recompiling comp.c at -O0 -g3 might help the broken stepping? > > comp.c (and all of Emacs) is already compiled with those options, as > this is an unoptimized build. And anyway, I'm stepping through the > code of libgccjit, not comp.c, when the crash happens. If it's crashing in libgccjit that sounds like a libgccjit bug. Just to mention, using `comp-libgccjit-reproducer' might be helpful here to produce a libgccjit only reproducer (assuming it manages to create one before crashing). If the reproducer is created I can have a look here to see if that's reproducible if you like. Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 13:44:59 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 18:44:59 +0000 Received: from localhost ([127.0.0.1]:35403 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIFRb-0000jX-D2 for submit@debbugs.gnu.org; Fri, 05 Mar 2021 13:44:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39304) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIFRZ-0000jJ-C1 for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 13:44:57 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48088) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIFRS-0008N2-V2; Fri, 05 Mar 2021 13:44:51 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2464 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIFRS-0002dQ-4o; Fri, 05 Mar 2021 13:44:50 -0500 Date: Fri, 05 Mar 2021 20:44:35 +0200 Message-Id: <83czwdxwx8.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Fri, 5 Mar 2021 15:54:07 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <83wnulyfv8.fsf@gnu.org> <83lfb1y7la.fsf@gnu.org> <83eegty6a7.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Fri, 5 Mar 2021 15:54:07 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org > > > It depends on whether the build included non-preloaded files. > > I'm afraid I don't follow. Preloaded files are dumped into emacs.pdmp, so we don't need to keep them to be able to run previously-built executables. But files that are not dumped are still valuable if you want to run those executables. All this assumed you value previously built binaries (which I do). From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 13:46:36 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 18:46:36 +0000 Received: from localhost ([127.0.0.1]:35407 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIFT9-0000me-Rv for submit@debbugs.gnu.org; Fri, 05 Mar 2021 13:46:36 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39556) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIFT7-0000mR-LK for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 13:46:34 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48111) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIFT2-0000WS-Cg; Fri, 05 Mar 2021 13:46:28 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2562 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIFT1-0002nc-5L; Fri, 05 Mar 2021 13:46:27 -0500 Date: Fri, 05 Mar 2021 20:46:12 +0200 Message-Id: <83blbxxwuj.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 05 Mar 2021 15:56:54 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Fri, 05 Mar 2021 15:56:54 +0000 > > If it's crashing in libgccjit that sounds like a libgccjit bug. If so, the bug is a glaring one, because the crash smashes the stack. > Just to mention, using `comp-libgccjit-reproducer' might be helpful > here to produce a libgccjit only reproducer (assuming it manages to > create one before crashing). > > If the reproducer is created I can have a look here to see if that's > reproducible if you like. Where do I find instructions to create a reproducer? From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 14:22:40 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 19:22:40 +0000 Received: from localhost ([127.0.0.1]:35458 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIG23-0001vr-Pj for submit@debbugs.gnu.org; Fri, 05 Mar 2021 14:22:40 -0500 Received: from mx.sdf.org ([205.166.94.24]:62888) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIG20-0001vf-7B for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 14:22:39 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 125JMYr9010177 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 19:22:34 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> Date: Fri, 05 Mar 2021 19:22:34 +0000 In-Reply-To: <83blbxxwuj.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 05 Mar 2021 20:46:12 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Fri, 05 Mar 2021 15:56:54 +0000 >> >> If it's crashing in libgccjit that sounds like a libgccjit bug. > > If so, the bug is a glaring one, because the crash smashes the stack. > >> Just to mention, using `comp-libgccjit-reproducer' might be helpful >> here to produce a libgccjit only reproducer (assuming it manages to >> create one before crashing). >> >> If the reproducer is created I can have a look here to see if that's >> reproducible if you like. > > Where do I find instructions to create a reproducer? What we have as a doc is directly in the docstring of `comp-libgccjit-reproducer', I guess we could improve it. Essentially having it bound to t while compiling produces a C file deposed where the .eln target directory. This file ELNFILENAME_libgccjit_repro.c can be just compiled linking against libgccjit to obtain the reproducer. libgccjit should never segfault so if this crashes is clearly a bug. Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 15:32:13 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 20:32:13 +0000 Received: from localhost ([127.0.0.1]:35541 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIH7N-0003eH-6T for submit@debbugs.gnu.org; Fri, 05 Mar 2021 15:32:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35990) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIH7K-0003dq-Qs for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 15:32:11 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50386) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIH7F-0007KD-8j; Fri, 05 Mar 2021 15:32:05 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1220 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIH7E-0002xQ-Hy; Fri, 05 Mar 2021 15:32:05 -0500 Date: Fri, 05 Mar 2021 22:31:48 +0200 Message-Id: <835z25xryj.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 05 Mar 2021 19:22:34 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Fri, 05 Mar 2021 19:22:34 +0000 > > Eli Zaretskii writes: > > > Where do I find instructions to create a reproducer? > > What we have as a doc is directly in the docstring of > `comp-libgccjit-reproducer', I guess we could improve it. > > Essentially having it bound to t while compiling produces a C file > deposed where the .eln target directory. > > This file ELNFILENAME_libgccjit_repro.c can be just compiled linking > against libgccjit to obtain the reproducer. > > libgccjit should never segfault so if this crashes is clearly a bug. Thanks, will do. One more question: does our code arrange for libgccjit to free heap-allocated buffers that Emacs allocates, or vice versa (libgccjit allocates memory that Emacs then frees)? And do we arrange for any callbacks from libgccjit, i.e. does libgccjit call functions implemented in Emacs? If the answer to any of these questions is YES, could you please point me to the relevant places in the code? From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 17:25:21 2021 Received: (at 46256) by debbugs.gnu.org; 5 Mar 2021 22:25:21 +0000 Received: from localhost ([127.0.0.1]:35631 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIIsr-0006NB-62 for submit@debbugs.gnu.org; Fri, 05 Mar 2021 17:25:21 -0500 Received: from mx.sdf.org ([205.166.94.24]:61003) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIIsp-0006N2-H8 for 46256@debbugs.gnu.org; Fri, 05 Mar 2021 17:25:20 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 125MPHEF017372 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Fri, 5 Mar 2021 22:25:17 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <835z25xryj.fsf@gnu.org> Date: Fri, 05 Mar 2021 22:25:17 +0000 In-Reply-To: <835z25xryj.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 05 Mar 2021 22:31:48 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Fri, 05 Mar 2021 19:22:34 +0000 >> >> Eli Zaretskii writes: >> >> > Where do I find instructions to create a reproducer? >> >> What we have as a doc is directly in the docstring of >> `comp-libgccjit-reproducer', I guess we could improve it. >> >> Essentially having it bound to t while compiling produces a C file >> deposed where the .eln target directory. >> >> This file ELNFILENAME_libgccjit_repro.c can be just compiled linking >> against libgccjit to obtain the reproducer. >> >> libgccjit should never segfault so if this crashes is clearly a bug. > > Thanks, will do. > > One more question: does our code arrange for libgccjit to free > heap-allocated buffers that Emacs allocates, or vice versa (libgccjit > allocates memory that Emacs then frees)? No, in libgccjit we always copy the input buffers as soon as they are passed, and only these copies are used and handled inside libgccjit afterwards. > And do we arrange for any > callbacks from libgccjit, i.e. does libgccjit call functions > implemented in Emacs? No, libgccjit does not offer callbacks at its interface, all is simply syncronous. For these two reasons the reproducer (if produced) is typically a good reproducer to debug in isolation any libgccjit issue. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 19:33:24 2021 Received: (at submit) by debbugs.gnu.org; 6 Mar 2021 00:33:24 +0000 Received: from localhost ([127.0.0.1]:35710 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIKsl-00010E-WD for submit@debbugs.gnu.org; Fri, 05 Mar 2021 19:33:24 -0500 Received: from lists.gnu.org ([209.51.188.17]:54920) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIKsk-000106-Eh for submit@debbugs.gnu.org; Fri, 05 Mar 2021 19:33:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42220) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIKsk-0003ZR-8M for bug-gnu-emacs@gnu.org; Fri, 05 Mar 2021 19:33:22 -0500 Received: from ciao.gmane.io ([116.202.254.214]:51906) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIKsi-0005ZO-FT for bug-gnu-emacs@gnu.org; Fri, 05 Mar 2021 19:33:21 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lIKsf-0006vE-39 for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 01:33:17 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 06 Mar 2021 00:33:10 +0000 Message-ID: <861rct5dfd.fsf@gmail.com> References: <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:N+f4YyCBwSJDR0X+Fl8irtZ1fTc= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Thu 04 Mar 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of > text editors" writes: > > [...] > >> PS ATM I see a crash too in my 32bit wide-int setup here, this is while >> executing a top_level_run function loading a .eln file. I need to >> compile a more recent gdb to look into this further but it looks >> something basic is going wrong there. > > Ok, I think this issue was that `comp-abi-hash' was not accounting for > '--with-wide-int' and on my system a wide-int binary was loading a > non-wide-int .eln. With 6444f69de2 I added > `system-configuration-options' as an input to the hash. > > This is a conservative choice, we may want to look only at > '--with-wide-int' but I'm wondering if that's really the only sensitive > input therefore having `system-configuration-options' in the equation > looked safer to me at least for now. I agree that it is a conservative choice, but that still misses features that are enabled/disabled by default in the configury. Thus the ABI hash should also include `system-configuration-features'. AndyM From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 05 20:47:41 2021 Received: (at submit) by debbugs.gnu.org; 6 Mar 2021 01:47:41 +0000 Received: from localhost ([127.0.0.1]:35778 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIM2U-0002lM-EC for submit@debbugs.gnu.org; Fri, 05 Mar 2021 20:47:41 -0500 Received: from lists.gnu.org ([209.51.188.17]:43456) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIM2S-0002lD-N6 for submit@debbugs.gnu.org; Fri, 05 Mar 2021 20:47:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIM2S-0007dY-FQ for bug-gnu-emacs@gnu.org; Fri, 05 Mar 2021 20:47:28 -0500 Received: from ciao.gmane.io ([116.202.254.214]:50236) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIM2Q-0002ZW-Uz for bug-gnu-emacs@gnu.org; Fri, 05 Mar 2021 20:47:28 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lIM2K-0003iQ-Sr for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 02:47:20 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 06 Mar 2021 01:47:09 +0000 Message-ID: <86sg593vfm.fsf@gmail.com> References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:jFQWwWBsna50qTkzzQhCDiTZbTw= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.8 (-) On Fri 05 Mar 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Pip Cet writes: > >> On Fri, Mar 5, 2021 at 9:33 AM Andrea Corallo via Bug reports for GNU >> Emacs, the Swiss army knife of text editors >> wrote: >>> Eli Zaretskii writes: >>> > So currently the only way to fill up a newly created subdirectory of >>> > native-lisp/ is to manually delete the *.elc files of all the files in >>> > lisp.mk's $shortlisp list, is that sufficient? >>> >>> Yes I think so. >>> >>> The trouble of using make for building such a system is that make is not >>> aware of the .eln filename, so it should be necessary to ask the Emacs >>> binary about that to create dynamically the precise (multiple target) >>> rule. Not very practical IMO... >> >> I do wonder whether the whole filename scheme is really the best option. >> >> IIUC, and that's a big if in this case, the main motivation for using >> hashes in the .eln filenames is that dlopen() is broken and may return >> the same handle for subsequent dlopen()s of the same name, even if the >> underlying file changed in between. > > Unfortunately this was only an unfortunate discover along the road... > this design predates that. Can you explain what the problem is with dlopen ? I have not found a complete and precise description of the problem in earlier messages as a reproducer. Is the problem that dlopen resolves to use an unlinked file kept alive by having open handles, rather than a new file with the filename used by the old file before it was unlinked ? >> Merely verifying that the ABI is correct could be done at runtime, so >> that's no reason to keep a hash in the filename. >> >> So my vague idea is this: >> >> 1. implement fixed_dlopen(), which keeps track of filenames that have >> been opened and, if necessary, creates a temporary file and loads that >> instead of its argument. >> 2. compile lisp/emacs-lisp/bytecomp.el to lisp/emacs-lisp/bytecomp.elc >> and native-lisp/emacs-lisp/bytecomp.eln > > So it was at the beginning, I think we moved away from that before the > odd dlopen behavior. As above, this odd dlopen behaviour needs to be fully explained to ensure that design choices are not driven by possible misunderstandings. >> 3. add extra code in the top level function of each .eln to check that >> the ABI is correct. >> >> This would allow us to use standard make rules. It would also make >> .eln filenames predictable. It might even draw someone's attention to >> the fact that dlopen() is broken and make them fix it. >> >> I'm probably missing other good reasons for the hashed filename scheme. > > Yep, this was discussed in length on emacs-devel, IIRC mainly on a long > standing thread called "native compilation the bird-eye view" (or > something close). Thread "Native compilation: the bird-eye view" starts here: https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg02186.html I agree with Pip that using standard make rules eases several development pains and should be used if at all possible. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 02:39:32 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 07:39:33 +0000 Received: from localhost ([127.0.0.1]:35914 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIRXA-0004mQ-Lz for submit@debbugs.gnu.org; Sat, 06 Mar 2021 02:39:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55414) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIRX8-0004mE-HM for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 02:39:30 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:34669) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIRX3-0004Rb-Ak; Sat, 06 Mar 2021 02:39:25 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2404 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIRX2-0002JZ-QZ; Sat, 06 Mar 2021 02:39:25 -0500 Date: Sat, 06 Mar 2021 09:39:13 +0200 Message-Id: <831rcsybmm.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 05 Mar 2021 22:25:17 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <835z25xryj.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Fri, 05 Mar 2021 22:25:17 +0000 > > > One more question: does our code arrange for libgccjit to free > > heap-allocated buffers that Emacs allocates, or vice versa (libgccjit > > allocates memory that Emacs then frees)? > > No, in libgccjit we always copy the input buffers as soon as they are > passed, and only these copies are used and handled inside libgccjit > afterwards. > > > And do we arrange for any > > callbacks from libgccjit, i.e. does libgccjit call functions > > implemented in Emacs? > > No, libgccjit does not offer callbacks at its interface, all is simply > syncronous. Thanks, those 2 were places where potential bugs, in particular Windows-specific ones, could hide. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 02:43:15 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 07:43:15 +0000 Received: from localhost ([127.0.0.1]:35918 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIRal-0004ry-6y for submit@debbugs.gnu.org; Sat, 06 Mar 2021 02:43:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55648) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIRaj-0004rm-N5 for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 02:43:13 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:34677) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIRae-0006cX-6s; Sat, 06 Mar 2021 02:43:08 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2639 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIRad-0002XN-Ef; Sat, 06 Mar 2021 02:43:07 -0500 Date: Sat, 06 Mar 2021 09:42:55 +0200 Message-Id: <83zgzgwww0.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-Reply-To: <861rct5dfd.fsf@gmail.com> (message from Andy Moreton on Sat, 06 Mar 2021 00:33:10 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <861rct5dfd.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andy Moreton > Date: Sat, 06 Mar 2021 00:33:10 +0000 > > > This is a conservative choice, we may want to look only at > > '--with-wide-int' but I'm wondering if that's really the only sensitive > > input therefore having `system-configuration-options' in the equation > > looked safer to me at least for now. > > I agree that it is a conservative choice, but that still misses features > that are enabled/disabled by default in the configury. > > Thus the ABI hash should also include `system-configuration-features'. Which of the features you think might affect the ABI? I reviewed them a couple of days ago and didn't find any I could convince myself should affect that, but maybe I missed something. Or maybe we should ask Andrea to try to provide a more detailed definition of what exactly constitutes the "ABI" in this case. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 04:55:07 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 09:55:07 +0000 Received: from localhost ([127.0.0.1]:36048 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lITeM-0005qK-RD for submit@debbugs.gnu.org; Sat, 06 Mar 2021 04:55:07 -0500 Received: from mail-oi1-f171.google.com ([209.85.167.171]:41419) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lITeK-0005pn-Lh for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 04:55:05 -0500 Received: by mail-oi1-f171.google.com with SMTP id y131so2557757oia.8 for <46256@debbugs.gnu.org>; Sat, 06 Mar 2021 01:55:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/c5PvP1KjW6HC1HIc1W9m6A7S/zatoo6sNettaOW/Yg=; b=M0W+rpCGpUaUSeZubmp9ZTuoBLxX7qIDtKZdVRW/SqKKtGW9ydLEwEDT315iMoCZS+ GyV9rQ8M+tHDUyoDQTZIQzuPUj0IIi6FmRy8M6rAkTwyW5Kg9ykauM3eMXyaUvMh3vuF 8ldsTnovin3K1Ni9M2jz2ISZg6cH9+sfYcYw9mlB70qzif/PFrYsPxUNxQdzeIyW2SHn +WplbbbMJc7r2BrSoihfgNU3qc/sS8xXaZPg6Ps7e+Qx6xe2qWFKUEqT+62HE5psAXvF B4DZJpyqnuN+SHBWRD6NMWB2+v17aXI6Z+fNioEjwYpnxZq60/0SjWTL7EA221whLHOm yeCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/c5PvP1KjW6HC1HIc1W9m6A7S/zatoo6sNettaOW/Yg=; b=WjBjpDU0EDB+L2Bn3MryaPSb0iO0SZypiJkI1ehcUm3Vy5ntkTRzdtp0Q+5YDHkY4v TBpl4vy5oNHgRa73E81n1pA9POvSfQ4EzNpguzqDUY+e64fCiGLdUkdq6eqGzM6ItkJp br18zA8LV1y3zOeiwGf0P+CBEItFcruLPp16SNDrctEQmifWv7oKXqQGjK3EMDW/egZ6 IcQz2FuYQW0Z9CQ2FBqXDarWdvcw3jNIomf2svYE+yMdJ8fk65v4JJMQP4OzLgUcL1dU hAonQLSFnrXkNVoI4GQOEPHIlddVDt7/ntwJ1Wz1t/2TDAwGGGTN9lwYp+leyl6tQWvp zg8A== X-Gm-Message-State: AOAM530nI76fQXxhMZ0zPrbfQ0aK66C1cD9EzwPxbbm7H2EUR5OL/W5L T7AQ81EdcWOcGqab6gJ27QfkVJl5Vy3boI7SuW0= X-Google-Smtp-Source: ABdhPJwbMgpJJ3xNggtvyYxqDbGmwSJw4k0cPXDZBoh8KIS4m1g/q2I8+Ixrl1Ok7C8Lxgwvm2tDUrl6h44d6pJl2GQ= X-Received: by 2002:aca:d905:: with SMTP id q5mr10013382oig.30.1615024498977; Sat, 06 Mar 2021 01:54:58 -0800 (PST) MIME-Version: 1.0 References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <86sg593vfm.fsf@gmail.com> In-Reply-To: <86sg593vfm.fsf@gmail.com> From: Pip Cet Date: Sat, 6 Mar 2021 09:54:22 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andy Moreton Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sat, Mar 6, 2021 at 1:48 AM Andy Moreton wrote: > On Fri 05 Mar 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: [Does anyone know where this via "name" comes from? I believe it is Google's joke which somehow makes it through into the gmail interface...] > Is the problem that dlopen resolves to use an unlinked file kept alive > by having open handles, rather than a new file with the filename used > by the old file before it was unlinked ? I believe so, and that's what I think we can work around. IIUC, we don't actually call dlclose() until we GC (and might not do so even then, since GC is conservative). > >> Merely verifying that the ABI is correct could be done at runtime, so > >> that's no reason to keep a hash in the filename. > >> > >> So my vague idea is this: > >> > >> 1. implement fixed_dlopen(), which keeps track of filenames that have > >> been opened and, if necessary, creates a temporary file and loads that > >> instead of its argument. > >> 2. compile lisp/emacs-lisp/bytecomp.el to lisp/emacs-lisp/bytecomp.elc > >> and native-lisp/emacs-lisp/bytecomp.eln > > > > So it was at the beginning, I think we moved away from that before the > > odd dlopen behavior. > > As above, this odd dlopen behaviour needs to be fully explained to > ensure that design choices are not driven by possible misunderstandings. I'm unsure what Andrea is saying here; is the dlopen thing relevant to the decision to use hashes in names, or isn't it? > >> 3. add extra code in the top level function of each .eln to check that > >> the ABI is correct. > >> > >> This would allow us to use standard make rules. It would also make > >> .eln filenames predictable. It might even draw someone's attention to > >> the fact that dlopen() is broken and make them fix it. > >> > >> I'm probably missing other good reasons for the hashed filename scheme. > > > > Yep, this was discussed in length on emacs-devel, IIRC mainly on a long > > standing thread called "native compilation the bird-eye view" (or > > something close). > > Thread "Native compilation: the bird-eye view" starts here: > https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg02186.html Thanks for the link. I do think it would be good to summarize the reasons for the hash-based naming scheme somewhere, because I've read the thread and all I've taken away is that the dlopen oddity requires a workaround (but, really, a different one). I don't think I've read all of the followup threads, though. > I agree with Pip that using standard make rules eases several development > pains and should be used if at all possible. What I think should be discussed, or should have been discussed, is whether we really need hashes in the names of files in the Emacs build tree. Whether we need them for installed files, or for files in the eln cache, is a separate issue. A second question is whether it's really worth it to build the elc and eln files at the same time. Make would be a lot happier not having two targets in the rule, and so would I. But if this has been discussed and resolved, we merely need to document the decision and the reasons for it rather than reopening discussion because I missed it the first time around. If someone can provide a link to the relevant messages, I'd be glad to try. Pip From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 05:30:46 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 10:30:46 +0000 Received: from localhost ([127.0.0.1]:36092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIUCs-0000Pq-Aj for submit@debbugs.gnu.org; Sat, 06 Mar 2021 05:30:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50260) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIUCr-0000Pe-Ap for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 05:30:45 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:36859) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIUCl-0001uy-Kd; Sat, 06 Mar 2021 05:30:39 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1256 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIUCj-0006pW-4r; Sat, 06 Mar 2021 05:30:39 -0500 Date: Sat, 06 Mar 2021 12:30:25 +0200 Message-Id: <83lfb0wp4u.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Sat, 6 Mar 2021 09:54:22 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <86sg593vfm.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Sat, 6 Mar 2021 09:54:22 +0000 > Cc: 46256@debbugs.gnu.org > > On Sat, Mar 6, 2021 at 1:48 AM Andy Moreton wrote: > > On Fri 05 Mar 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > > [Does anyone know where this via "name" comes from? I believe it is > Google's joke which somehow makes it through into the gmail > interface...] It's the GNU Mailman's maintainers reaction to the DMARC/DKIM lunacy. See https://lists.gnu.org/archive/html/savannah-hackers-public/2019-06/msg00018.html From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 07:09:46 2021 Received: (at submit) by debbugs.gnu.org; 6 Mar 2021 12:09:46 +0000 Received: from localhost ([127.0.0.1]:36157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIVkg-0003BC-GL for submit@debbugs.gnu.org; Sat, 06 Mar 2021 07:09:46 -0500 Received: from lists.gnu.org ([209.51.188.17]:46298) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIVke-0003B2-AN for submit@debbugs.gnu.org; Sat, 06 Mar 2021 07:09:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55724) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIVke-0003SU-5b for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 07:09:44 -0500 Received: from ciao.gmane.io ([116.202.254.214]:46752) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIVkZ-0003mW-Nn for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 07:09:40 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lIVkX-0000Jy-ON for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 13:09:37 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 06 Mar 2021 12:09:30 +0000 Message-ID: <86sg58wkjp.fsf@gmail.com> References: <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <861rct5dfd.fsf@gmail.com> <83zgzgwww0.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:Bevsc6xKijCyDCh+q2RpqJp9Qe8= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Sat 06 Mar 2021, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Sat, 06 Mar 2021 00:33:10 +0000 >> >> > This is a conservative choice, we may want to look only at >> > '--with-wide-int' but I'm wondering if that's really the only sensitive >> > input therefore having `system-configuration-options' in the equation >> > looked safer to me at least for now. >> >> I agree that it is a conservative choice, but that still misses features >> that are enabled/disabled by default in the configury. >> >> Thus the ABI hash should also include `system-configuration-features'. > > Which of the features you think might affect the ABI? I reviewed them > a couple of days ago and didn't find any I could convince myself > should affect that, but maybe I missed something. As a reasonably recent example, adding bignum support by default added "GMP" to `system-configuration-features' when rebuilding after pulling upstream changes, without the user changing the configure command line saved in `system-configuration-options'. That kind of change may not happen often, but for developers building commits near the switchover point (e.g. git bisect), it adds a silent incompatibility that may be hard to diagnose. > Or maybe we should ask Andrea to try to provide a more detailed > definition of what exactly constitutes the "ABI" in this case. Adding some design notes notes to the repo on this and other aspects of the design would indeed be useful. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 07:15:40 2021 Received: (at submit) by debbugs.gnu.org; 6 Mar 2021 12:15:40 +0000 Received: from localhost ([127.0.0.1]:36163 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIVqO-0003Ms-6R for submit@debbugs.gnu.org; Sat, 06 Mar 2021 07:15:40 -0500 Received: from lists.gnu.org ([209.51.188.17]:46926) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIVqM-0003Mk-UZ for submit@debbugs.gnu.org; Sat, 06 Mar 2021 07:15:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56584) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIVqM-0004Pf-Pa for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 07:15:38 -0500 Received: from ciao.gmane.io ([116.202.254.214]:41012) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIVqL-0007iN-Ef for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 07:15:38 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lIVqJ-0007Or-7b for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 13:15:35 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 06 Mar 2021 12:15:27 +0000 Message-ID: <86mtvgwk9s.fsf@gmail.com> References: <861rd1tbpa.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <86sg593vfm.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:tQ7ptVzGudtcaetd7e0z3Y+/6Ok= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Sat 06 Mar 2021, Pip Cet wrote: > On Sat, Mar 6, 2021 at 1:48 AM Andy Moreton wrote: >> On Fri 05 Mar 2021, Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > > [Does anyone know where this via "name" comes from? I believe it is > Google's joke which somehow makes it through into the gmail > interface...] > >> Is the problem that dlopen resolves to use an unlinked file kept alive >> by having open handles, rather than a new file with the filename used >> by the old file before it was unlinked ? > > I believe so, and that's what I think we can work around. > > IIUC, we don't actually call dlclose() until we GC (and might not do > so even then, since GC is conservative). In that case keeping the handles open is the real bug here, and it would be better to focus on how to ensure that resources are released corectly. Is there a similar issue in the dynamic modules interface ? AndyM From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 08:05:56 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 13:05:56 +0000 Received: from localhost ([127.0.0.1]:36244 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIWd1-0002a4-Sg for submit@debbugs.gnu.org; Sat, 06 Mar 2021 08:05:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46882) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIWcz-0002Zr-VQ for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 08:05:54 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38043) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIWcu-0004xr-J1; Sat, 06 Mar 2021 08:05:48 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2880 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIWcu-0005jE-0B; Sat, 06 Mar 2021 08:05:48 -0500 Date: Sat, 06 Mar 2021 15:05:35 +0200 Message-Id: <83eegswhy8.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-Reply-To: <86sg58wkjp.fsf@gmail.com> (message from Andy Moreton on Sat, 06 Mar 2021 12:09:30 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <861rct5dfd.fsf@gmail.com> <83zgzgwww0.fsf@gnu.org> <86sg58wkjp.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andy Moreton > Date: Sat, 06 Mar 2021 12:09:30 +0000 > > >> Thus the ABI hash should also include `system-configuration-features'. > > > > Which of the features you think might affect the ABI? I reviewed them > > a couple of days ago and didn't find any I could convince myself > > should affect that, but maybe I missed something. > > As a reasonably recent example, adding bignum support by default added > "GMP" to `system-configuration-features' when rebuilding after pulling > upstream changes, without the user changing the configure command line > saved in `system-configuration-options'. AFAIU, such changes only affect *.eln files if we add new primitives to Emacs or change existing primitives, and those changes are already captured by the ABI hash. Right? From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 08:10:55 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 13:10:55 +0000 Received: from localhost ([127.0.0.1]:36248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIWhr-0002hC-IP for submit@debbugs.gnu.org; Sat, 06 Mar 2021 08:10:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47650) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIWhq-0002h0-3t for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 08:10:54 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38084) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIWhk-00081s-Mg; Sat, 06 Mar 2021 08:10:48 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3183 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIWhk-0005z1-1Y; Sat, 06 Mar 2021 08:10:48 -0500 Date: Sat, 06 Mar 2021 15:10:32 +0200 Message-Id: <83czwcwhpz.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-Reply-To: <86mtvgwk9s.fsf@gmail.com> (message from Andy Moreton on Sat, 06 Mar 2021 12:15:27 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <86sg593vfm.fsf@gmail.com> <86mtvgwk9s.fsf@gmail.com> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andy Moreton > Date: Sat, 06 Mar 2021 12:15:27 +0000 > > > IIUC, we don't actually call dlclose() until we GC (and might not do > > so even then, since GC is conservative). > > In that case keeping the handles open is the real bug here, and it would > be better to focus on how to ensure that resources are released corectly. > > Is there a similar issue in the dynamic modules interface ? Which problem is that? At least on MS-Windows, a DLL remains open for as long as the program that loaded it keeps running. How is the situation discussed here different? From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 09:39:15 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 14:39:15 +0000 Received: from localhost ([127.0.0.1]:36339 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIY5L-0004vR-FS for submit@debbugs.gnu.org; Sat, 06 Mar 2021 09:39:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60702) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIY5J-0004vD-Tv for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 09:39:13 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39317) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIY5E-0007v7-B3; Sat, 06 Mar 2021 09:39:08 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4642 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIY5B-0006NU-2V; Sat, 06 Mar 2021 09:39:08 -0500 Date: Sat, 06 Mar 2021 16:38:52 +0200 Message-Id: <83a6rgwdmr.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Fri, 05 Mar 2021 19:22:34 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Fri, 05 Mar 2021 19:22:34 +0000 > > What we have as a doc is directly in the docstring of > `comp-libgccjit-reproducer', I guess we could improve it. > > Essentially having it bound to t while compiling produces a C file > deposed where the .eln target directory. The reproducer file is attached. It is large, so I compressed it. Let me know if you see there anything that could explain the problem. > This file ELNFILENAME_libgccjit_repro.c can be just compiled linking > against libgccjit to obtain the reproducer. "To obtain the reproducer" meaning that the compiled and linked program should crash in the same way is Emacs does? I thought we crash while compiling the file and linking it to produce a shared library, not while running it. Right? > libgccjit should never segfault so if this crashes is clearly a bug. Let's see what you can find in the reproducer file. Meanwhile, I see that: . the file has DOS CRLF end-of-line format, because libgccjit opens the reproducer file in the default text mode . the file includes control characters: ^A, ^B, ^M, and others -- what are those for? I hope we cannot have ^Z there, because AFAIK text-mode writes will stop at the first such byte More generally, what is the relation between the contents of the reproducer file and the source the native compilation sees when we call gcc_jit_context_compile_to_file? Do we submit a similar file to GCC or something? IOW, can any weird characters I see in the reproducer be relevant to the actual compilation (and thus to the crash)? Thanks. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=subr-x-02dfef32-17faeb1d_libgccjit_repro.c.xz Content-Transfer-Encoding: base64 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 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 10:19:04 2021 Received: (at submit) by debbugs.gnu.org; 6 Mar 2021 15:19:04 +0000 Received: from localhost ([127.0.0.1]:38104 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIYhs-0006MP-Et for submit@debbugs.gnu.org; Sat, 06 Mar 2021 10:19:04 -0500 Received: from lists.gnu.org ([209.51.188.17]:58766) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIYhq-0006MH-Nk for submit@debbugs.gnu.org; Sat, 06 Mar 2021 10:19:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57168) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIYhp-0003CC-3H for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 10:19:01 -0500 Received: from ciao.gmane.io ([116.202.254.214]:52684) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIYhn-000083-I4 for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 10:19:00 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lIYhl-0009n8-Jq for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 16:18:57 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 06 Mar 2021 15:18:52 +0000 Message-ID: <867dmkl38j.fsf@gmail.com> References: <861rd1tbpa.fsf@gmail.com> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <86sg593vfm.fsf@gmail.com> <86mtvgwk9s.fsf@gmail.com> <83czwcwhpz.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:qzBK/yP58aFog74p1lcSulm/BzE= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Sat 06 Mar 2021, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Sat, 06 Mar 2021 12:15:27 +0000 >> >> > IIUC, we don't actually call dlclose() until we GC (and might not do >> > so even then, since GC is conservative). >> >> In that case keeping the handles open is the real bug here, and it would >> be better to focus on how to ensure that resources are released corectly. >> >> Is there a similar issue in the dynamic modules interface ? > > Which problem is that? At least on MS-Windows, a DLL remains open for > as long as the program that loaded it keeps running. How is the > situation discussed here different? Keeping the DLL loaded happens with build-time linking, but this discussion is about runtime-linking of shared libraries: dlopen, dlsym, dlclose (or for Windows: LoadLibary, GetProcAddress, FreeLibrary). We need to hear from Andrea to be sure of the precise details. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 10:35:37 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 15:35:37 +0000 Received: from localhost ([127.0.0.1]:38118 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIYxt-0006lA-72 for submit@debbugs.gnu.org; Sat, 06 Mar 2021 10:35:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41980) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIYxr-0006kw-Fb for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 10:35:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40434) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIYxm-0007XU-95; Sat, 06 Mar 2021 10:35:30 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4310 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIYxl-0001Eq-HB; Sat, 06 Mar 2021 10:35:30 -0500 Date: Sat, 06 Mar 2021 17:35:15 +0200 Message-Id: <835z24wb0s.fsf@gnu.org> From: Eli Zaretskii To: akrl@sdf.org In-Reply-To: <83a6rgwdmr.fsf@gnu.org> (message from Eli Zaretskii on Sat, 06 Mar 2021 16:38:52 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Sat, 06 Mar 2021 16:38:52 +0200 > From: Eli Zaretskii > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > What we have as a doc is directly in the docstring of > > `comp-libgccjit-reproducer', I guess we could improve it. > > > > Essentially having it bound to t while compiling produces a C file > > deposed where the .eln target directory. > > The reproducer file is attached. It is large, so I compressed it. > Let me know if you see there anything that could explain the problem. More info: if I set comp-speed to 0 or 1, the compilation of subr-x.el doesn't crash. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 10:47:04 2021 Received: (at submit) by debbugs.gnu.org; 6 Mar 2021 15:47:04 +0000 Received: from localhost ([127.0.0.1]:38125 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIZ8y-00071y-G6 for submit@debbugs.gnu.org; Sat, 06 Mar 2021 10:47:04 -0500 Received: from lists.gnu.org ([209.51.188.17]:45232) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIZ8w-00071j-Q9 for submit@debbugs.gnu.org; Sat, 06 Mar 2021 10:47:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33494) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIZ8u-0004wy-HR for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 10:47:02 -0500 Received: from ciao.gmane.io ([116.202.254.214]:38584) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIZ8t-00046M-8M for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 10:47:00 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lIZ8q-0009j3-OD for bug-gnu-emacs@gnu.org; Sat, 06 Mar 2021 16:46:56 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Date: Sat, 06 Mar 2021 15:46:46 +0000 Message-ID: <861rcsl1y1.fsf@gmail.com> References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <861rct5dfd.fsf@gmail.com> <83zgzgwww0.fsf@gnu.org> <86sg58wkjp.fsf@gmail.com> <83eegswhy8.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cancel-Lock: sha1:Tj/N1ce9NQLEpUmwU9z28s5GDwQ= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.9 (/) On Sat 06 Mar 2021, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Sat, 06 Mar 2021 12:09:30 +0000 >> >> >> Thus the ABI hash should also include `system-configuration-features'. >> > >> > Which of the features you think might affect the ABI? I reviewed them >> > a couple of days ago and didn't find any I could convince myself >> > should affect that, but maybe I missed something. >> >> As a reasonably recent example, adding bignum support by default added >> "GMP" to `system-configuration-features' when rebuilding after pulling >> upstream changes, without the user changing the configure command line >> saved in `system-configuration-options'. > > AFAIU, such changes only affect *.eln files if we add new primitives > to Emacs or change existing primitives, and those changes are already > captured by the ABI hash. Right? Perhaps you are right, but we need some input from Andrea on whether these changes affect the ABI. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 12:47:36 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 17:47:36 +0000 Received: from localhost ([127.0.0.1]:38240 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIb1b-0001Us-VI for submit@debbugs.gnu.org; Sat, 06 Mar 2021 12:47:36 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35210) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIb1b-0001Ug-06 for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 12:47:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43165) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIb1V-0005jN-Gd; Sat, 06 Mar 2021 12:47:29 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4649 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIb1T-00011S-5I; Sat, 06 Mar 2021 12:47:29 -0500 Date: Sat, 06 Mar 2021 19:47:14 +0200 Message-Id: <83y2f0uqcd.fsf@gnu.org> From: Eli Zaretskii To: akrl@sdf.org In-Reply-To: <835z24wb0s.fsf@gnu.org> (message from Eli Zaretskii on Sat, 06 Mar 2021 17:35:15 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Sat, 06 Mar 2021 17:35:15 +0200 > From: Eli Zaretskii > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > The reproducer file is attached. It is large, so I compressed it. > > Let me know if you see there anything that could explain the problem. > > More info: if I set comp-speed to 0 or 1, the compilation of subr-x.el > doesn't crash. Here's the smallest part of subr-x which causes the crash: ;;; subr-x.el --- extra Lisp functions -*- lexical-binding:t -*- (defun internal--build-bindings (bindings) "Check and build conditional value forms for BINDINGS." (let ((prev-var t)) (mapcar (lambda (binding) (let ((binding (internal--build-binding binding prev-var))) (setq prev-var (car binding)) binding)) bindings))) Interestingly, if I remove the first line, there's no crash. So lexical-binding has something to do with this. I cannot see what could trigger the crash. The fact that 'binding' is used both as an argument and as the variable which is bound to the return value, perhaps? Let me know if you want the C reproducer for this minimal file. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 13:30:10 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 18:30:10 +0000 Received: from localhost ([127.0.0.1]:38281 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbgo-0004e9-7D for submit@debbugs.gnu.org; Sat, 06 Mar 2021 13:30:10 -0500 Received: from mx.sdf.org ([205.166.94.24]:61744) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbgl-0004cy-5q for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 13:30:08 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126IU5h0005583 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 18:30:05 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> Date: Sat, 06 Mar 2021 18:30:05 +0000 In-Reply-To: <83a6rgwdmr.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 16:38:52 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Fri, 05 Mar 2021 19:22:34 +0000 >> >> What we have as a doc is directly in the docstring of >> `comp-libgccjit-reproducer', I guess we could improve it. >> >> Essentially having it bound to t while compiling produces a C file >> deposed where the .eln target directory. > > The reproducer file is attached. It is large, so I compressed it. > Let me know if you see there anything that could explain the problem. > >> This file ELNFILENAME_libgccjit_repro.c can be just compiled linking >> against libgccjit to obtain the reproducer. > > "To obtain the reproducer" meaning that the compiled and linked > program should crash in the same way is Emacs does? I thought we > crash while compiling the file and linking it to produce a shared > library, not while running it. Right? Yes, the compiled program when executed will replay the same compilation attempted by Emacs and therefore if is a libgccjit fault it should crash. Does the reproducer crash when executed on your system? >> libgccjit should never segfault so if this crashes is clearly a bug. > > Let's see what you can find in the reproducer file. Thanks, I'm going to have a look if I can reproduce here. > Meanwhile, I see that: > > . the file has DOS CRLF end-of-line format, because libgccjit opens > the reproducer file in the default text mode > . the file includes control characters: ^A, ^B, ^M, and others -- > what are those for? I hope we cannot have ^Z there, because AFAIK > text-mode writes will stop at the first such byte > > More generally, what is the relation between the contents of the > reproducer file and the source the native compilation sees when we > call gcc_jit_context_compile_to_file? Do we submit a similar file to > GCC or something? The reproducer file is a file that is meant to recreate the same libgccjit IR and attempt a compilation with that. In practice it calls the same functions we call at the interface with libgccjit describing the code we want to compile and attempt to perform a compilation. > IOW, can any weird characters I see in the > reproducer be relevant to the actual compilation (and thus to the > crash)? I'm not sure why these characters are there but I don't think they are relevant to the crash. Thanks! Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 13:31:08 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 18:31:08 +0000 Received: from localhost ([127.0.0.1]:38286 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbhk-0004fp-JD for submit@debbugs.gnu.org; Sat, 06 Mar 2021 13:31:08 -0500 Received: from mx.sdf.org ([205.166.94.24]:61673) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbhi-0004fg-Jb for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 13:31:07 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126IV5jN007964 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 18:31:06 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> Date: Sat, 06 Mar 2021 18:31:05 +0000 In-Reply-To: <83y2f0uqcd.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 19:47:14 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> Date: Sat, 06 Mar 2021 17:35:15 +0200 >> From: Eli Zaretskii >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> >> > The reproducer file is attached. It is large, so I compressed it. >> > Let me know if you see there anything that could explain the problem. >> >> More info: if I set comp-speed to 0 or 1, the compilation of subr-x.el >> doesn't crash. > > Here's the smallest part of subr-x which causes the crash: > > ;;; subr-x.el --- extra Lisp functions -*- lexical-binding:t -*- > > (defun internal--build-bindings (bindings) > "Check and build conditional value forms for BINDINGS." > (let ((prev-var t)) > (mapcar (lambda (binding) > (let ((binding (internal--build-binding binding prev-var))) > (setq prev-var (car binding)) > binding)) > bindings))) > > Interestingly, if I remove the first line, there's no crash. So > lexical-binding has something to do with this. > > I cannot see what could trigger the crash. The fact that 'binding' is > used both as an argument and as the variable which is bound to the > return value, perhaps? > > Let me know if you want the C reproducer for this minimal file. Yes please. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 13:37:17 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 18:37:17 +0000 Received: from localhost ([127.0.0.1]:38307 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbnh-0004pO-2W for submit@debbugs.gnu.org; Sat, 06 Mar 2021 13:37:17 -0500 Received: from mx.sdf.org ([205.166.94.24]:61387) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbnf-0004pG-2g for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 13:37:15 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126IbEZg014660 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 18:37:14 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <86sg593vfm.fsf@gmail.com> <86mtvgwk9s.fsf@gmail.com> <83czwcwhpz.fsf@gnu.org> <867dmkl38j.fsf@gmail.com> Date: Sat, 06 Mar 2021 18:37:14 +0000 In-Reply-To: <867dmkl38j.fsf@gmail.com> (Andy Moreton's message of "Sat, 06 Mar 2021 15:18:52 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > On Sat 06 Mar 2021, Eli Zaretskii wrote: > >>> From: Andy Moreton >>> Date: Sat, 06 Mar 2021 12:15:27 +0000 >>> >>> > IIUC, we don't actually call dlclose() until we GC (and might not do >>> > so even then, since GC is conservative). >>> >>> In that case keeping the handles open is the real bug here, and it would >>> be better to focus on how to ensure that resources are released corectly. >>> >>> Is there a similar issue in the dynamic modules interface ? >> >> Which problem is that? At least on MS-Windows, a DLL remains open for >> as long as the program that loaded it keeps running. How is the >> situation discussed here different? > > Keeping the DLL loaded happens with build-time linking, but this > discussion is about runtime-linking of shared libraries: dlopen, dlsym, > dlclose (or for Windows: LoadLibary, GetProcAddress, FreeLibrary). > > We need to hear from Andrea to be sure of the precise details. > > AndyM Hi Andy, Each eln file is 'dlclosed' if/when the compilation unit (CU) is garbage collected. The the CU is a Lisp object and every native compiled Lisp function holds a reference to it, as a consequence the CU is GC'ed only when we have no more native compiled Lisp function belonging to it live. Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 13:44:26 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 18:44:26 +0000 Received: from localhost ([127.0.0.1]:38324 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbuc-000515-0c for submit@debbugs.gnu.org; Sat, 06 Mar 2021 13:44:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43916) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbub-00050t-5e for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 13:44:25 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:44386) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIbuV-0005Y3-UU; Sat, 06 Mar 2021 13:44:19 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4605 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIbuU-0004Vw-A5; Sat, 06 Mar 2021 13:44:18 -0500 Date: Sat, 06 Mar 2021 20:44:06 +0200 Message-Id: <83k0qkunpl.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 06 Mar 2021 18:30:05 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sat, 06 Mar 2021 18:30:05 +0000 > > >> This file ELNFILENAME_libgccjit_repro.c can be just compiled linking > >> against libgccjit to obtain the reproducer. > > > > "To obtain the reproducer" meaning that the compiled and linked > > program should crash in the same way is Emacs does? I thought we > > crash while compiling the file and linking it to produce a shared > > library, not while running it. Right? > > Yes, the compiled program when executed will replay the same compilation > attempted by Emacs and therefore if is a libgccjit fault it should > crash. > > Does the reproducer crash when executed on your system? Yes, it does. > > More generally, what is the relation between the contents of the > > reproducer file and the source the native compilation sees when we > > call gcc_jit_context_compile_to_file? Do we submit a similar file to > > GCC or something? > > The reproducer file is a file that is meant to recreate the same > libgccjit IR and attempt a compilation with that. In practice it calls > the same functions we call at the interface with libgccjit describing > the code we want to compile and attempt to perform a compilation. But any issues caused by actually writing the reproducer to a disk file, like text-mode conversions and quirks, aren't relevant, right? From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 13:49:13 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 18:49:13 +0000 Received: from localhost ([127.0.0.1]:38336 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbzF-0007EC-Qv for submit@debbugs.gnu.org; Sat, 06 Mar 2021 13:49:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44816) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIbzE-0007E0-JN for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 13:49:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:44513) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIbz9-00072u-BQ; Sat, 06 Mar 2021 13:49:07 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4891 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIbz1-0004z3-8C; Sat, 06 Mar 2021 13:49:07 -0500 Date: Sat, 06 Mar 2021 20:48:47 +0200 Message-Id: <83im64unhs.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 06 Mar 2021 18:31:05 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sat, 06 Mar 2021 18:31:05 +0000 > > > ;;; subr-x.el --- extra Lisp functions -*- lexical-binding:t -*- > > > > (defun internal--build-bindings (bindings) > > "Check and build conditional value forms for BINDINGS." > > (let ((prev-var t)) > > (mapcar (lambda (binding) > > (let ((binding (internal--build-binding binding prev-var))) > > (setq prev-var (car binding)) > > binding)) > > bindings))) > > > > Interestingly, if I remove the first line, there's no crash. So > > lexical-binding has something to do with this. > > > > I cannot see what could trigger the crash. The fact that 'binding' is > > used both as an argument and as the variable which is bound to the > > return value, perhaps? > > > > Let me know if you want the C reproducer for this minimal file. > > Yes please. Attached below. When compiled with -O2 and linked against libgccjit, it crashes with the following backtrace: Program received signal SIGSEGV, Segmentation fault. 0x70f5ac3e in libgccjit-0!_Z17gimple_build_callP9tree_nodejz () from D:\usr\bin\libgccjit-0.dll (gdb) bt #0 0x70f5ac3e in libgccjit-0!_Z17gimple_build_callP9tree_nodejz () from D:\usr\bin\libgccjit-0.dll #1 0x7190fa7b in libgccjit-0!_ZN19evrp_range_analyzer5leaveEP15basic_block_def () from D:\usr\bin\libgccjit-0.dll #2 0x71910eef in libgccjit-0!_Z36stmt_uses_0_or_null_in_undefined_wayP6gimple () from D:\usr\bin\libgccjit-0.dll #3 0x710fba2c in libgccjit-0!_Z16execute_one_passP8opt_pass () from D:\usr\bin\libgccjit-0.dll #4 0x710fc171 in libgccjit-0!_Z16execute_one_passP8opt_pass () from D:\usr\bin\libgccjit-0.dll #5 0x710fc181 in libgccjit-0!_Z16execute_one_passP8opt_pass () from D:\usr\bin\libgccjit-0.dll #6 0x710fc1ad in libgccjit-0!_Z17execute_pass_listP8functionP8opt_pass () from D:\usr\bin\libgccjit-0.dll #7 0x70e3770d in libgccjit-0!_ZN11cgraph_node6expandEv () from D:\usr\bin\libgccjit-0.dll #8 0x70e386c9 in libgccjit-0!_ZN12symbol_table15output_weakrefsEv () from D:\usr\bin\libgccjit-0.dll #9 0x70e3a6f1 in libgccjit-0!_ZN12symbol_table25finalize_compilation_unitEv () from D:\usr\bin\libgccjit-0.dll #10 0x711bc551 in libgccjit-0!_ZN5timer3popE12timevar_id_t () from D:\usr\bin\libgccjit-0.dll #11 0x71b29e4c in libgccjit-0!_ZN6toplev4mainEiPPc () from D:\usr\bin\libgccjit-0.dll #12 0x70da78ca in libgccjit-0!_ZN3gcc3jit8playback7context7compileEv () from D:\usr\bin\libgccjit-0.dll #13 0x70d9b836 in libgccjit-0!_ZN3gcc3jit9recording7context7compileEv () from D:\usr\bin\libgccjit-0.dll #14 0x70d8e193 in libgccjit-0!gcc_jit_context_compile () from D:\usr\bin\libgccjit-0.dll #15 0x00445f16 in main () --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=subr-x-4ecfe746-fd9c72a9_libgccjit_repro.c.xz Content-Transfer-Encoding: base64 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 qwajq7YBAAAAGEFpahQXOzADAAAAAARZWg== --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 14:19:19 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 19:19:19 +0000 Received: from localhost ([127.0.0.1]:38359 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcSN-0007w3-21 for submit@debbugs.gnu.org; Sat, 06 Mar 2021 14:19:19 -0500 Received: from mx.sdf.org ([205.166.94.24]:59415) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcSL-0007vv-Dv for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 14:19:18 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126JJGeU007647 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 19:19:16 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> Date: Sat, 06 Mar 2021 19:19:16 +0000 In-Reply-To: <83im64unhs.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 20:48:47 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 18:31:05 +0000 >> >> > ;;; subr-x.el --- extra Lisp functions -*- lexical-binding:t -*- >> > >> > (defun internal--build-bindings (bindings) >> > "Check and build conditional value forms for BINDINGS." >> > (let ((prev-var t)) >> > (mapcar (lambda (binding) >> > (let ((binding (internal--build-binding binding prev-var))) >> > (setq prev-var (car binding)) >> > binding)) >> > bindings))) >> > >> > Interestingly, if I remove the first line, there's no crash. So >> > lexical-binding has something to do with this. >> > >> > I cannot see what could trigger the crash. The fact that 'binding' is >> > used both as an argument and as the variable which is bound to the >> > return value, perhaps? >> > >> > Let me know if you want the C reproducer for this minimal file. >> >> Yes please. > > Attached below. > > When compiled with -O2 and linked against libgccjit, it crashes with > the following backtrace: Okay I believe this is clearly a libgccjit bug. The attached reproducer is not crashing on my 32bit setup based on a recent GCC trunk. Could you remind me exactly which libgccjit version are you using? Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 14:21:30 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 19:21:30 +0000 Received: from localhost ([127.0.0.1]:38366 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcUT-0007zr-Rt for submit@debbugs.gnu.org; Sat, 06 Mar 2021 14:21:30 -0500 Received: from mx.sdf.org ([205.166.94.24]:59332) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcUR-0007zh-8h for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 14:21:28 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126JLQol024070 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 19:21:26 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <83k0qkunpl.fsf@gnu.org> Date: Sat, 06 Mar 2021 19:21:26 +0000 In-Reply-To: <83k0qkunpl.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 20:44:06 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 18:30:05 +0000 >> >> >> This file ELNFILENAME_libgccjit_repro.c can be just compiled linking >> >> against libgccjit to obtain the reproducer. >> > >> > "To obtain the reproducer" meaning that the compiled and linked >> > program should crash in the same way is Emacs does? I thought we >> > crash while compiling the file and linking it to produce a shared >> > library, not while running it. Right? >> >> Yes, the compiled program when executed will replay the same compilation >> attempted by Emacs and therefore if is a libgccjit fault it should >> crash. >> >> Does the reproducer crash when executed on your system? > > Yes, it does. > >> > More generally, what is the relation between the contents of the >> > reproducer file and the source the native compilation sees when we >> > call gcc_jit_context_compile_to_file? Do we submit a similar file to >> > GCC or something? >> >> The reproducer file is a file that is meant to recreate the same >> libgccjit IR and attempt a compilation with that. In practice it calls >> the same functions we call at the interface with libgccjit describing >> the code we want to compile and attempt to perform a compilation. > > But any issues caused by actually writing the reproducer to a disk > file, like text-mode conversions and quirks, aren't relevant, right? Yes that's correct, but unless the C compiler can't parse correctly this file it should work. Do you think this is the case? Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 14:31:50 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 19:31:50 +0000 Received: from localhost ([127.0.0.1]:38379 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIceU-0008GN-69 for submit@debbugs.gnu.org; Sat, 06 Mar 2021 14:31:50 -0500 Received: from mx.sdf.org ([205.166.94.24]:58751) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIceQ-0008GA-8b for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 14:31:49 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126JViqO006469 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 19:31:45 GMT From: Andrea Corallo To: Andy Moreton Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <861rct5dfd.fsf@gmail.com> <83zgzgwww0.fsf@gnu.org> <86sg58wkjp.fsf@gmail.com> <83eegswhy8.fsf@gnu.org> <861rcsl1y1.fsf@gmail.com> Date: Sat, 06 Mar 2021 19:31:44 +0000 In-Reply-To: <861rcsl1y1.fsf@gmail.com> (Andy Moreton's message of "Sat, 06 Mar 2021 15:46:46 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Andy Moreton writes: > On Sat 06 Mar 2021, Eli Zaretskii wrote: > >>> From: Andy Moreton >>> Date: Sat, 06 Mar 2021 12:09:30 +0000 >>> >>> >> Thus the ABI hash should also include `system-configuration-features'. >>> > >>> > Which of the features you think might affect the ABI? I reviewed them >>> > a couple of days ago and didn't find any I could convince myself >>> > should affect that, but maybe I missed something. >>> >>> As a reasonably recent example, adding bignum support by default added >>> "GMP" to `system-configuration-features' when rebuilding after pulling >>> upstream changes, without the user changing the configure command line >>> saved in `system-configuration-options'. >> >> AFAIU, such changes only affect *.eln files if we add new primitives >> to Emacs or change existing primitives, and those changes are already >> captured by the ABI hash. Right? > > Perhaps you are right, but we need some input from Andrea on whether > these changes affect the ABI. Eli is correct. I think we can define the ABI as: 1- the list of all primitives and their signatures. 2- the eln load mechanism we implement. 3- low level details of how Lisp objects are represented in case these are directly manipulated by opencoded code (ATM integer and conses). 1 is accounted automatically in the `comp-abi-hash' computation. For 2 and 3 we are responsible to manually bump a new `comp-abi-hash' (leveraging ABI_VERSION). So yeah I think we should be fine ATM. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 14:41:08 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 19:41:08 +0000 Received: from localhost ([127.0.0.1]:38383 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcnU-0008TH-3f for submit@debbugs.gnu.org; Sat, 06 Mar 2021 14:41:08 -0500 Received: from mail-ot1-f45.google.com ([209.85.210.45]:42796) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcnT-0008Su-55 for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 14:41:07 -0500 Received: by mail-ot1-f45.google.com with SMTP id e45so5279496ote.9 for <46256@debbugs.gnu.org>; Sat, 06 Mar 2021 11:41:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LhEDRnnWa0Zm11/PW7oI1CsFiEVylyYLPqosZlD36QM=; b=IgRE0dqh8PjOibDxA4PNy5uEItAo1oLUTUEYStNDvvWe6dLxTAkjSfj8ZzZUBHLWYt Xp3hQBMpGw8GawEuOb7kzwWhW0bZ4JQpTIOkv5Ra7CStlLrPmnXhmG0vAqo9MMi3UZIQ N4kkT3yWFZM9+XaJU2Th04ZtgIdl8+7+ujW8BusFgACu59rQK56XSJqwu3awg6DP/FTI Tc/nkl9A2xCn7eM+AR8hMn866egbboRZlzkxXLcFQ8cKq/O8eLkeLubu7E965ukB7HaJ zIEMLYfV4xKARzsszlA/DblxkWJmyyTY7wmhaKRk63Ex51/H+uddFg1qF7el9CJ0shsc mT7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LhEDRnnWa0Zm11/PW7oI1CsFiEVylyYLPqosZlD36QM=; b=RFmGmulukavdCKJl1D30XAgMFzAR8hUgX1IgPXid062S06HO3zkhru8S205R+HfK6d uzSi+RNz9hLvGYH2R1rOz//+HnUvp/qOj/V88wW+gN7GpRiI8SyGFIj9ruC4cyGAWYh3 NAFBAX7HKIMPouE3tn/C5JRvNlyLjzVfTOjISSi3EowT1M8KV0QWmRtYhKzzEHjPA5IC 4/8siC8zKv8c6QoJGeqN0BG2FYvfA2qV6IDgkRjuSePa3Jqmc3Ixz7L6qoMks7xycEky 2jwUm1wjJyJ8MN1XoZGx57noG9x1KF/TSEZCCOjClyk9ddCUHAL21R8RdUkVAESDEkm4 Z24g== X-Gm-Message-State: AOAM530KM2xgEdvoYKFKrdcPSmN0Wa4NniADwXoMMCxFc3nHT659ltgZ C26ppMCtBjhbPWak1WdBnCUbGhhUsA88FDTAxh0= X-Google-Smtp-Source: ABdhPJwNIeFNtNjNFoDqYaU3VDq7Da8d3ByaKpPo6v6P4Mg6B8NSfygH7jTsfQsrKx6PpllV6k6BQ4T6sSlRcLXhJI8= X-Received: by 2002:a05:6830:1e51:: with SMTP id e17mr13223665otj.292.1615059661534; Sat, 06 Mar 2021 11:41:01 -0800 (PST) MIME-Version: 1.0 References: <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Sat, 6 Mar 2021 19:40:25 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sat, Mar 6, 2021 at 7:20 PM Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors wrote: > Okay I believe this is clearly a libgccjit bug. The attached reproducer > is not crashing on my 32bit setup based on a recent GCC trunk. It's crashing for me with a Feb 15 build of libgccjit from gcc trunk, but not with a newer build from gcc trunk, so it looks like a gcc bug that has since been fixed. Pip From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 14:48:59 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 19:48:59 +0000 Received: from localhost ([127.0.0.1]:38387 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcv4-0000CU-TW for submit@debbugs.gnu.org; Sat, 06 Mar 2021 14:48:59 -0500 Received: from mx.sdf.org ([205.166.94.24]:58038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIcv1-0000CK-Dr for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 14:48:57 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126Jmrxa001832 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 19:48:53 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> Date: Sat, 06 Mar 2021 19:48:53 +0000 In-Reply-To: (Pip Cet's message of "Sat, 6 Mar 2021 19:40:25 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Sat, Mar 6, 2021 at 7:20 PM Andrea Corallo via Bug reports for GNU > Emacs, the Swiss army knife of text editors > wrote: >> Okay I believe this is clearly a libgccjit bug. The attached reproducer >> is not crashing on my 32bit setup based on a recent GCC trunk. > > It's crashing for me with a Feb 15 build of libgccjit from gcc trunk, > but not with a newer build from gcc trunk, so it looks like a gcc bug > that has since been fixed. I think what you see should be PR99126 [1] that was fixed recently on trunk. IIRC (might be wrong) Eli is on a GCC 9, where at the time I could not reproduce this bug. If we discover PR99126 shows-up in versions other than 10 we might want to relax the version check around the workaround we have in place. Andrea [1] From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 15:08:47 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 20:08:47 +0000 Received: from localhost ([127.0.0.1]:38399 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdEE-0000fk-CU for submit@debbugs.gnu.org; Sat, 06 Mar 2021 15:08:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56186) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdED-0000fV-7v for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 15:08:45 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45209) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIdE7-0002eo-Uk; Sat, 06 Mar 2021 15:08:39 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1856 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIdE7-0004re-DZ; Sat, 06 Mar 2021 15:08:39 -0500 Date: Sat, 06 Mar 2021 22:08:29 +0200 Message-Id: <83blbwujsy.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 06 Mar 2021 19:19:16 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sat, 06 Mar 2021 19:19:16 +0000 > > > When compiled with -O2 and linked against libgccjit, it crashes with > > the following backtrace: > > Okay I believe this is clearly a libgccjit bug. The attached reproducer > is not crashing on my 32bit setup based on a recent GCC trunk. > > Could you remind me exactly which libgccjit version are you using? It's from GCC 9.2.0 (yours is probably GCC 10 or even more recent?). The GCC 9.2.0 tree, and in particular libgccjit itself, was patched to build successfully on Windows, but looking at the patches I cannot see anything that could explain crashes in just one or a small number of Lisp files. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 15:10:43 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 20:10:43 +0000 Received: from localhost ([127.0.0.1]:38403 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdG7-0000jA-8u for submit@debbugs.gnu.org; Sat, 06 Mar 2021 15:10:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56416) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdG6-0000iw-1i for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 15:10:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45217) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIdG0-0002tV-Ta; Sat, 06 Mar 2021 15:10:36 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1980 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIdG0-0004uy-DC; Sat, 06 Mar 2021 15:10:36 -0500 Date: Sat, 06 Mar 2021 22:10:26 +0200 Message-Id: <838s70ujpp.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 06 Mar 2021 19:21:26 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <83k0qkunpl.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sat, 06 Mar 2021 19:21:26 +0000 > > >> The reproducer file is a file that is meant to recreate the same > >> libgccjit IR and attempt a compilation with that. In practice it calls > >> the same functions we call at the interface with libgccjit describing > >> the code we want to compile and attempt to perform a compilation. > > > > But any issues caused by actually writing the reproducer to a disk > > file, like text-mode conversions and quirks, aren't relevant, right? > > Yes that's correct, but unless the C compiler can't parse correctly this > file it should work. Do you think this is the case? No, I don't. But I could try removing those funny characters, if you think it would help. Can I remove any characters from those strings without introducing unrelated problems? From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 15:19:28 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 20:19:28 +0000 Received: from localhost ([127.0.0.1]:38421 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdOa-0000yK-1W for submit@debbugs.gnu.org; Sat, 06 Mar 2021 15:19:28 -0500 Received: from mx.sdf.org ([205.166.94.24]:56426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdOY-0000yC-E6 for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 15:19:27 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126KJPOH011888 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 20:19:25 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <83blbwujsy.fsf@gnu.org> Date: Sat, 06 Mar 2021 20:19:25 +0000 In-Reply-To: <83blbwujsy.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 22:08:29 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 19:19:16 +0000 >> >> > When compiled with -O2 and linked against libgccjit, it crashes with >> > the following backtrace: >> >> Okay I believe this is clearly a libgccjit bug. The attached reproducer >> is not crashing on my 32bit setup based on a recent GCC trunk. >> >> Could you remind me exactly which libgccjit version are you using? > > It's from GCC 9.2.0 (yours is probably GCC 10 or even more recent?). > The GCC 9.2.0 tree, and in particular libgccjit itself, was patched to > build successfully on Windows, but looking at the patches I cannot see > anything that could explain crashes in just one or a small number of > Lisp files. I can build 9.2.0 and try but will take a while on my 32bit env, will report (mine on this setup was a very recent trunk). Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 15:24:59 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 20:24:59 +0000 Received: from localhost ([127.0.0.1]:38429 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdTu-00017h-VY for submit@debbugs.gnu.org; Sat, 06 Mar 2021 15:24:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58782) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdTt-00017V-F8 for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 15:24:57 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45375) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIdTo-0003xB-7J; Sat, 06 Mar 2021 15:24:52 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2856 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIdTn-0005Wd-IY; Sat, 06 Mar 2021 15:24:52 -0500 Date: Sat, 06 Mar 2021 22:24:40 +0200 Message-Id: <834khouj1z.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 06 Mar 2021 19:48:53 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, > andrewjmoreton@gmail.com > Date: Sat, 06 Mar 2021 19:48:53 +0000 > > > It's crashing for me with a Feb 15 build of libgccjit from gcc trunk, > > but not with a newer build from gcc trunk, so it looks like a gcc bug > > that has since been fixed. > > I think what you see should be PR99126 [1] that was fixed recently on > trunk. > > IIRC (might be wrong) Eli is on a GCC 9, where at the time I could not > reproduce this bug. Yes, I'm using GCC 9.2.0. > If we discover PR99126 shows-up in versions other than 10 we might > want to relax the version check around the workaround we have in > place. It looks like that: I patched comp.c to take the workaround regardless of the libgccjit version, and the result of running under GDB is: libgccjit.so: note: disable pass tree-isolate-paths for functions in the range of [0, 4294967295] [Inferior 1 (process 5640) exited normally] It also completed much faster than the buggy version, which probably means the buggy code has some kind of infinite recursion or other issue that causes the run to be much more expensive. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 15:27:00 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 20:27:00 +0000 Received: from localhost ([127.0.0.1]:38433 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdVs-0001BE-BZ for submit@debbugs.gnu.org; Sat, 06 Mar 2021 15:27:00 -0500 Received: from mx.sdf.org ([205.166.94.24]:56082) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdVj-0001Ax-EW for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 15:26:59 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126KQoqB024389 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 20:26:50 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <83k0qkunpl.fsf@gnu.org> <838s70ujpp.fsf@gnu.org> Date: Sat, 06 Mar 2021 20:26:50 +0000 In-Reply-To: <838s70ujpp.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 22:10:26 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 19:21:26 +0000 >> >> >> The reproducer file is a file that is meant to recreate the same >> >> libgccjit IR and attempt a compilation with that. In practice it calls >> >> the same functions we call at the interface with libgccjit describing >> >> the code we want to compile and attempt to perform a compilation. >> > >> > But any issues caused by actually writing the reproducer to a disk >> > file, like text-mode conversions and quirks, aren't relevant, right? >> >> Yes that's correct, but unless the C compiler can't parse correctly this >> file it should work. Do you think this is the case? > > No, I don't. But I could try removing those funny characters, if you > think it would help. Can I remove any characters from those strings > without introducing unrelated problems? I think it should not introduce problems but I expect it not to help, sorry I don't have a certain answers for these, you might want try if you like and it's quick. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 15:31:05 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 20:31:05 +0000 Received: from localhost ([127.0.0.1]:38442 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdZp-0001J9-7Q for submit@debbugs.gnu.org; Sat, 06 Mar 2021 15:31:05 -0500 Received: from mx.sdf.org ([205.166.94.24]:55918) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdZn-0001J2-K3 for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 15:31:04 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126KV2Kv013482 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 20:31:03 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> Date: Sat, 06 Mar 2021 20:31:02 +0000 In-Reply-To: <834khouj1z.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 22:24:40 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: Eli Zaretskii , 46256@debbugs.gnu.org, >> andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 19:48:53 +0000 >> >> > It's crashing for me with a Feb 15 build of libgccjit from gcc trunk, >> > but not with a newer build from gcc trunk, so it looks like a gcc bug >> > that has since been fixed. >> >> I think what you see should be PR99126 [1] that was fixed recently on >> trunk. >> >> IIRC (might be wrong) Eli is on a GCC 9, where at the time I could not >> reproduce this bug. > > Yes, I'm using GCC 9.2.0. > >> If we discover PR99126 shows-up in versions other than 10 we might >> want to relax the version check around the workaround we have in >> place. > > It looks like that: I patched comp.c to take the workaround regardless > of the libgccjit version, and the result of running under GDB is: > > libgccjit.so: note: disable pass tree-isolate-paths for functions in the range of [0, 4294967295] > [Inferior 1 (process 5640) exited normally] > > It also completed much faster than the buggy version, which probably > means the buggy code has some kind of infinite recursion or other > issue that causes the run to be much more expensive. Nice very interesting. I know the bug is there in 9 too (the builtin trap is not initialized) but don't know why I could not exercise it on my setup with the first reproducer I found. I guess we'll have to extend the workaround to all pre 11 GCC when configuring Emacs with wide int... Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 15:53:25 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 20:53:25 +0000 Received: from localhost ([127.0.0.1]:38450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdvR-0001qP-DJ for submit@debbugs.gnu.org; Sat, 06 Mar 2021 15:53:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIdvO-0001q9-Lu for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 15:53:23 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45539) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIdvJ-0006RB-Df; Sat, 06 Mar 2021 15:53:17 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4607 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIdvI-00027a-Ny; Sat, 06 Mar 2021 15:53:17 -0500 Date: Sat, 06 Mar 2021 22:53:05 +0200 Message-Id: <831rcsuhqm.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 06 Mar 2021 20:31:02 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sat, 06 Mar 2021 20:31:02 +0000 > > I guess we'll have to extend the workaround to all pre 11 GCC when > configuring Emacs with wide int... I guess so. Btw, do we have a way to force non-default compilation conditions for a particular .el file, via file-local variables? I'm thinking about setting comp-speed and comp-native-driver-options. That would help users who cannot change the C code and/or don't want to customize these variables globally for all compilations. Btw2, why are the *.eln files so big? do they include debug info, and if so, how to request a compilation that doesn't emit debug info? From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 06 16:02:21 2021 Received: (at 46256) by debbugs.gnu.org; 6 Mar 2021 21:02:21 +0000 Received: from localhost ([127.0.0.1]:38465 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIe45-00026a-1a for submit@debbugs.gnu.org; Sat, 06 Mar 2021 16:02:21 -0500 Received: from mx.sdf.org ([205.166.94.24]:54410) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIe42-00026S-T6 for 46256@debbugs.gnu.org; Sat, 06 Mar 2021 16:02:19 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 126L2HNI023796 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sat, 6 Mar 2021 21:02:17 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> <831rcsuhqm.fsf@gnu.org> Date: Sat, 06 Mar 2021 21:02:17 +0000 In-Reply-To: <831rcsuhqm.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 22:53:05 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 20:31:02 +0000 >> >> I guess we'll have to extend the workaround to all pre 11 GCC when >> configuring Emacs with wide int... > > I guess so. > > Btw, do we have a way to force non-default compilation conditions for > a particular .el file, via file-local variables? I'm thinking about > setting comp-speed and comp-native-driver-options. That would help > users who cannot change the C code and/or don't want to customize > these variables globally for all compilations. Not ATM. I guess should be easy to implement if we have a draft of interface we like to expose. Perhaps we should have a feature bug for this? > Btw2, why are the *.eln files so big? do they include debug info, and > if so, how to request a compilation that doesn't emit debug info? If they were compiled with comp-debug 0 they should have no debug symbol (should be easy to verify with objdump tho). IME even if it can vary they are often like ~2-3x the size of a .elc, but thinking about on a different architecture and with wide this might change measurably. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 00:56:05 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 05:56:05 +0000 Received: from localhost ([127.0.0.1]:38756 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lImOb-0000Vl-FU for submit@debbugs.gnu.org; Sun, 07 Mar 2021 00:56:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35496) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lImOZ-0000VF-AA for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 00:56:04 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53193) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lImOT-0008Qo-49; Sun, 07 Mar 2021 00:55:57 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2075 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lImOR-0003Yr-Ov; Sun, 07 Mar 2021 00:55:56 -0500 Date: Sun, 07 Mar 2021 07:55:46 +0200 Message-Id: <83y2eztsm5.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sat, 06 Mar 2021 21:02:17 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> <831rcsuhqm.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sat, 06 Mar 2021 21:02:17 +0000 > > > Btw, do we have a way to force non-default compilation conditions for > > a particular .el file, via file-local variables? I'm thinking about > > setting comp-speed and comp-native-driver-options. That would help > > users who cannot change the C code and/or don't want to customize > > these variables globally for all compilations. > > Not ATM. I guess should be easy to implement if we have a draft of > interface we like to expose. Perhaps we should have a feature bug for > this? Done. Another idea I had related to this: since there seem to be stability issues with even the recent versions of libgccjit, we should perhaps automatically add a .el file whose native-compilation failed to the list in comp-deferred-compilation-deny-list, so that the same Emacs session won't try native-compilation of the same .el file again. WDYT? (Btw, the "deferred" part in the name of the variable sounds redundant to me, since we always compile asynchronously, except during bootstrap, which has a separate variable anyway.) > > Btw2, why are the *.eln files so big? do they include debug info, and > > if so, how to request a compilation that doesn't emit debug info? > > If they were compiled with comp-debug 0 they should have no debug symbol > (should be easy to verify with objdump tho). I didn't change comp-debug from its default, so it should be 0. > IME even if it can vary they are often like ~2-3x the size of a .elc, > but thinking about on a different architecture and with wide this might > change measurably. A data point: subr-x.elc is 16247 bytes, whereas the corresponding .eln file (for 32-bit wide-int architecture) is 90631 bytes, a 5.5 factor. If I look at the file with 'size', I get the following numbers: text data bss dec hex filename 63951 788 24784 89523 15db3 subr-x-02dfef32-17faeb1d.eln From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 01:57:26 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 06:57:26 +0000 Received: from localhost ([127.0.0.1]:38826 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lInLy-0002Tw-1h for submit@debbugs.gnu.org; Sun, 07 Mar 2021 01:57:26 -0500 Received: from mx.sdf.org ([205.166.94.24]:51086) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lInLw-0002To-N7 for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 01:57:25 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1276vOw4028720 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 7 Mar 2021 06:57:24 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> <831rcsuhqm.fsf@gnu.org> <83y2eztsm5.fsf@gnu.org> Date: Sun, 07 Mar 2021 06:57:24 +0000 In-Reply-To: <83y2eztsm5.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 07 Mar 2021 07:55:46 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 21:02:17 +0000 >> >> > Btw, do we have a way to force non-default compilation conditions for >> > a particular .el file, via file-local variables? I'm thinking about >> > setting comp-speed and comp-native-driver-options. That would help >> > users who cannot change the C code and/or don't want to customize >> > these variables globally for all compilations. >> >> Not ATM. I guess should be easy to implement if we have a draft of >> interface we like to expose. Perhaps we should have a feature bug for >> this? > > Done. > > Another idea I had related to this: since there seem to be stability > issues with even the recent versions of libgccjit, we should perhaps > automatically add a .el file whose native-compilation failed to the > list in comp-deferred-compilation-deny-list, so that the same Emacs > session won't try native-compilation of the same .el file again. > WDYT? Sounds good, will do. > (Btw, the "deferred" part in the name of the variable sounds redundant > to me, since we always compile asynchronously, except during > bootstrap, which has a separate variable anyway.) Well we expose also `native-compile' to compile synchronously (IIRC that's also what package.el does if asked). >> > Btw2, why are the *.eln files so big? do they include debug info, and >> > if so, how to request a compilation that doesn't emit debug info? >> >> If they were compiled with comp-debug 0 they should have no debug symbol >> (should be easy to verify with objdump tho). > > I didn't change comp-debug from its default, so it should be 0. > >> IME even if it can vary they are often like ~2-3x the size of a .elc, >> but thinking about on a different architecture and with wide this might >> change measurably. > > A data point: subr-x.elc is 16247 bytes, whereas the corresponding > .eln file (for 32-bit wide-int architecture) is 90631 bytes, a 5.5 > factor. > > If I look at the file with 'size', I get the following numbers: > > text data bss dec hex filename > 63951 788 24784 89523 15db3 subr-x-02dfef32-17faeb1d.eln What's the size of the corresponding .elc ? Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 02:40:34 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 07:40:34 +0000 Received: from localhost ([127.0.0.1]:38841 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIo1i-0003WY-Dr for submit@debbugs.gnu.org; Sun, 07 Mar 2021 02:40:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47184) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIo1g-0003WM-PX for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 02:40:33 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54258) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIo1b-0004lZ-IO; Sun, 07 Mar 2021 02:40:27 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4530 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIo1a-000114-Tc; Sun, 07 Mar 2021 02:40:27 -0500 Date: Sun, 07 Mar 2021 09:40:16 +0200 Message-Id: <83im63tnrz.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sun, 07 Mar 2021 06:57:24 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> <831rcsuhqm.fsf@gnu.org> <83y2eztsm5.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sun, 07 Mar 2021 06:57:24 +0000 > > > Another idea I had related to this: since there seem to be stability > > issues with even the recent versions of libgccjit, we should perhaps > > automatically add a .el file whose native-compilation failed to the > > list in comp-deferred-compilation-deny-list, so that the same Emacs > > session won't try native-compilation of the same .el file again. > > WDYT? > > Sounds good, will do. Thanks. > > (Btw, the "deferred" part in the name of the variable sounds redundant > > to me, since we always compile asynchronously, except during > > bootstrap, which has a separate variable anyway.) > > Well we expose also `native-compile' to compile synchronously (IIRC > that's also what package.el does if asked). I guess I'm confused: what's the difference between native-compile and the deferred compilation? I though the deferred compilation just uses native-compile. Or is there a different command for that? > > A data point: subr-x.elc is 16247 bytes, whereas the corresponding > > .eln file (for 32-bit wide-int architecture) is 90631 bytes, a 5.5 > > factor. > > > > If I look at the file with 'size', I get the following numbers: > > > > text data bss dec hex filename > > 63951 788 24784 89523 15db3 subr-x-02dfef32-17faeb1d.eln > > What's the size of the corresponding .elc ? See above: 16247 bytes. From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 04:23:41 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 09:23:41 +0000 Received: from localhost ([127.0.0.1]:38890 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIpdV-0005xP-1b for submit@debbugs.gnu.org; Sun, 07 Mar 2021 04:23:41 -0500 Received: from mail-oi1-f174.google.com ([209.85.167.174]:40906) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIpdT-0005xC-KN for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 04:23:39 -0500 Received: by mail-oi1-f174.google.com with SMTP id w65so7752464oie.7 for <46256@debbugs.gnu.org>; Sun, 07 Mar 2021 01:23:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=uHjkse6jON9JihmbAj/deZV4h07JUzMMgObrE2i3YmU=; b=nUBOGskNoLWtBhmCVhiaxSOqbBu5RQqfKNYoi3SEiCg8kEcCkfOfo7I0qp9DGI+Mns hT+n9KW5JOEaquE+r65e/21MjjO50KSjrH7AJcOIiPUkR/2+uUNXY7YwGuIKOQgQquwF gD9umEnGh66hf76ZBUlTFgi4vfyqoPnzmpsvgCXO87J98I/hs1laNl3o6rG66nWK2P+e vagMm3kYbk+sA/dhWTgwYxje4hH4lOHIQwdMRk7REz5FFwrsanBVySO4IQvDhJlJU6Oe a5DGtDipBDRfhVxlx2vaJhtFQ8jd+QVIEMvsaDP8x8jcjMKjyOXDpq2rN9KboLrH2OTy gKVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=uHjkse6jON9JihmbAj/deZV4h07JUzMMgObrE2i3YmU=; b=YHNvmYemizI78LdcliG8uT/vANjhjsg5w/0hpxlXre3HFlOWOu2qst5Pr7SDpUZaUT CXePM8a5jG3sP+YmuioiE4SAP++uFwtEqNZ76XVFAX/+59+pX87mPxh4ltWczItTtBab sHS8NnJ2ZVTVcjKc8+W9K9d4P5A84gfkP0wI7MkEZNjLfSOiOg+U3heIqx06mEaUe069 rqhtU2KwrC03yRWjqsQV1d1Isqg/E3d0FqrL8vpSUro3qmzNKW+/IO22aBMx+xvDkwlo B7I8pVPqibRTfT5kf+5HTGApTHKIPfF/wuIy9n6fYMa2CQgWS0eHimpw0q8b9xF624sn wcEw== X-Gm-Message-State: AOAM532htMIuFu3MEPaV8lPQmV4uJyByEYviSH4r/rMeLIy/t41M2h+S /rrrooR1Dlhi6b/+8uc6Cfy7AIVCiq6hnaTnNcE= X-Google-Smtp-Source: ABdhPJzz0FsU5p4bBwDobnn5gUHBmrb0wczVB4dkQ69be73ykBQJr1cQY8pXzFzZhEfDhu19GA3whdk/39k3T7nsOC0= X-Received: by 2002:aca:4c0f:: with SMTP id z15mr9640038oia.44.1615109014057; Sun, 07 Mar 2021 01:23:34 -0800 (PST) MIME-Version: 1.0 References: <861rd1tbpa.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <83k0qoj9zv.fsf@gnu.org> <83im68j963.fsf@gnu.org> <83tuprhur0.fsf@gnu.org> <831rcu25o2.fsf@gnu.org> <83v9a6zr22.fsf@gnu.org> <83o8fyzjrz.fsf@gnu.org> <86sg593vfm.fsf@gmail.com> <86mtvgwk9s.fsf@gmail.com> In-Reply-To: <86mtvgwk9s.fsf@gmail.com> From: Pip Cet Date: Sun, 7 Mar 2021 09:22:56 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andy Moreton Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sat, Mar 6, 2021 at 12:16 PM Andy Moreton wrote: > On Sat 06 Mar 2021, Pip Cet wrote: > > On Sat, Mar 6, 2021 at 1:48 AM Andy Moreton wrote: > >> Is the problem that dlopen resolves to use an unlinked file kept alive > >> by having open handles, rather than a new file with the filename used > >> by the old file before it was unlinked ? > > > > I believe so, and that's what I think we can work around. > > > > IIUC, we don't actually call dlclose() until we GC (and might not do > > so even then, since GC is conservative). > > In that case keeping the handles open is the real bug here, and it would > be better to focus on how to ensure that resources are released corectly. I'm not sure I follow that argument. If I load subr.eln, hack on subr.el, recompile subr.eln, and want to reload it, we can't dlclose() the old subr.eln until long after we've dlopen()ed the new one. I guess we could load subr.elc, then dlclose(), then dlopen() subr.eln? Are you saying that's something we should do? Pip From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 13:00:04 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 18:00:04 +0000 Received: from localhost ([127.0.0.1]:41479 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIxhD-0004PV-NT for submit@debbugs.gnu.org; Sun, 07 Mar 2021 13:00:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45210) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIxhA-0004OV-9E for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 13:00:02 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33149) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIxh4-0000o5-I2; Sun, 07 Mar 2021 12:59:54 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3271 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIxh1-00011z-GD; Sun, 07 Mar 2021 12:59:53 -0500 Date: Sun, 07 Mar 2021 19:59:39 +0200 Message-Id: <8335x6u9o4.fsf@gnu.org> From: Eli Zaretskii To: akrl@sdf.org In-Reply-To: <83r1kwjcy2.fsf@gnu.org> (message from Eli Zaretskii on Wed, 03 Mar 2021 20:43:01 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Wed, 03 Mar 2021 20:43:01 +0200 > From: Eli Zaretskii > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > Warning (comp): comp.h:70: Emacs fatal error: assertion failed: NATIVE_COMP_UNITP (a)^M > > I also see similar picture in emacs_backtrace.txt: > > emacs_abort at src/w32fns.c:10947 > terminate_due_to_signal at src/emacs.c:417 > die at src/alloc.c:7452 > XNATIVE_COMP_UNIT at src/comp.h:70 > load_comp_unit at src/comp.c:4766 > syms_of_comp at src/comp.c:5077 > Fload at src/lread.c:1548 > > (My Emacs is compiled with --enable-checking=yes.) I still keep seeing this from time to time, even though I have a local patch to disable the tree-isolate-paths pass. Suggestions for debugging this are welcome. (I must say that the way the async compilations are run makes it hard to track down fatal errors, because I don't even have an easy way of knowing which .el file was being compiled when the crash happened. Any enhancements of the logging and the diagnostic messages to help in these matters will be very welcome. E.g., how about introducing an intermediate log level that would just show the currently compiled .el file's name?) From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 13:53:54 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 18:53:54 +0000 Received: from localhost ([127.0.0.1]:41503 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIyXJ-0005f7-Ov for submit@debbugs.gnu.org; Sun, 07 Mar 2021 13:53:54 -0500 Received: from mx.sdf.org ([205.166.94.24]:51837) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIyXH-0005ey-Rs for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 13:53:52 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 127Ironx001828 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 7 Mar 2021 18:53:50 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> Date: Sun, 07 Mar 2021 18:53:50 +0000 In-Reply-To: <8335x6u9o4.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 07 Mar 2021 19:59:39 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> Date: Wed, 03 Mar 2021 20:43:01 +0200 >> From: Eli Zaretskii >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> >> Warning (comp): comp.h:70: Emacs fatal error: assertion failed: NATIVE_COMP_UNITP (a)^M >> >> I also see similar picture in emacs_backtrace.txt: >> >> emacs_abort at src/w32fns.c:10947 >> terminate_due_to_signal at src/emacs.c:417 >> die at src/alloc.c:7452 >> XNATIVE_COMP_UNIT at src/comp.h:70 >> load_comp_unit at src/comp.c:4766 >> syms_of_comp at src/comp.c:5077 >> Fload at src/lread.c:1548 >> >> (My Emacs is compiled with --enable-checking=yes.) [ Is a while I don not run with --enable-checking=yes, next compilation configure it] > I still keep seeing this from time to time, even though I have a local > patch to disable the tree-isolate-paths pass. Suggestions for > debugging this are welcome. > > (I must say that the way the async compilations are run makes it hard > to track down fatal errors, because I don't even have an easy way of > knowing which .el file was being compiled when the crash happened. > Any enhancements of the logging and the diagnostic messages to help in > these matters will be very welcome. E.g., how about introducing an > intermediate log level that would just show the currently compiled .el > file's name?) Setting `comp-async-jobs-number' to 1 and looking into the *Async-native-compile-log* what we are looking for in this case? Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 13:56:25 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 18:56:25 +0000 Received: from localhost ([127.0.0.1]:41507 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIyZl-0005j1-7P for submit@debbugs.gnu.org; Sun, 07 Mar 2021 13:56:25 -0500 Received: from mx.sdf.org ([205.166.94.24]:51662) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIyZj-0005it-Pb for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 13:56:24 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 127IuMo4014548 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 7 Mar 2021 18:56:23 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> <831rcsuhqm.fsf@gnu.org> Date: Sun, 07 Mar 2021 18:56:22 +0000 In-Reply-To: <831rcsuhqm.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2021 22:53:05 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sat, 06 Mar 2021 20:31:02 +0000 >> >> I guess we'll have to extend the workaround to all pre 11 GCC when >> configuring Emacs with wide int... > > I guess so. 38b4ac3e6b should do this. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 14:05:23 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 19:05:23 +0000 Received: from localhost ([127.0.0.1]:41515 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIyiR-0005x5-Eh for submit@debbugs.gnu.org; Sun, 07 Mar 2021 14:05:23 -0500 Received: from mx.sdf.org ([205.166.94.24]:51099) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIyiO-0005wu-Pu for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 14:05:22 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 127J5IUo017553 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 7 Mar 2021 19:05:18 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> <831rcsuhqm.fsf@gnu.org> <83y2eztsm5.fsf@gnu.org> <83im63tnrz.fsf@gnu.org> Date: Sun, 07 Mar 2021 19:05:18 +0000 In-Reply-To: <83im63tnrz.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 07 Mar 2021 09:40:16 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sun, 07 Mar 2021 06:57:24 +0000 >> >> > Another idea I had related to this: since there seem to be stability >> > issues with even the recent versions of libgccjit, we should perhaps >> > automatically add a .el file whose native-compilation failed to the >> > list in comp-deferred-compilation-deny-list, so that the same Emacs >> > session won't try native-compilation of the same .el file again. >> > WDYT? >> >> Sounds good, will do. > > Thanks. > >> > (Btw, the "deferred" part in the name of the variable sounds redundant >> > to me, since we always compile asynchronously, except during >> > bootstrap, which has a separate variable anyway.) >> >> Well we expose also `native-compile' to compile synchronously (IIRC >> that's also what package.el does if asked). > > I guess I'm confused: what's the difference between native-compile and > the deferred compilation? I though the deferred compilation just uses > native-compile. Or is there a different command for that? We have two API entries for native compilation: `native-compile' (synchronous) and `native-compile-async' (indeed asynchronous). Deferred compilation is the mechanism to trigger automatically an async native compilation (through `native-compile-async') for bytecodes being loaded when the native code is not present (+ have the hotswap performed when finished native compiling). >> > A data point: subr-x.elc is 16247 bytes, whereas the corresponding >> > .eln file (for 32-bit wide-int architecture) is 90631 bytes, a 5.5 >> > factor. >> > >> > If I look at the file with 'size', I get the following numbers: >> > >> > text data bss dec hex filename >> > 63951 788 24784 89523 15db3 subr-x-02dfef32-17faeb1d.eln >> >> What's the size of the corresponding .elc ? > > See above: 16247 bytes. Sorry for the sloppy answer this morning I was rushing :/ Looking at it my subr-x.eln is pretty much big the same (the factor depends on the single file). I believe in general bytecode is a more compact representation than native code. Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 14:08:34 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 19:08:34 +0000 Received: from localhost ([127.0.0.1]:41519 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIylW-00061W-1Q for submit@debbugs.gnu.org; Sun, 07 Mar 2021 14:08:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56302) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIylR-00061G-Ij for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 14:08:33 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:34805) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIylM-0002K9-DU; Sun, 07 Mar 2021 14:08:24 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3982 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIylL-00074V-Mp; Sun, 07 Mar 2021 14:08:24 -0500 Date: Sun, 07 Mar 2021 21:08:14 +0200 Message-Id: <831rcqu6ht.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sun, 07 Mar 2021 18:56:22 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tuprhur0.fsf@gnu.org> <83o8fxyafx.fsf@gnu.org> <83h7lpy7b7.fsf@gnu.org> <83blbxxwuj.fsf@gnu.org> <83a6rgwdmr.fsf@gnu.org> <835z24wb0s.fsf@gnu.org> <83y2f0uqcd.fsf@gnu.org> <83im64unhs.fsf@gnu.org> <834khouj1z.fsf@gnu.org> <831rcsuhqm.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sun, 07 Mar 2021 18:56:22 +0000 > > Eli Zaretskii writes: > > >> From: Andrea Corallo > >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > >> Date: Sat, 06 Mar 2021 20:31:02 +0000 > >> > >> I guess we'll have to extend the workaround to all pre 11 GCC when > >> configuring Emacs with wide int... > > > > I guess so. > > 38b4ac3e6b should do this. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 14:16:05 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 19:16:05 +0000 Received: from localhost ([127.0.0.1]:41525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIysm-0006Cb-S9 for submit@debbugs.gnu.org; Sun, 07 Mar 2021 14:16:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:57504) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIysk-0006By-DP for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 14:16:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35053) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIyse-0004YR-UW; Sun, 07 Mar 2021 14:15:56 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4461 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lIyse-0007o9-66; Sun, 07 Mar 2021 14:15:56 -0500 Date: Sun, 07 Mar 2021 21:15:45 +0200 Message-Id: <83zgzesrku.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sun, 07 Mar 2021 18:53:50 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sun, 07 Mar 2021 18:53:50 +0000 > > > (I must say that the way the async compilations are run makes it hard > > to track down fatal errors, because I don't even have an easy way of > > knowing which .el file was being compiled when the crash happened. > > Any enhancements of the logging and the diagnostic messages to help in > > these matters will be very welcome. E.g., how about introducing an > > intermediate log level that would just show the currently compiled .el > > file's name?) > > Setting `comp-async-jobs-number' to 1 and looking into the > *Async-native-compile-log* what we are looking for in this case? Will try that next time. But meanwhile, I got the same problem while rebuilding after your comp.c change. This time I clearly saw that cc-mode.el is being compiled: Dumping under the name emacs.pdmp Dumping fingerprint: 3869e2b5d74557015002c58022bce8f2e19ba06f1636f4182d7837703d6 22982 Dump complete Byte counts: header=100 hot=7960440 discardable=158256 cold=4873352 Reloc counts: hot=501593 discardable=5154 Adding name emacs-28.0.50.22.exe Adding name emacs-28.0.50.22.pdmp cp -f emacs.pdmp bootstrap-emacs.pdmp make[1]: Leaving directory `/d/gnu/git/emacs/native-comp/src' make -C lisp all make[1]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' make -C ../leim all EMACS="../src/emacs.exe" make -C ../admin/grammars all EMACS="../../src/emacs.exe" make[2]: Entering directory `/d/gnu/git/emacs/native-comp/admin/grammars' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/admin/grammars' make[2]: Entering directory `/d/gnu/git/emacs/native-comp/leim' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/leim' make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' make[2]: Nothing to be done for `compile-targets'. make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/lisp' make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' make[2]: Nothing to be done for `compile-targets'. make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/lisp' make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' ELC progmodes/cc-mode.elc comp.h:70: Emacs fatal error: assertion failed: NATIVE_COMP_UNITP (a) Attaching a debugger produces the backtrace shown below. I will leave this process captured in the debugger, in case you want me to look at some variables and report their values. Thread 1 received signal SIGTRAP, Trace/breakpoint trap. [Switching to Thread 5500.0x114c] 0x7c90120f in ntdll!DbgBreakPoint () from C:\WINDOWS\system32\ntdll.dll (gdb) bt #0 0x7c90120f in ntdll!DbgBreakPoint () from C:\WINDOWS\system32\ntdll.dll #1 0x0135a63b in emacs_abort () at w32fns.c:10914 #2 0x0115c637 in terminate_due_to_signal (sig=22, backtrace_limit=2147483647) at emacs.c:417 #3 0x0121c026 in die (msg=0x1782af2 "NATIVE_COMP_UNITP (a)", file=0x1782aeb "comp.h", line=70) at alloc.c:7452 #4 0x012cf582 in XNATIVE_COMP_UNIT (a=XIL(0x6f04860091b9000)) at comp.h:70 #5 0x012df324 in load_comp_unit (comp_u=0x6f33918, loading_dump=false, late_load=false) at comp.c:4821 #6 0x012e0c55 in Fnative_elisp_load (filename=XIL(0x80000000092db190), late_load=XIL(0)) at comp.c:5122 #7 0x012ab823 in Fload (file=XIL(0x800000000929e140), noerror=XIL(0), nomessage=XIL(0x30), nosuffix=XIL(0), must_suffix=XIL(0)) at lread.c:1548 #8 0x0125dea0 in eval_sub (form=XIL(0xc000000006f72cb0)) at eval.c:2498 #9 0x01255e60 in Fprogn (body=XIL(0xc000000006f72d30)) at eval.c:471 #10 0x01255b71 in Fif (args=XIL(0xc000000006f733c0)) at eval.c:427 #11 0x0125d89b in eval_sub (form=XIL(0xc000000006f73380)) at eval.c:2437 #12 0x01255e60 in Fprogn (body=XIL(0)) at eval.c:471 #13 0x01258b68 in Flet (args=XIL(0xc000000006f73370)) at eval.c:1057 #14 0x0125d89b in eval_sub (form=XIL(0xc000000006f73280)) at eval.c:2437 #15 0x01255e60 in Fprogn (body=XIL(0xc000000006f72d70)) at eval.c:471 #16 0x0125d89b in eval_sub (form=XIL(0xc000000006f73170)) at eval.c:2437 #17 0x01255b0d in Fif (args=XIL(0xc000000006f73160)) at eval.c:426 #18 0x0125d89b in eval_sub (form=XIL(0xc000000006f730c0)) at eval.c:2437 #19 0x01255e60 in Fprogn (body=XIL(0)) at eval.c:471 #20 0x0126184b in funcall_lambda (fun=XIL(0xc000000006f72e20), nargs=1, arg_vector=0x82bd40) at eval.c:3286 #21 0x01260eb0 in apply_lambda (fun=XIL(0xc000000006f72e20), args=XIL(0xc000000006dce870), count=74) at eval.c:3158 #22 0x0125e5d7 in eval_sub (form=XIL(0xc000000006dce860)) at eval.c:2561 #23 0x0125d117 in Feval (form=XIL(0xc000000006dce860), lexical=XIL(0)) at eval.c:2313 #24 0x7058ea18 in F627974652d636f6d70696c652d6576616c_byte_compile_eval_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #25 0x01260731 in funcall_subr (subr=0x6781548, numargs=1, args=0x82c1c0) at eval.c:3084 #26 0x012601a5 in Ffuncall (nargs=2, args=0x82c1b8) at eval.c:3009 #27 0x012cbaa4 in exec_byte_code (bytestr=XIL(0x8000000006978310), vector=XIL(0xa000000006f338b0), maxdepth=make_fixnum(6), args_template=make_fixnum(257), nargs=1, args=0x82c788) at bytecode.c:632 #28 0x01260cea in fetch_and_exec_byte_code (fun=XIL(0xa000000006f338e8), syms_left=make_fixnum(257), nargs=1, args=0x82c780) at eval.c:3133 #29 0x01261267 in funcall_lambda (fun=XIL(0xa000000006f338e8), nargs=1, arg_vector=0x82c780) at eval.c:3214 #30 0x01260215 in Ffuncall (nargs=2, args=0x82c778) at eval.c:3013 #31 0x7058a138 in F627974652d636f6d70696c652d726563757273652d746f706c6576656c_byte_compile_recurse_toplevel_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #32 0x01260760 in funcall_subr (subr=0x676d838, numargs=2, args=0x82c980) at eval.c:3086 #33 0x012601a5 in Ffuncall (nargs=3, args=0x82c978) at eval.c:3009 #34 0x012cbaa4 in exec_byte_code (bytestr=XIL(0x8000000006978320), vector=XIL(0xa000000006bad3f8), maxdepth=make_fixnum(7), args_template=make_fixnum(128), nargs=1, args=0x82cfb8) at bytecode.c:632 #35 0x01260cea in fetch_and_exec_byte_code (fun=XIL(0xa000000006bad430), syms_left=make_fixnum(128), nargs=1, args=0x82cfb8) at eval.c:3133 #36 0x01261267 in funcall_lambda (fun=XIL(0xa000000006bad430), nargs=1, arg_vector=0x82cfb8) at eval.c:3214 #37 0x01260215 in Ffuncall (nargs=2, args=0x82cfb0) at eval.c:3013 #38 0x0125e79e in Fapply (nargs=2, args=0x82cfb0) at eval.c:2596 #39 0x0125f441 in apply1 (fn=XIL(0xa000000006bad430), arg=XIL(0xc000000006dc7930)) at eval.c:2855 #40 0x0125904c in Fmacroexpand (form=XIL(0xc000000006dc7920), environment=XIL(0xc000000006f6de10)) at eval.c:1142 #41 0x01260760 in funcall_subr (subr=0x172f780 , numargs=2, args=0x82d270) at eval.c:3086 #42 0x012601a5 in Ffuncall (nargs=3, args=0x82d268) at eval.c:3009 #43 0x06a53c20 in F6d6163726f6578702d6d6163726f657870616e64_macroexp_macroexpand_0 () from d:\gnu\git\emacs\native-comp\native-lisp\28.0.50-19fa14f1\macroexp-2c3e1495-db4ee70f.eln #44 0x01260760 in funcall_subr (subr=0x5f12cb4, numargs=2, args=0x82d4b0) at eval.c:3086 #45 0x012601a5 in Ffuncall (nargs=3, args=0x82d4a8) at eval.c:3009 #46 0x7058a0c5 in F627974652d636f6d70696c652d726563757273652d746f706c6576656c_byte_compile_recurse_toplevel_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #47 0x01260760 in funcall_subr (subr=0x676d838, numargs=2, args=0x82d698) at eval.c:3086 #48 0x012601a5 in Ffuncall (nargs=3, args=0x82d690) at eval.c:3009 #49 0x012cbaa4 in exec_byte_code (bytestr=XIL(0x8000000006970bc0), vector=XIL(0xa000000006f1ab58), maxdepth=make_fixnum(4), args_template=make_fixnum(257), nargs=1, args=0x82dc40) at bytecode.c:632 #50 0x01260cea in fetch_and_exec_byte_code (fun=XIL(0xa000000006f33880), syms_left=make_fixnum(257), nargs=1, args=0x82dc38) at eval.c:3133 #51 0x01261267 in funcall_lambda (fun=XIL(0xa000000006f33880), nargs=1, arg_vector=0x82dc38) at eval.c:3214 #52 0x01260215 in Ffuncall (nargs=2, args=0x82dc30) at eval.c:3013 #53 0x0125f4b8 in call1 (fn=XIL(0xa000000006f33880), arg1=XIL(0xc000000006dc7920)) at eval.c:2869 #54 0x01274ff2 in mapcar1 (leni=2, vals=0x82dd20, fn=XIL(0xa000000006f33880), seq=XIL(0xc000000006dc78e0)) at fns.c:2742 #55 0x0127566b in Fmapcar (function=XIL(0xa000000006f33880), sequence=XIL(0xc000000006dc78e0)) at fns.c:2798 #56 0x7058a1a6 in F627974652d636f6d70696c652d726563757273652d746f706c6576656c_byte_compile_recurse_toplevel_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #57 0x01260760 in funcall_subr (subr=0x676d838, numargs=2, args=0x82dfd0) at eval.c:3086 #58 0x012601a5 in Ffuncall (nargs=3, args=0x82dfc8) at eval.c:3009 #59 0x7059c5f3 in F627974652d636f6d70696c652d746f706c6576656c2d66696c652d666f726d_byte_compile_toplevel_file_form_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #60 0x01260731 in funcall_subr (subr=0x6783f18, numargs=1, args=0x82e1e8) at eval.c:3084 #61 0x012601a5 in Ffuncall (nargs=2, args=0x82e1e0) at eval.c:3009 #62 0x7059999c in F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_43 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #63 0x01260731 in funcall_subr (subr=0x686e450, numargs=1, args=0x82e418) at eval.c:3084 #64 0x012601a5 in Ffuncall (nargs=2, args=0x82e410) at eval.c:3009 #65 0x7059a9f1 in F627974652d636f6d70696c652d66726f6d2d627566666572_byte_compile_from_buffer_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #66 0x01260731 in funcall_subr (subr=0x6783d58, numargs=1, args=0x82e6b8) at eval.c:3084 #67 0x012601a5 in Ffuncall (nargs=2, args=0x82e6b0) at eval.c:3009 #68 0x70597650 in F627974652d636f6d70696c652d66696c65_byte_compile_file_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #69 0x01260760 in funcall_subr (subr=0x6783cd8, numargs=1, args=0x82e8d0) at eval.c:3086 #70 0x012601a5 in Ffuncall (nargs=2, args=0x82e8c8) at eval.c:3009 #71 0x705bb19f in F62617463682d627974652d636f6d70696c652d66696c65_batch_byte_compile_file_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #72 0x01260731 in funcall_subr (subr=0x68d04b8, numargs=1, args=0x82eb08) at eval.c:3084 #73 0x012601a5 in Ffuncall (nargs=2, args=0x82eb00) at eval.c:3009 #74 0x705bac80 in F62617463682d627974652d636f6d70696c65_batch_byte_compile_0 () from d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\bytecomp-12882072-bfe84587.eln #75 0x01260731 in funcall_subr (subr=0x68d0478, numargs=0, args=0x82ed68) at eval.c:3084 #76 0x012601a5 in Ffuncall (nargs=1, args=0x82ed60) at eval.c:3009 #77 0x6ec8a3c8 in F62617463682d627974652d6e61746976652d636f6d70696c652d666f722d626f6f747374726170_batch_byte_native_compile_for_bootstrap_0 () from d:\gnu\git\emacs\native-comp\native-lisp\28.0.50-19fa14f1\comp-7672a6ed-f22bd338.eln #78 0x01260715 in funcall_subr (subr=0x6dabb48, numargs=0, args=0x82eff8) at eval.c:3082 #79 0x012601a5 in Ffuncall (nargs=1, args=0x82eff0) at eval.c:3009 #80 0x6cb55791 in F636f6d6d616e642d6c696e652d31_command_line_1_0 () from d:\gnu\git\emacs\native-comp\native-lisp\28.0.50-19fa14f1\startup-bbc6ea72-9be7c541.eln #81 0x01260731 in funcall_subr (subr=0x5db726c, numargs=1, args=0x82f3e8) at eval.c:3084 #82 0x012601a5 in Ffuncall (nargs=2, args=0x82f3e0) at eval.c:3009 #83 0x6cb4b0a9 in F636f6d6d616e642d6c696e65_command_line_0 () from d:\gnu\git\emacs\native-comp\native-lisp\28.0.50-19fa14f1\startup-bbc6ea72-9be7c541.eln #84 0x01260715 in funcall_subr (subr=0x5dc92bc, numargs=0, args=0x82f638) at eval.c:3082 #85 0x012601a5 in Ffuncall (nargs=1, args=0x82f630) at eval.c:3009 #86 0x6cb45d8b in F6e6f726d616c2d746f702d6c6576656c_normal_top_level_0 () from d:\gnu\git\emacs\native-comp\native-lisp\28.0.50-19fa14f1\startup-bbc6ea72-9be7c541.eln #87 0x0125dc63 in eval_sub (form=XIL(0xc000000005db0d7c)) at eval.c:2481 #88 0x0125d117 in Feval (form=XIL(0xc000000005db0d7c), lexical=XIL(0)) at eval.c:2313 #89 0x01164353 in top_level_2 () at keyboard.c:1103 #90 0x0125a135 in internal_condition_case (bfun=0x1164320 , handlers=XIL(0x90), hfun=0x1163ad1 ) at eval.c:1448 #91 0x011643cd in top_level_1 (ignore=XIL(0)) at keyboard.c:1111 #92 0x01259218 in internal_catch (tag=XIL(0xedf0), func=0x1164359 , arg=XIL(0)) at eval.c:1198 #93 0x01164225 in command_loop () at keyboard.c:1072 #94 0x01163561 in recursive_edit_1 () at keyboard.c:720 #95 0x011637cf in Frecursive_edit () at keyboard.c:789 #96 0x0115ee6e in main (argc=11, argv=0xa4ea88) at emacs.c:2095 Lisp Backtrace: "load" (0x82b378) "if" (0x82b5a8) "let" (0x82b838) "progn" (0x82b9e8) "if" (0x82bb98) "cc-bytecomp-load" (0x82bd40) "byte-compile-eval" (0x82c1c0) 0x6f338e8 PVEC_COMPILED "byte-compile-recurse-toplevel" (0x82c980) 0x6bad430 PVEC_COMPILED "macroexpand" (0x82d270) "macroexp-macroexpand" (0x82d4b0) "byte-compile-recurse-toplevel" (0x82d698) 0x6f33880 PVEC_COMPILED "byte-compile-recurse-toplevel" (0x82dfd0) "byte-compile-toplevel-file-form" (0x82e1e8) 0x686e450 PVEC_SUBR "byte-compile-from-buffer" (0x82e6b8) "byte-compile-file" (0x82e8d0) "batch-byte-compile-file" (0x82eb08) "batch-byte-compile" (0x82ed68) "batch-byte-native-compile-for-bootstrap" (0x82eff8) "command-line-1" (0x82f3e8) "command-line" (0x82f638) "normal-top-level" (0x82f728) From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 15:16:44 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 20:16:44 +0000 Received: from localhost ([127.0.0.1]:41578 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIzpT-0007eU-NN for submit@debbugs.gnu.org; Sun, 07 Mar 2021 15:16:44 -0500 Received: from mx.sdf.org ([205.166.94.24]:63129) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lIzpR-0007eM-Oy for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 15:16:42 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 127KGepg002172 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 7 Mar 2021 20:16:40 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> Date: Sun, 07 Mar 2021 20:16:40 +0000 In-Reply-To: <83zgzesrku.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 07 Mar 2021 21:15:45 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Sun, 07 Mar 2021 18:53:50 +0000 >> >> > (I must say that the way the async compilations are run makes it hard >> > to track down fatal errors, because I don't even have an easy way of >> > knowing which .el file was being compiled when the crash happened. >> > Any enhancements of the logging and the diagnostic messages to help in >> > these matters will be very welcome. E.g., how about introducing an >> > intermediate log level that would just show the currently compiled .el >> > file's name?) >> >> Setting `comp-async-jobs-number' to 1 and looking into the >> *Async-native-compile-log* what we are looking for in this case? > > Will try that next time. But meanwhile, I got the same problem while > rebuilding after your comp.c change. This time I clearly saw that > cc-mode.el is being compiled: > > Dumping under the name emacs.pdmp > Dumping fingerprint: 3869e2b5d74557015002c58022bce8f2e19ba06f1636f4182d7837703d6 > 22982 > Dump complete > Byte counts: header=100 hot=7960440 discardable=158256 cold=4873352 > Reloc counts: hot=501593 discardable=5154 > Adding name emacs-28.0.50.22.exe > Adding name emacs-28.0.50.22.pdmp > cp -f emacs.pdmp bootstrap-emacs.pdmp > make[1]: Leaving directory `/d/gnu/git/emacs/native-comp/src' > make -C lisp all > make[1]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' > make -C ../leim all EMACS="../src/emacs.exe" > make -C ../admin/grammars all EMACS="../../src/emacs.exe" > make[2]: Entering directory `/d/gnu/git/emacs/native-comp/admin/grammars' > make[2]: Nothing to be done for `all'. > make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/admin/grammars' > make[2]: Entering directory `/d/gnu/git/emacs/native-comp/leim' > make[2]: Nothing to be done for `all'. > make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/leim' > make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' > make[2]: Nothing to be done for `compile-targets'. > make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/lisp' > make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' > make[2]: Nothing to be done for `compile-targets'. > make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/lisp' > make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp' > ELC progmodes/cc-mode.elc > > comp.h:70: Emacs fatal error: assertion failed: NATIVE_COMP_UNITP (a) > > Attaching a debugger produces the backtrace shown below. I will leave > this process captured in the debugger, in case you want me to look at > some variables and report their values. > > Thread 1 received signal SIGTRAP, Trace/breakpoint trap. > [Switching to Thread 5500.0x114c] > 0x7c90120f in ntdll!DbgBreakPoint () from C:\WINDOWS\system32\ntdll.dll > (gdb) bt > #0 0x7c90120f in ntdll!DbgBreakPoint () from C:\WINDOWS\system32\ntdll.dll > #1 0x0135a63b in emacs_abort () at w32fns.c:10914 > #2 0x0115c637 in terminate_due_to_signal (sig=22, backtrace_limit=2147483647) > at emacs.c:417 > #3 0x0121c026 in die (msg=0x1782af2 "NATIVE_COMP_UNITP (a)", > file=0x1782aeb "comp.h", line=70) at alloc.c:7452 > #4 0x012cf582 in XNATIVE_COMP_UNIT (a=XIL(0x6f04860091b9000)) at comp.h:70 > #5 0x012df324 in load_comp_unit (comp_u=0x6f33918, loading_dump=false, > late_load=false) at comp.c:4821 > #6 0x012e0c55 in Fnative_elisp_load (filename=XIL(0x80000000092db190), > late_load=XIL(0)) at comp.c:5122 What I think is going on here: The same .eln file is loaded two times, we detect that and try to reuse the same compilation unit (the Lisp object) instead of a new one. We keep a pointer to the compilation unit representing the .eln file in each .eln. Here we read it and we have it into 'saved_cu', we try to dereference it and extract the CU with XNATIVE_COMP_UNIT but something goes wrong. This object might have been GC'ed for some reason and we might be looking at the same GC issue I've seen on 32bit wide-int (my guess). *If* this is the case the question is: why is the CU GC'ed? Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 16:28:40 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 21:28:40 +0000 Received: from localhost ([127.0.0.1]:41654 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ0x6-000123-Ep for submit@debbugs.gnu.org; Sun, 07 Mar 2021 16:28:40 -0500 Received: from mail-ot1-f52.google.com ([209.85.210.52]:41951) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ0x5-00011p-FU for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 16:28:39 -0500 Received: by mail-ot1-f52.google.com with SMTP id f8so2298199otp.8 for <46256@debbugs.gnu.org>; Sun, 07 Mar 2021 13:28:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2NEeVZ/SqZCObcP5xtO4p/OmWMhixOjwTD8G7X2o8Bw=; b=benJTo5Xa4FtzrI/JC+kEPUzWx31n4dDjhHJv18y4veZEgDbyk6zPY9+dyoiyCKrlF i7kbeO/FZsjJdT5+OjAKpsppevzT61+3WNUoPkAbA+8IXPsl4+CfLPsl2Y2Fvpg6TE7K Lh65q7a8HrKds1rwU68nTDW+YVijpCf6rh4swZ6PNCJTcPSlgLK5c4+/3SviniVkq0yz CSd/9luYpYR32dtbUdnkI9izlTfIZ9nxDWVL7RUPpPQuvELNcuWjVudryL0iGII4fgHj ogG+VR61R5upYFm5B4xsRYtuuSVZEsk3fO/2CoTfH7ZLFY2yPrTFMlTmtzRN+RdR6Eva U93Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2NEeVZ/SqZCObcP5xtO4p/OmWMhixOjwTD8G7X2o8Bw=; b=W14XfcjCa3sL3cyZVWFBovO4wYlxgKqCz+8qjf+TcDETR86pfuTKFpujCG7uvuDKP3 roBpc/ZERRADy1lDPAKAR5sr+UzbHgqOBaOevkqW1fGYCVcqMqfxrKHIhHt8L8hk3cfW wBmkUskxG7YCxuL4JY13TTEZJWKTp50LdbYFGagYg8tod1guRC5U76bjpDrwbBD8A8nh weFT/9KukWgiVj+a72AzCADbuOFGqSggMAhUVJfbnY45aJckIESidrn4GUSecTDF6nz3 aW3aGNVaztNtwf3b+R3rRGDgZP2Uv8S/lZ2BiZj3MZBfy+GOtqsiCq1G7hZwUnalKg4c /5Og== X-Gm-Message-State: AOAM531jK7e8xUtPOXgEN89XrRyLo8XpdBwxnZKclxHYNlmo1eBufc4H thvRr9dZqXKOqfTUS9wK/gpz9vdRwwBSDbdM5Mw= X-Google-Smtp-Source: ABdhPJz6D2SAZ53xthjBZuHoISrE2HnSxmMXKfo11pIuLAN/bGGyxMdf7U+6sLDEDUEvn7EofbTy7pnVjbb0DtqzmJA= X-Received: by 2002:a05:6830:1e51:: with SMTP id e17mr17095788otj.292.1615152513775; Sun, 07 Mar 2021 13:28:33 -0800 (PST) MIME-Version: 1.0 References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Sun, 7 Mar 2021 21:27:57 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: multipart/mixed; boundary="000000000000d78f3c05bcf8ff60" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000d78f3c05bcf8ff60 Content-Type: text/plain; charset="UTF-8" On Sun, Mar 7, 2021 at 8:17 PM Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors wrote: > Eli Zaretskii writes: > >> From: Andrea Corallo > >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > >> Date: Sun, 07 Mar 2021 18:53:50 +0000 > What I think is going on here: > > The same .eln file is loaded two times, we detect that and try to reuse > the same compilation unit (the Lisp object) instead of a new one. > > We keep a pointer to the compilation unit representing the .eln file in > each .eln. Here we read it and we have it into 'saved_cu', we try to > dereference it and extract the CU with XNATIVE_COMP_UNIT but something > goes wrong. > > This object might have been GC'ed for some reason and we might be > looking at the same GC issue I've seen on 32bit wide-int (my guess). > *If* this is the case the question is: why is the CU GC'ed? Why wouldn't it be? I'm trying to follow along here :-) What I'm thinking is the CU got GC'ed, which is perfectly okay, but we never set its COMP_UNIT_SYM pointer to Qnil. Then we dlopen() the same file again, get the old handle, read the stale COMP_UNIT_SYM pointer, and dereference it. We should verify that the CU is indeed a different PVEC type now (ideally, PVEC_FREE), and then do something like the attached patch, shouldn't we? Pip --000000000000d78f3c05bcf8ff60 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-a-GC-issue-bug-46256.patch" Content-Disposition: attachment; filename="0001-Fix-a-GC-issue-bug-46256.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_klzo2xaz0 RnJvbSAyMzQ5NmQ4NzkzYzQ3NWI0NTFhMGQ4ZmMzNWIyNzgxZTljNDc0NmE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBTdW4s IDcgTWFyIDIwMjEgMjE6MjY6MjkgKzAwMDAKU3ViamVjdDogW1BBVENIXSBGaXggYSBHQyBpc3N1 ZSAoYnVnIzQ2MjU2KQoKKiBzcmMvYWxsb2MuYyAoY2xlYW51cF92ZWN0b3IpOiBDbGVhciB0aGUg Y29tcCB1bml0IHBvaW50ZXIgaW4gdGhlCmR5bmFtaWNhbGx5LWxvYWRlZCBvYmplY3QuCi0tLQog c3JjL2FsbG9jLmMgfCAzICsrKwogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL3NyYy9hbGxvYy5jIGIvc3JjL2FsbG9jLmMKaW5kZXggYWYwODMzNjE3NzA3MC4u ZTAzOTQ0MWVhODI2YyAxMDA2NDQKLS0tIGEvc3JjL2FsbG9jLmMKKysrIGIvc3JjL2FsbG9jLmMK QEAgLTMxNTUsOSArMzE1NSwxMiBAQCBjbGVhbnVwX3ZlY3RvciAoc3RydWN0IExpc3BfVmVjdG9y ICp2ZWN0b3IpCiAgIGVsc2UgaWYgKE5BVElWRV9DT01QX0ZMQUcKIAkgICAmJiBQU0VVRE9WRUNU T1JfVFlQRVAgKCZ2ZWN0b3ItPmhlYWRlciwgUFZFQ19OQVRJVkVfQ09NUF9VTklUKSkKICAgICB7 CisjZGVmaW5lIENPTVBfVU5JVF9TWU0gImNvbXBfdW5pdCIKICAgICAgIHN0cnVjdCBMaXNwX05h dGl2ZV9Db21wX1VuaXQgKmN1ID0KIAlQU0VVRE9WRUNfU1RSVUNUICh2ZWN0b3IsIExpc3BfTmF0 aXZlX0NvbXBfVW5pdCk7CiAgICAgICBlYXNzZXJ0IChjdS0+aGFuZGxlKTsKKyAgICAgIExpc3Bf T2JqZWN0ICpzYXZlZF9jdSA9IGR5bmxpYl9zeW0gKGN1LT5oYW5kbGUsIENPTVBfVU5JVF9TWU0p OworICAgICAgKnNhdmVkX2N1ID0gUW5pbDsKICAgICAgIGR5bmxpYl9jbG9zZSAoY3UtPmhhbmRs ZSk7CiAgICAgfQogICBlbHNlIGlmIChOQVRJVkVfQ09NUF9GTEFHCi0tIAoyLjMwLjEKCg== --000000000000d78f3c05bcf8ff60-- From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 16:48:08 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 21:48:08 +0000 Received: from localhost ([127.0.0.1]:41680 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ1Fw-0001ah-Ly for submit@debbugs.gnu.org; Sun, 07 Mar 2021 16:48:08 -0500 Received: from mail-oi1-f170.google.com ([209.85.167.170]:35966) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ1Fu-0001aD-Kk for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 16:48:07 -0500 Received: by mail-oi1-f170.google.com with SMTP id j1so9016097oiw.3 for <46256@debbugs.gnu.org>; Sun, 07 Mar 2021 13:48:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Wvcji0Zq4BHcvOe+sK0Xx0w5QlIGrFeNIJD8gUznZy0=; b=OFH2IOE+wKSEXkWKhXYgr7MRyT4vmch+xHX9cDqMCERkTNctNRHpBF0Kk8NHWh/F5w 1yQAfuyNBI/HcIN+Wbu8xRS1HZLN7aX6k3fNArwI8tVERU/doBx5/1BOK53BFChffRpB 6SetoGGk8hMLKUU589IFAkaGY4c5VvsuoSh5C6tiJjrZO0dpGB6sZEr6hKgKvi65cp5O 5SwCdvBDlNU0JwC/zmmCIZCEcFFCLFoj/LNStDiAL7ZjZUAxF7aZEFl4ue/TrnrjhlNj gm5ybm6MNb7BU/b4XE39JeS7iILCkoVi2DjCeIAmzCyVGutnKmNvrsHalin0XPPS9WvR P19A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Wvcji0Zq4BHcvOe+sK0Xx0w5QlIGrFeNIJD8gUznZy0=; b=teaXl6D9zPn/c1vah+QvD/d5UAOQVqHZfi5l11vGvg3hAUxqazUmUZu5yo50/n3tfp cxz75LwHfEzU4hbvp7fbYq5zjkoPjL5i0KJcbbDr6N81N8T0fyygqosRMuc47OyAahu3 l8S7/VvgPeDqO4cAEd0G7alBfeANS5Oz7U+ByDk6x0qJ9SokDcNYFi3FvYjuwa4vWOCm tJNNDFImwNKiFA5LCIDECzNPj7Df2xckkrLWsSnOMPllq3Z8l5zGg9BPfEno4wCNjtSL NIlzVdEUtadXPhrEY3CpKPa9CjDkcCUlWYsb1olbLY1gKn247dO0aqdQMmNUmBJgsc10 I6ow== X-Gm-Message-State: AOAM533Q+OvuH/bSgvLgg5geJwNl8EWNIae5M/Fo290PAmHk8jWuRky9 StBPAHu9MAZS5SuaqcSprWkIAVcmL37CRxI3fxU= X-Google-Smtp-Source: ABdhPJzsB16oia/tzLQffuiyt2k1C/6CJ8IffaOh2jh42VnmMl4RDGzHdVGgUpeCeTgnUjCfkNfo0CsYvaeTDL9Iyo0= X-Received: by 2002:a54:4196:: with SMTP id 22mr4628716oiy.30.1615153680998; Sun, 07 Mar 2021 13:48:00 -0800 (PST) MIME-Version: 1.0 References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Sun, 7 Mar 2021 21:47:24 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sun, Mar 7, 2021 at 9:27 PM Pip Cet wrote: > What I'm thinking is the CU got GC'ed, which is perfectly okay, but we > never set its COMP_UNIT_SYM pointer to Qnil. Then we dlopen() the same > file again, get the old handle, read the stale COMP_UNIT_SYM pointer, > and dereference it. > > We should verify that the CU is indeed a different PVEC type now > (ideally, PVEC_FREE), and then do something like the attached patch, > shouldn't we? I can reproduce this issue by replacing the single call of dlopen() in dynlib_open with two calls, and I have it open in a debugger if any further information is required. I'll prepare a proper patch next, but until then, can someone help me out and explain why dynlib_close() returns 0 for success on Windows, but 1 for success on POSIX systems? Pip From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 16:51:21 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 21:51:21 +0000 Received: from localhost ([127.0.0.1]:41684 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ1J3-0001fL-4c for submit@debbugs.gnu.org; Sun, 07 Mar 2021 16:51:21 -0500 Received: from mx.sdf.org ([205.166.94.24]:55579) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ1Iy-0001f9-Q4 for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 16:51:19 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 127LpFgm013744 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 7 Mar 2021 21:51:15 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> Date: Sun, 07 Mar 2021 21:51:15 +0000 In-Reply-To: (Pip Cet's message of "Sun, 7 Mar 2021 21:27:57 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Sun, Mar 7, 2021 at 8:17 PM Andrea Corallo via Bug reports for GNU > Emacs, the Swiss army knife of text editors > wrote: >> Eli Zaretskii writes: >> >> From: Andrea Corallo >> >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> >> Date: Sun, 07 Mar 2021 18:53:50 +0000 >> What I think is going on here: >> >> The same .eln file is loaded two times, we detect that and try to reuse >> the same compilation unit (the Lisp object) instead of a new one. >> >> We keep a pointer to the compilation unit representing the .eln file in >> each .eln. Here we read it and we have it into 'saved_cu', we try to >> dereference it and extract the CU with XNATIVE_COMP_UNIT but something >> goes wrong. >> >> This object might have been GC'ed for some reason and we might be >> looking at the same GC issue I've seen on 32bit wide-int (my guess). >> *If* this is the case the question is: why is the CU GC'ed? > > Why wouldn't it be? I'm trying to follow along here :-) If the CU was GC'ed the eln should have been dlclosed. If that's the case at the next load we should get a fresh handle and 'saved_cu' should be NULL (ops! Qnil... :/) because static allocated. Here what we see is that we are loading two times without dlclosing and the object pointed by 'cu_saved' has some issue. So thinking about: the fact that the eln was never dlclosed should be prove that the CU was not GC'ed and so I was wrong. This suggests also that before further talking stupid I'd better say I'm done for the day :) Andrea From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 17:17:42 2021 Received: (at 46256) by debbugs.gnu.org; 7 Mar 2021 22:17:42 +0000 Received: from localhost ([127.0.0.1]:41695 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ1iX-0002Gy-MR for submit@debbugs.gnu.org; Sun, 07 Mar 2021 17:17:41 -0500 Received: from mail-oi1-f180.google.com ([209.85.167.180]:42470) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ1iV-0002Gl-Q0 for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 17:17:40 -0500 Received: by mail-oi1-f180.google.com with SMTP id x135so4555721oia.9 for <46256@debbugs.gnu.org>; Sun, 07 Mar 2021 14:17:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Tm3xyXvPvlTd8p4OAirP/4SzScsIH92KgR6OSVbVXvU=; b=SVXwGgImVWwaYheVjcYmyoBTM/Jk03MohmkmX4OFWoTfJxvsoK54j5vNYff6bxujq4 koF4gAXiDbB+y0jGR46sxMCBx65J8QB8gldLfynk+/IQK5sf+n2DQiot1JOxCTMATV0p Mgu9bIfcGLOpkNgSBpb0c5/i7fQ41R6bc+8YWpfL9HWpg2vbA3/cFG4jzNjVIC+JtbF0 mbjVsrI1L/msMPa8V3m9sBhFZA6hUpIGZUtBHHPwe4ah36ZXUgQOReZEUiOj20gxiDvZ UPxTdpwVhsiPmwlAQdsO+Hk1jPJZrMdPgWIuBsmOyp6sT/QLmo0oIRzSFV7UpoI9wVMl Ix1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Tm3xyXvPvlTd8p4OAirP/4SzScsIH92KgR6OSVbVXvU=; b=QTd7itC5aH4GLiRhsNhDYsYtnvydDJZ0Jnz7tC/u1cjacYPqRn1RrV1Zgcwz3F+SAX kzxmb9KmnG8AymFbXQf0FhYPi070jqjtt/1QpGKuWRj2akMnlCz3342+daTFTx1+a396 W6OsIHLW737D6woxVU17NPmdf36OJ24bkr8FgF/rf9y6MSoF7YpuNKf8TAteUv3rjucw 6g9HDgLPR1mj5X6zzur9fDWVXbJDR7mkjoUEI9373CNiQQvMywlE8udgQmbFS3B06aIK lf8UimMUmhFcyZrC5RUR+5bbSVhRQX+QgalPWMn3u+xNkHcNE/7wvtAO+D1g13ydoMm5 /nbQ== X-Gm-Message-State: AOAM530N1ZjGitgYEgGHjHS5WPju1xFxe2PS5as574pE1ZO8230udBHZ 0At+R1j0VvLMInW5zgUFVp5m9h6cXfBb/Zgzxp0= X-Google-Smtp-Source: ABdhPJxxmjSKvgp9dKqQ7oOZHSFSxRbpJdToqy+kLM2YF/4e+z5Lp8+zSTybQ+L4vbBGMXmKookuBwBsXCJGooEKYwE= X-Received: by 2002:a54:4196:: with SMTP id 22mr4683916oiy.30.1615155454125; Sun, 07 Mar 2021 14:17:34 -0800 (PST) MIME-Version: 1.0 References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Sun, 7 Mar 2021 22:16:58 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sun, Mar 7, 2021 at 9:51 PM Andrea Corallo wrote: > Pip Cet writes: > > On Sun, Mar 7, 2021 at 8:17 PM Andrea Corallo via Bug reports for GNU > > Emacs, the Swiss army knife of text editors > > wrote: > >> Eli Zaretskii writes: > >> >> From: Andrea Corallo > >> >> Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > >> >> Date: Sun, 07 Mar 2021 18:53:50 +0000 > >> What I think is going on here: > >> > >> The same .eln file is loaded two times, we detect that and try to reuse > >> the same compilation unit (the Lisp object) instead of a new one. > >> > >> We keep a pointer to the compilation unit representing the .eln file in > >> each .eln. Here we read it and we have it into 'saved_cu', we try to > >> dereference it and extract the CU with XNATIVE_COMP_UNIT but something > >> goes wrong. > >> > >> This object might have been GC'ed for some reason and we might be > >> looking at the same GC issue I've seen on 32bit wide-int (my guess). > >> *If* this is the case the question is: why is the CU GC'ed? > > > > Why wouldn't it be? I'm trying to follow along here :-) > > If the CU was GC'ed the eln should have been dlclosed. Wait, I thought this was on Windows? > If that's the > case at the next load we should get a fresh handle You're assuming 1. FreeLibrary() succeeded 2. The module's refcount was 1 3. The module wasn't pinned. If any of these assumptions is violated, the behavior would be precisely as observed. It's easy enough to test this: we can put a printf in dynlib_open which tells us whether we see the same handle more than once. > and 'saved_cu' should > be NULL (ops! Qnil... :/) because static allocated. Well, for one reason or another, it wasn't reset to Qnil. > Here what we see is that we are loading two times without dlclosing and > the object pointed by 'cu_saved' has some issue. I don't think so. I think we called dynlib_close(), it didn't actually unmap the library, and everything else follows. > So thinking about: the fact that the eln was never dlclosed should be > prove that the CU was not GC'ed and so I was wrong. I don't think you were wrong. Pip From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 07 22:31:43 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 03:31:43 +0000 Received: from localhost ([127.0.0.1]:41852 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ6cQ-0001JV-UD for submit@debbugs.gnu.org; Sun, 07 Mar 2021 22:31:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ6cP-0001JE-NP for 46256@debbugs.gnu.org; Sun, 07 Mar 2021 22:31:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40545) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJ6cJ-0006iC-6M; Sun, 07 Mar 2021 22:31:35 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3057 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJ6cH-0006Tv-KT; Sun, 07 Mar 2021 22:31:34 -0500 Date: Mon, 08 Mar 2021 05:31:26 +0200 Message-Id: <83tupms4mp.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sun, 07 Mar 2021 21:51:15 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, > andrewjmoreton@gmail.com > Date: Sun, 07 Mar 2021 21:51:15 +0000 > > > Why wouldn't it be? I'm trying to follow along here :-) > > If the CU was GC'ed the eln should have been dlclosed. If that's the > case at the next load we should get a fresh handle and 'saved_cu' should > be NULL (ops! Qnil... :/) because static allocated. > > Here what we see is that we are loading two times without dlclosing and > the object pointed by 'cu_saved' has some issue. > > So thinking about: the fact that the eln was never dlclosed should be > prove that the CU was not GC'ed and so I was wrong. This suggests also > that before further talking stupid I'd better say I'm done for the day > :) Thanks. Please tell me if you need me to provide some further data from this crashed session. If not, I will end the debugging session and will try to find a recipe for reproducing the crash, so we could see which of the guesses are true. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 00:55:16 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 05:55:16 +0000 Received: from localhost ([127.0.0.1]:41904 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ8rM-0004uq-6L for submit@debbugs.gnu.org; Mon, 08 Mar 2021 00:55:16 -0500 Received: from mail-oo1-f52.google.com ([209.85.161.52]:37755) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ8rG-0004uV-SB for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 00:55:15 -0500 Received: by mail-oo1-f52.google.com with SMTP id e17so1942554oow.4 for <46256@debbugs.gnu.org>; Sun, 07 Mar 2021 21:55:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=alcecVUzGGwCqa0c7RL4pyuWwuv366RWup6KwF9xDXQ=; b=LpX2VLKT9stvIct/uej1BatW5zPO/IFxXmE8J/FvnhcfZDT1hi6D47qBvxu/5l7aJ2 BnvYxbm88TSb2u7nwOmXYzu7FL83P+jeUjfgDNB+jT3/YCe7UcHfnPptot3KoGZm29fw klwMbG8Ph812lh1qxYRBDrbTKTthjypv3HwMODWhUj3+8P/qsiGArTX197VoHb6PFYG/ EGUonj1CGi2fHwTzZA8OuZLNmPzH8eKIKMrk78nodWyuKrWfPwMKvp4svvK6LmbjhtSB rCElPe15oIUCsJgAEjFYBqqNN8NrcTmQ8Zp/Ghav+/HNNaVVNE1qFxpjKRdExF6x1HK7 DueA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=alcecVUzGGwCqa0c7RL4pyuWwuv366RWup6KwF9xDXQ=; b=VgdLefRi/T1TdS4Zxa8U81tyjn5NGwIFUuIrnuMzCTLOWg10O2yGjllqTmfoMcNlYq Cd/HMiwaBytz1ul7VK4o40+dqjWw21l1k0XCtCBmQUOW3kjrBHTWGsYdB5ZAhC+brZkc Ky8DMr/cI3q45Jwe7Gmmz0ZyyU1FwXmsw2dZB84h4YhInAtiKadp8PFmJyP3QX4zGq+v 4vMjvMZ8C3c1KjlG0FP+osr9QAgybDGNgoUhGNLJGjq+TICCai6UKtK8DvR2PT1h7BIo mU9O4auSvtdhwc2wOgZ9+Z9HSkE/2uGBjek22Aca37cA9D2qynVvpt11rsIRM9k2SUCL l87w== X-Gm-Message-State: AOAM531dRvHYEU+VdWtmxFqxj06R4mTuDF55CId6RrFhXhjpN9dTjurv LZY9EaHsuUx7DHqf9vnxJfnoDYaXwb4IALwjpQg= X-Google-Smtp-Source: ABdhPJxblkTd5OQkjImyZrJBJRQGZXuXSuPSQZX5qwt12l7ZLrp+kJUlNU+ZjZjNKeaq5C2IWliYo4xSAhOElB/8XyY= X-Received: by 2002:a4a:2511:: with SMTP id g17mr17675104ooa.22.1615182905030; Sun, 07 Mar 2021 21:55:05 -0800 (PST) MIME-Version: 1.0 References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> In-Reply-To: <83tupms4mp.fsf@gnu.org> From: Pip Cet Date: Mon, 8 Mar 2021 05:54:28 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Mar 8, 2021 at 3:31 AM Eli Zaretskii wrote: > > From: Andrea Corallo > > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, > > andrewjmoreton@gmail.com > > Date: Sun, 07 Mar 2021 21:51:15 +0000 > > > > > Why wouldn't it be? I'm trying to follow along here :-) > > > > If the CU was GC'ed the eln should have been dlclosed. If that's the > > case at the next load we should get a fresh handle and 'saved_cu' should > > be NULL (ops! Qnil... :/) because static allocated. > > > > Here what we see is that we are loading two times without dlclosing and > > the object pointed by 'cu_saved' has some issue. > > > > So thinking about: the fact that the eln was never dlclosed should be > > prove that the CU was not GC'ed and so I was wrong. This suggests also > > that before further talking stupid I'd better say I'm done for the day > > :) > > Thanks. Please tell me if you need me to provide some further data > from this crashed session. If not, I will end the debugging session Do you have to end the crashed session to start a new one? I think we should keep it open for a while longer (or create a core dump, if that works?) and still try to test whether it's the dynlib_close()-might-not-close bug. > and will try to find a recipe for reproducing the crash, so we could > see which of the guesses are true. Here's what I did to reproduce the crash: 1. create a file "test.el": ;; -*- lexical-binding: t; -*- (defun testfun (x) (1+ x)) 2. Evaluate: (require 'comp) (native-elisp-load (native-compile "test.el")) (testfun 3) (fmakunbound 'testfun) (garbage-collect) (native-elisp-load (native-compile "test.el")) Note that this might not always work because of conservative GC. Pip From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 01:49:28 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 06:49:29 +0000 Received: from localhost ([127.0.0.1]:41921 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ9ho-0006Rz-Iv for submit@debbugs.gnu.org; Mon, 08 Mar 2021 01:49:28 -0500 Received: from mail-ot1-f54.google.com ([209.85.210.54]:40299) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJ9hi-0006Rh-8n for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 01:49:26 -0500 Received: by mail-ot1-f54.google.com with SMTP id b8so8215096oti.7 for <46256@debbugs.gnu.org>; Sun, 07 Mar 2021 22:49:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=w7d3QnlVieag0W3FrkEWl2EBJBP3zPZxNJy3GJGj82Q=; b=TILmeO6pA6BFcBxR2jbwDpuOaNnt+doHL0olpsb2pJjlkC1+xbTfJ4Du2Qoj16TWpJ R3bV7dXuLeJM3QLW1GPzi6wosh6/9rddWpuMBmbFyhSkLbzjVkAnf6TqsiAfTI5icRTY Vfmwhy+ibCGaneOMmad8yfnADnCjmiGzqeW0FAfnvkKG3UvmUeWWJ5mhPiZTR3VeaEBr VS4WlQz8OtcB5Mw4srBsCd4h5gLtEYbfhOE5RqVxJEh2HD8xkX72u+WYCsfsIu026fkN L0dU+NWwFctUXLKJGaVGVUQwGY0qk/FaGsk761TbytnNMzHAHBpdcLwV5LO15T1r/bID iGtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=w7d3QnlVieag0W3FrkEWl2EBJBP3zPZxNJy3GJGj82Q=; b=Xxgn7tn6iPB4biGdL6jJ1Dz9Qezxte5aMDcSKtaIfx5+1aDxoLu+rCFBPitJXcxGhY r3C4SMzBQh3gPTib5RXEPnm7A6Ksz8/KQzqfBdE9Ipp5vkwUxu7OzH+ZOpz4CrlPIX6h gzOgt7p8D9y+vfTaSa2DoPu1Jm7Wa/5SSupwZb4n/lLdvNQRjr/3V+dIYcjUFfELzBCN /CTabIqXNMMRnYcSmWRN0T9pwR8bVJ0ZIDBAGAAchwEbELIJlTdAvkICQjityHTOm2Rj BHqOA2UVI/Ed/1YqilxwTYGkgPQf1jNZ4OJZGSXg3SW+ONJcXI5iskvBKCfFXoABRkre C2xw== X-Gm-Message-State: AOAM533mwpYumZadzgH9QOXd+bi0jX0JYoTaQd1oJjweZi8URJMsRtXp gvdY2BwfTqZ0Nk7Rpgd45dPTluHc49tuAGmrMeo= X-Google-Smtp-Source: ABdhPJw8Uwge2J6AiHEwsrKF7RYFAbehmRblOpz7F1WWueE/M5RkJi0xplZCxcLpEhcMDjTxIVKiRdqu6difg+hD8EU= X-Received: by 2002:a05:6830:1e51:: with SMTP id e17mr18461873otj.292.1615186156653; Sun, 07 Mar 2021 22:49:16 -0800 (PST) MIME-Version: 1.0 References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Mon, 8 Mar 2021 06:48:40 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: multipart/mixed; boundary="0000000000001d280905bd00d58d" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000001d280905bd00d58d Content-Type: text/plain; charset="UTF-8" On Mon, Mar 8, 2021 at 5:54 AM Pip Cet wrote: > Note that this might not always work because of conservative GC. If it doesn't work, can you simply retry a few times? Eventually there shouldn't be references to the stale native_comp_unit on the stack. However, I think I've worked out why dynlib_close doesn't do its job: Fnative_elisp_load creates a comp unit, but, if the shared library has already been initialized, it doesn't set that comp unit's comp_unit variable to point to the new comp unit; instead, it will continue pointing to the first comp unit which still has it open. Then, the original comp unit is unloaded but not the new one created by Fnative_elisp_load. We call dynlib_close() once, but we called it twice before, leaving the shared library open and initialized. Then, we try to load the comp unit again, and follow the stale comp_unit variable pointing to the original comp unit. Fix should be as attached. Note the fix is, at worst, harmless (unless I messed up), so we should apply it anyway just because it's good not to leave stale pointers lying around even if we hope that the OS unmaps them at some point. Pip --0000000000001d280905bd00d58d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-stale-pointers-in-comp-units-causing-crashes-bug.patch" Content-Disposition: attachment; filename="0001-Fix-stale-pointers-in-comp-units-causing-crashes-bug.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_km082jdu0 RnJvbSBhMmFiOTcwMWU0OGU1NDQzODA5NjY0ZDUwYzkyNGI5ZDgzMDYyYjRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBTdW4s IDcgTWFyIDIwMjEgMjE6MjY6MjkgKzAwMDAKU3ViamVjdDogW1BBVENIXSBGaXggc3RhbGUgcG9p bnRlcnMgaW4gY29tcCB1bml0cyBjYXVzaW5nIGNyYXNoZXMgIChidWcjNDYyNTYpCgoqIHNyYy9h bGxvYy5jIChjbGVhbnVwX3ZlY3Rvcik6IENhbGwgdW5sb2FkX2NvbXBfdW5pdC4KKiBzcmMvY29t cC5jICh1bmxvYWRfY29tcF91bml0KTogTmV3IGZ1bmN0aW9uLgotLS0KIHNyYy9hbGxvYy5jIHwg IDMgKy0tCiBzcmMvY29tcC5jICB8IDE0ICsrKysrKysrKysrKysrCiBzcmMvY29tcC5oICB8ICAy ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2FsbG9jLmMgYi9zcmMvYWxsb2MuYwppbmRleCBhZjA4MzM2MTc3MDcw Li5mZWU4Y2MwOGFhNDgzIDEwMDY0NAotLS0gYS9zcmMvYWxsb2MuYworKysgYi9zcmMvYWxsb2Mu YwpAQCAtMzE1Nyw4ICszMTU3LDcgQEAgY2xlYW51cF92ZWN0b3IgKHN0cnVjdCBMaXNwX1ZlY3Rv ciAqdmVjdG9yKQogICAgIHsKICAgICAgIHN0cnVjdCBMaXNwX05hdGl2ZV9Db21wX1VuaXQgKmN1 ID0KIAlQU0VVRE9WRUNfU1RSVUNUICh2ZWN0b3IsIExpc3BfTmF0aXZlX0NvbXBfVW5pdCk7Ci0g ICAgICBlYXNzZXJ0IChjdS0+aGFuZGxlKTsKLSAgICAgIGR5bmxpYl9jbG9zZSAoY3UtPmhhbmRs ZSk7CisgICAgICB1bmxvYWRfY29tcF91bml0IChjdSk7CiAgICAgfQogICBlbHNlIGlmIChOQVRJ VkVfQ09NUF9GTEFHCiAJICAgJiYgUFNFVURPVkVDVE9SX1RZUEVQICgmdmVjdG9yLT5oZWFkZXIs IFBWRUNfU1VCUikpCmRpZmYgLS1naXQgYS9zcmMvY29tcC5jIGIvc3JjL2NvbXAuYwppbmRleCBi NjhhZGYzMWQ2OGJkLi5jOWUwNjhiOTBhYTJjIDEwMDY0NAotLS0gYS9zcmMvY29tcC5jCisrKyBi L3NyYy9jb21wLmMKQEAgLTQ5MzYsNiArNDkzNiwyMCBAQCBsb2FkX2NvbXBfdW5pdCAoc3RydWN0 IExpc3BfTmF0aXZlX0NvbXBfVW5pdCAqY29tcF91LCBib29sIGxvYWRpbmdfZHVtcCwKICAgcmV0 dXJuIHJlczsKIH0KIAordm9pZAordW5sb2FkX2NvbXBfdW5pdCAoc3RydWN0IExpc3BfTmF0aXZl X0NvbXBfVW5pdCAqY3UpCit7CisgIGlmIChjdS0+aGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJu OworCisgIExpc3BfT2JqZWN0ICpzYXZlZF9jdSA9IGR5bmxpYl9zeW0gKGN1LT5oYW5kbGUsIENP TVBfVU5JVF9TWU0pOworICBMaXNwX09iamVjdCB0aGlzX2N1OworICBYU0VUTkFUSVZFX0NPTVBf VU5JVCAodGhpc19jdSwgY3UpOworICBpZiAoRVEgKHRoaXNfY3UsICpzYXZlZF9jdSkpCisgICAg KnNhdmVkX2N1ID0gUW5pbDsKKyAgZHlubGliX2Nsb3NlIChjdS0+aGFuZGxlKTsKK30KKwogTGlz cF9PYmplY3QKIG5hdGl2ZV9mdW5jdGlvbl9kb2MgKExpc3BfT2JqZWN0IGZ1bmN0aW9uKQogewpk aWZmIC0tZ2l0IGEvc3JjL2NvbXAuaCBiL3NyYy9jb21wLmgKaW5kZXggZjdkMTdmMzk4Yzc1ZC4u ZDAxYmMxNzU2NWQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2NvbXAuaAorKysgYi9zcmMvY29tcC5oCkBA IC03OCw2ICs3OCw4IEBAIFhOQVRJVkVfQ09NUF9VTklUIChMaXNwX09iamVjdCBhKQogZXh0ZXJu IExpc3BfT2JqZWN0IGxvYWRfY29tcF91bml0IChzdHJ1Y3QgTGlzcF9OYXRpdmVfQ29tcF9Vbml0 ICpjb21wX3UsCiAJCQkJICAgYm9vbCBsb2FkaW5nX2R1bXAsIGJvb2wgbGF0ZV9sb2FkKTsKIAor ZXh0ZXJuIHZvaWQgdW5sb2FkX2NvbXBfdW5pdCAoc3RydWN0IExpc3BfTmF0aXZlX0NvbXBfVW5p dCAqKTsKKwogZXh0ZXJuIExpc3BfT2JqZWN0IG5hdGl2ZV9mdW5jdGlvbl9kb2MgKExpc3BfT2Jq ZWN0IGZ1bmN0aW9uKTsKIAogZXh0ZXJuIHZvaWQgc3ltc19vZl9jb21wICh2b2lkKTsKLS0gCjIu MzAuMQoK --0000000000001d280905bd00d58d-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 05:14:41 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 10:14:41 +0000 Received: from localhost ([127.0.0.1]:42194 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJCuP-00030V-6O for submit@debbugs.gnu.org; Mon, 08 Mar 2021 05:14:41 -0500 Received: from mx.sdf.org ([205.166.94.24]:59424) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJCuL-00030I-V0 for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 05:14:40 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 128AEZ6O019698 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Mon, 8 Mar 2021 10:14:35 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> Date: Mon, 08 Mar 2021 10:14:35 +0000 In-Reply-To: (Pip Cet's message of "Mon, 8 Mar 2021 06:48:40 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Pip Cet writes: > On Mon, Mar 8, 2021 at 5:54 AM Pip Cet wrote: >> Note that this might not always work because of conservative GC. > > If it doesn't work, can you simply retry a few times? Eventually there > shouldn't be references to the stale native_comp_unit on the stack. > > However, I think I've worked out why dynlib_close doesn't do its job: > > Fnative_elisp_load creates a comp unit, but, if the shared library has > already been initialized, it doesn't set that comp unit's comp_unit > variable to point to the new comp unit; instead, it will continue > pointing to the first comp unit which still has it open. > > Then, the original comp unit is unloaded but not the new one created > by Fnative_elisp_load. We call dynlib_close() once, but we called it > twice before, leaving the shared library open and initialized. > > Then, we try to load the comp unit again, and follow the stale > comp_unit variable pointing to the original comp unit. > > Fix should be as attached. Note the fix is, at worst, harmless (unless > I messed up), so we should apply it anyway just because it's good not > to leave stale pointers lying around even if we hope that the OS > unmaps them at some point. > > Pip Hi Pip, thanks for the analysis, I'm not sure I followed 100% so I'll repeat to make sure we are on the same page, please correct me in case. IIUC (and make sense to me) the issue is that we are leaving two pointer pointing to the same handle: One is in the CU_2 allocated by 'Fnative_elisp_load' and later discarded by 'load_comp_unit' when reloading the same filename. The other is the original CU_1 created the first time this filename was loaded. When CU_2 will be GC'ed because discarded we'll get the problem because we'll dlclose the handle. Is this correct? In case isn't the attached curing the issue as well? Thanks Andrea PS I couldn't reproduce using the lisp reproducer both on my 64bit both on my 32bit system (I left it looping for a while), is that reproducer working for you? --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=dlclose.patch diff --git a/src/alloc.c b/src/alloc.c index af08336177..0bea10610f 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -3157,8 +3157,8 @@ cleanup_vector (struct Lisp_Vector *vector) { struct Lisp_Native_Comp_Unit *cu = PSEUDOVEC_STRUCT (vector, Lisp_Native_Comp_Unit); - eassert (cu->handle); - dynlib_close (cu->handle); + if (cu->handle) + dynlib_close (cu->handle); } else if (NATIVE_COMP_FLAG && PSEUDOVECTOR_TYPEP (&vector->header, PVEC_SUBR)) diff --git a/src/comp.c b/src/comp.c index e6f672de25..abc3535dc6 100644 --- a/src/comp.c +++ b/src/comp.c @@ -4832,6 +4832,10 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, We must *never* mess with static pointers in an already loaded eln. */ { + /* Invalidate the handle for the CU we are leaving for garbage + collection. */ + comp_u->handle = NULL; + /* Swap CU for the old one. */ comp_u_lisp_obj = *saved_cu; comp_u = XNATIVE_COMP_UNIT (comp_u_lisp_obj); comp_u->loaded_once = true; --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 05:46:33 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 10:46:33 +0000 Received: from localhost ([127.0.0.1]:42217 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJDPF-0003ld-GL for submit@debbugs.gnu.org; Mon, 08 Mar 2021 05:46:33 -0500 Received: from mail-ot1-f54.google.com ([209.85.210.54]:40254) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJDPE-0003lP-5h for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 05:46:32 -0500 Received: by mail-ot1-f54.google.com with SMTP id b8so8710879oti.7 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 02:46:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IqIGNIyahE4o3NRt+ifZmyU9MWdiamly1qR+yd8d/EU=; b=fzDMjWxmHt7/nUWQLSYkjcZrvOXNSjdHnu86Oc37V0KgTGvztiLenaYd8gS2nhcgWS AelRFMYoSiV+YMB4x0w+rtqwSc7gWWdPdyBe+F8XYMblBQFol2Tfm3ZVzRPMXgcHJuWv nNaTb4Swqfta5so4o5b3P9oTzD8cYQnEhxRyBZmkfGFTgljG870dsjNdN1qm56yoP+In zcL+5UOcE10wputcZWcKPqg+ofKRu6XZ2Jt+doNvTIKwdOXAtKChpccoQuZLyfzaD7VJ VOajzDY3SGVJbaD2P5YyzbkUxpfmRxwBDHeulkbql5W31ljOZxyf/HqH05GKDd9nPc1D SMZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IqIGNIyahE4o3NRt+ifZmyU9MWdiamly1qR+yd8d/EU=; b=EzHR5VfKOr5XOZqqClTOjwq9DrTTLbMEiBcU5nrn1hphYNFEkODRZMZlCUjb4Wl5w3 XAXZyQuF2Ayq+QMnUXCbn8PNigJISAfyDeQm2jGx20RGay9xju3I0Rc9+TO5vAxdBUjk rLJj8kYeFCEc+PINBVxlDyyX2uk4rIAXQtsLJ7S4LEQlYjeiH2ZgGuwSPuE2xcSXxZUk UvJyG0OHbsy62mxfMqwSNd08oYLz2KeHnOvNR/5MsNiSKZf53DB1G/a7eqlQcV0znp1s MgWQNZvhJPLJiVQuYhbCA6j4MS7JyYcTlryvN9c7QWjXBIIVW5FQpbnXFveth+m7MkH4 vP+A== X-Gm-Message-State: AOAM531T5eUCkb6Htf+HxBdJ3KqwNl6UDLIKGhfA9ukkMSiIXbge0v0t S+1zTBezR4SuaHspnz7TptuvLaYHDsnzhs1B3mQ= X-Google-Smtp-Source: ABdhPJyv1OH5OygfOfxtKn6g9E6UkbGB2VTsRPHFOd+13l9Bw0YGdhI+gfM13d1uuQBOYFJ9mo2gH7aP2d9X0JWAGD8= X-Received: by 2002:a9d:6e8d:: with SMTP id a13mr3981870otr.287.1615200386494; Mon, 08 Mar 2021 02:46:26 -0800 (PST) MIME-Version: 1.0 References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Mon, 8 Mar 2021 10:45:49 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Mar 8, 2021 at 10:14 AM Andrea Corallo wrote: > Hi Pip, > > thanks for the analysis, I'm not sure I followed 100% so I'll repeat to > make sure we are on the same page, please correct me in case. Thanks for that! > IIUC (and make sense to me) the issue is that we are leaving two pointer > pointing to the same handle: One is in the CU_2 allocated by > 'Fnative_elisp_load' and later discarded by 'load_comp_unit' when > reloading the same filename. The other is the original CU_1 created the > first time this filename was loaded. > > When CU_2 will be GC'ed because discarded we'll get the problem because > we'll dlclose the handle. Is this correct? CU_1 is GC'ed first. CU_2, for whatever reason, isn't GC'ed in the same cycle. > In case isn't the attached curing the issue as well? I don't think so. The problem is that we have an invalid Lisp_Object in the shared library, not that we're calling dlclose() too often.. Again, there's no real cost to fixing this: at best, we avoid a catastrophic use-after-free. At worst, we nulled out a word of memory only for it to be unmapped a moment later, no harm done. > PS I couldn't reproduce using the lisp reproducer both on my 64bit both > on my 32bit system (I left it looping for a while), is that reproducer > working for you? Have you modified dynlib_open() to leak the shared object? That's what I think might be happening for Eli, so it makes sense to test with a double dlopen() call, as I did. FWIW, I suspect the reproducer should crash with your patch applied, but I can't test right now :-) Thanks Pip From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 08:26:44 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 13:26:44 +0000 Received: from localhost ([127.0.0.1]:42362 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJFuG-0001ZK-1V for submit@debbugs.gnu.org; Mon, 08 Mar 2021 08:26:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:57912) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJFuE-0001Z6-KR for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 08:26:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:46889) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJFu9-0007N8-At; Mon, 08 Mar 2021 08:26:37 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3771 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJFu8-0005Fp-8Z; Mon, 08 Mar 2021 08:26:36 -0500 Date: Mon, 08 Mar 2021 15:26:27 +0200 Message-Id: <83r1kpsrng.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Sun, 7 Mar 2021 22:16:58 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Sun, 7 Mar 2021 22:16:58 +0000 > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > >> This object might have been GC'ed for some reason and we might be > > >> looking at the same GC issue I've seen on 32bit wide-int (my guess). > > >> *If* this is the case the question is: why is the CU GC'ed? > > > > > > Why wouldn't it be? I'm trying to follow along here :-) > > > > If the CU was GC'ed the eln should have been dlclosed. > > Wait, I thought this was on Windows? Yes, and...? > > If that's the > > case at the next load we should get a fresh handle > > You're assuming > 1. FreeLibrary() succeeded > 2. The module's refcount was 1 > 3. The module wasn't pinned. > > If any of these assumptions is violated, the behavior would be > precisely as observed. Why would any of the above assumptions be violated? From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 08:53:33 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 13:53:33 +0000 Received: from localhost ([127.0.0.1]:42410 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJGKC-0002Fw-PD for submit@debbugs.gnu.org; Mon, 08 Mar 2021 08:53:32 -0500 Received: from mail-ot1-f46.google.com ([209.85.210.46]:34607) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJGKB-0002Fh-7X for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 08:53:31 -0500 Received: by mail-ot1-f46.google.com with SMTP id n23so3586840otq.1 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 05:53:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Mu2Vfc3uBseULLEEM3LQ7RrvF5YUxATkR44sftX4EPs=; b=UaYQrX6fYrOUP961tWjj6X/9NxMXAJl7RAgZHlnnhd/entAA9ra7rOG91p7FkGZ1nw MyBKRTDspBD0wjjrR3bBZmfxiBQ9ygjRCnbVfoL62CeXS/oCIaZ/C9FsO2oGMhRjbhta jUV6wqeiNRrT9krSwQJkKniegF+kA7L7yh6Ah51kmVZPzOR+iVBvxqTYQJJ87aabQKsb p7aSmBtxFjgDCY6CDC0gXyqwZsqeLKbhoaqN39zXUaE6son0HcT0qJWlHg13rjU7Z35M Vufq0TOFziQaZgLgoNJNzZGK/KcKqBHUIIdQC/d9OMjypns7HH5deFr3wxSmAQyzrVYx WIlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Mu2Vfc3uBseULLEEM3LQ7RrvF5YUxATkR44sftX4EPs=; b=YjonZo1YhWU708oGW1+cdC/Cf1qDPXm4OiCb7gAXeEApuZWvqc80JtHqeaaYb6DHOk aEdE/lflQ4HF9P66Z4mgLl3rm14DDY2JMXB0jsveQbDZQrupdbTdSZwD5f1A1Xh6RMo5 55d9RVl0KGgu38Q5Vp1XvQ0/b6nWXxBZHtC9++XCKCMFuNWsWQvchp0CKVQ3+t6TGt5N WrQ0RbIUzrgg85rBnDSSHAkGuZgLkb0HEW2aKTSMktsRjK2bagqJE1EXeULKVrNY3iZe M7GR+cyxQnJNdtnqddx33b7pE/SELFf6hXn4XpKtLxWbrNbFIAW6dYzG2x8vjdAdoJox 8HXQ== X-Gm-Message-State: AOAM5300hDdEP/5fZegOesGgeaB88yQB3le6U11uOGgQJSVXAwPVstzJ HZgpS1NGCJnsMoa6Y/MzYouIdZke/5nu1eFD4tY= X-Google-Smtp-Source: ABdhPJyL/PVnzQHTIhMjmoDQBophJtLPysfUa9oRglB8DQNlnGIKU/ajoFgqMYXl02zXVZuWM2uYfgpXRsKdPsVDDHQ= X-Received: by 2002:a05:6830:1011:: with SMTP id a17mr17646308otp.154.1615211605435; Mon, 08 Mar 2021 05:53:25 -0800 (PST) MIME-Version: 1.0 References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83r1kpsrng.fsf@gnu.org> In-Reply-To: <83r1kpsrng.fsf@gnu.org> From: Pip Cet Date: Mon, 8 Mar 2021 13:52:49 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Mar 8, 2021 at 1:26 PM Eli Zaretskii wrote: > > From: Pip Cet > > Date: Sun, 7 Mar 2021 22:16:58 +0000 > > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > If the CU was GC'ed the eln should have been dlclosed. > > > > Wait, I thought this was on Windows? > > Yes, and...? No dlclose() on Windows. FreeLibrary() is documented to behave differently from dlclose(), and I don't have a Windows system to test whether it's actually different in practice. > > > If that's the > > > case at the next load we should get a fresh handle > > > > You're assuming > > 1. FreeLibrary() succeeded > > 2. The module's refcount was 1 > > 3. The module wasn't pinned. > > > > If any of these assumptions is violated, the behavior would be > > precisely as observed. > > Why would any of the above assumptions be violated? I have several suspicions, including "because the second compilation unit referring to the same handle hasn't been collected". Because that is definitely a bug, and one we should fix, and then we can debug this issue more if and when it reappears. Pip From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 09:12:15 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 14:12:15 +0000 Received: from localhost ([127.0.0.1]:42438 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJGcJ-0002ij-J9 for submit@debbugs.gnu.org; Mon, 08 Mar 2021 09:12:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41530) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJGcI-0002iX-68 for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 09:12:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48065) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJGcC-00024U-Va; Mon, 08 Mar 2021 09:12:08 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2609 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJGcA-0001b6-B1; Mon, 08 Mar 2021 09:12:07 -0500 Date: Mon, 08 Mar 2021 16:11:59 +0200 Message-Id: <83eegpspjk.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 05:54:28 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 05:54:28 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > Thanks. Please tell me if you need me to provide some further data > > from this crashed session. If not, I will end the debugging session > > Do you have to end the crashed session to start a new one? I can start a new one, but I cannot (easily) build a modified Emacs as long as the crashed session runs. And even if I do build a new version, as soon as I "git pull", the sources will not match the binary in the debugging session, and debugging becomes ... interesting. > I think we should keep it open for a while longer (or create a core > dump, if that works?) and still try to test whether it's the > dynlib_close()-might-not-close bug. Core dumps aren't supported on Windows. As for testing the dynlib hypothesis: how can this session help? If this is the problem, it already happened, and the Emacs process is already all but dead: it hit a fatal assertion violation. I cannot run the debuggee anymore, all I can do is examine existing variables. If there are some variables you want me to examine, please tell, and I will report their values. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 09:28:03 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 14:28:03 +0000 Received: from localhost ([127.0.0.1]:42476 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJGra-00037K-Qd for submit@debbugs.gnu.org; Mon, 08 Mar 2021 09:28:03 -0500 Received: from mail-ot1-f47.google.com ([209.85.210.47]:40686) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJGrZ-000371-J3 for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 09:28:01 -0500 Received: by mail-ot1-f47.google.com with SMTP id b8so9316573oti.7 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 06:28:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pq48T7MbM71D/F6fITKPTxp+Jaq1rBJ5sGmtvVaVQjc=; b=DCy89JOEjMqZOaZ7h/qBNKo6SUyJ5mNzaDnctntIEpZOqiPhViaGZM66qGaEvw1tIA +QroKvmW5dchDAEjO+nVxJgw6seKcGsv5+rzStsgXj1IqT17RXJ1SNpvbBqu5BDaZ8M6 ShhJVsIWY2nmWHDs0tRyNWs4GOTD+fgjUXOs5gXA97AEy7fyoQtnKxRG4bStigA7kYiC 4YaeuuiW/c4SJCvYbSWvEAwqIxYrRqdAa7ujfNtX5sgB7JL6f2nHkN1kdQiB+9XtDnK2 2ZaV+tyrELz6qBLWYgtiW2FF48BcRyUbHQjM4RuzKESGlrHu3IOhqPqdlcWkEZ/Xf99q DHcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pq48T7MbM71D/F6fITKPTxp+Jaq1rBJ5sGmtvVaVQjc=; b=befcWLiZ68GmckSDkoTahQX3PQIVFVb2EIKaZSm+3a9hhYuSJ5pBlP5k+M7S1rUPDY Rhjp1G/ckIMwNAkNc3X7ZD0OqS6goP+FN/XwIVfKlwhWYsjGheFJJi8F6JCIBDCXCJ32 xcQMlpHgIaxN/9V+nDnMtpJlu37F3vAH9vWEnCSd2dNgh7ayp+et5LLRNOi2PZHZjgtt d5g6ZCsFI0WPjSwxnGLeqzRm7dr6Ee43Hsote8biWKzrdtYRkFvXnXZOgWCYNBGoESVY x4syfQPwc9fRcawMxqF0tt8Cv5g2w+LM75eT46W17+L6JJwxOrYJti1MoTzr1982pLeG 359A== X-Gm-Message-State: AOAM530pM8/eD6A2FqrGshG0rcd8c9OUfCVK93FAnH7kECv/3qdIKBEw 2AnoLoJ7GmjwyfsK67q2gWDZrlJHgNx3Q1DPTvs= X-Google-Smtp-Source: ABdhPJyFJIxXomL+nqj1GT+gj2iQ52r2XXHbOckiGLwLrDWYedOBbLeqlGBxkiPVwdAEm0XwvMy0qC2B6npWG98hyWA= X-Received: by 2002:a05:6830:1e51:: with SMTP id e17mr19838625otj.292.1615213676023; Mon, 08 Mar 2021 06:27:56 -0800 (PST) MIME-Version: 1.0 References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> In-Reply-To: <83eegpspjk.fsf@gnu.org> From: Pip Cet Date: Mon, 8 Mar 2021 14:27:19 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Mar 8, 2021 at 2:12 PM Eli Zaretskii wrote: > > I think we should keep it open for a while longer (or create a core > > dump, if that works?) and still try to test whether it's the > > dynlib_close()-might-not-close bug. > > Core dumps aren't supported on Windows. Thanks, I did not know that. > As for testing the dynlib > hypothesis: how can this session help? If this is the problem, it > already happened, and the Emacs process is already all but dead: it > hit a fatal assertion violation. I cannot run the debuggee anymore, > all I can do is examine existing variables. If there are some > variables you want me to examine, please tell, and I will report their > values. I would be interested in the pseudovector type of the variable that is supposed to be a comp_unit, but isn't. I think that's all the information of value that debuggee still has... Pip From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 09:39:51 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 14:39:51 +0000 Received: from localhost ([127.0.0.1]:42492 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJH31-0003Oq-0P for submit@debbugs.gnu.org; Mon, 08 Mar 2021 09:39:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49346) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJH2z-0003Od-Mv for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 09:39:50 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48863) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJH2t-0005T5-PG; Mon, 08 Mar 2021 09:39:43 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4296 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJH2s-0000d8-VV; Mon, 08 Mar 2021 09:39:43 -0500 Date: Mon, 08 Mar 2021 16:39:35 +0200 Message-Id: <83blbtso9k.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 13:52:49 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83r1kpsrng.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 13:52:49 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > > Wait, I thought this was on Windows? > > > > Yes, and...? > > No dlclose() on Windows. Why does this matter in this case? (And I do have dlclose in a standard library that comes with MinGW, btw. Not that it's relevant.) > FreeLibrary() is documented to behave differently from dlclose() It is? In what way? > and I don't have a Windows system to test whether it's actually > different in practice. Well, how about explaining the details in terms that are simple enough that I could understand and do the testing? Until now, you and Andrea have been talking Chinese as far as I'm concerned. Please be aware that I don't know half the details you two do about native-comp internals, and will never be able to know that: too many other things on my plate and too little time. Can you perhaps explain the issue without alluding to CU_1, CU_2, Fnative_elisp_load etc., and without assuming that their interactions are common knowledge? > > Why would any of the above assumptions be violated? > > I have several suspicions, including "because the second compilation > unit referring to the same handle hasn't been collected". Because that > is definitely a bug, and one we should fix, and then we can debug this > issue more if and when it reappears. More Chinese. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 09:51:34 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 14:51:34 +0000 Received: from localhost ([127.0.0.1]:42502 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHEM-0003fx-BD for submit@debbugs.gnu.org; Mon, 08 Mar 2021 09:51:34 -0500 Received: from mail-ot1-f50.google.com ([209.85.210.50]:45539) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHEK-0003fk-Cx for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 09:51:33 -0500 Received: by mail-ot1-f50.google.com with SMTP id r24so1287828otp.12 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 06:51:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=EPUbaZF0JJfK8jypQ5FqPqfcgvyORqaXNZX1tkt3b84=; b=HP2C4hCh8MbuSJzgPkwBxKkEtnWdI7nI6i/IQwwOJuqmzPdent3JgE3HOMfWxkPtIK HWnGp1vCo2jQAqR4dFWPVbkd7qnC82HEgpI71PHsKEIk961qN6ELMLTVlz8jfUNkwl5+ H7FZVoQ6Pz9P1Gx7ZfCE6iCgeh268hqLK6Zqj36a9WXED40t3DGfvkPWUbtyU88Rojbv 75BjtXQUxbEL2jSPsFvfXqL5YjWTFCFRSm3j+X9Xpb/VUOTQ8EZ++3tOSx1/AibHeNXD 9hXKNPMMfv1CPhHNgme9R1qV3/l3ZDHN/TIv/A+F+nrIvxeXsNDZbZM4P1gQTQlmxBf0 LK8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EPUbaZF0JJfK8jypQ5FqPqfcgvyORqaXNZX1tkt3b84=; b=Jo7C2qO0WgWJCjqGUWQemd4SF+ZkD7OBCyAdG90TivvjuLxb7N44JRHgxk+0diJUnC awSK9mKKWjBuk7ltpzZJnHTD3FVpIlqK3eRIu0Mx1MJsrfmtQ0du7ij7gyz/XRCIQjhD TNlRfzMvikthKpnmPW0hVRj5E37AA38rfIvYWY/ODXkXuI0GpQ0Wzy+ToDFQSpR6MT3s eaRViCnUo06ua35ottoFC9hcI8OsGbGo+F8SelbDG0QuhWmZTkvD5VLYPklkh+McOAEw gxHSX47VYcmZiita3nkT/BRHsK4RmWSRXZHwPUdhW9zMvMyPuIaJT0BG9svyKfdLxP+e SUQw== X-Gm-Message-State: AOAM533SV2bDbjcQX/p3vrsn8URhTKajciQlZIs+eprsXDCiyYKfn6i6 8JnmfJIHxpMW3PbrzOyNexk4DD8VVFTolPN+7JM= X-Google-Smtp-Source: ABdhPJyXbhwCAerY2Od3uOVYq+i3X7SMPyDTjOTNU5WxqwXmd2dY5RINmU/ZzGIVSqgMkPNB1ETMZPxnUetNVewMLOA= X-Received: by 2002:a05:6830:1011:: with SMTP id a17mr17871893otp.154.1615215086609; Mon, 08 Mar 2021 06:51:26 -0800 (PST) MIME-Version: 1.0 References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83r1kpsrng.fsf@gnu.org> <83blbtso9k.fsf@gnu.org> In-Reply-To: <83blbtso9k.fsf@gnu.org> From: Pip Cet Date: Mon, 8 Mar 2021 14:50:50 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Mar 8, 2021 at 2:39 PM Eli Zaretskii wrote: > > From: Pip Cet > > Date: Mon, 8 Mar 2021 13:52:49 +0000 > > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > > > > Wait, I thought this was on Windows? > > > > > > Yes, and...? > > > > No dlclose() on Windows. > > Why does this matter in this case? (And I do have dlclose in a > standard library that comes with MinGW, btw. Not that it's relevant.) We don't use dlclose() on Windows. FreeLibrary() is documented not to unload the library in certain cases, and to return a failure code. > > FreeLibrary() is documented to behave differently from dlclose() > > It is? In what way? Libraries can be pinned, and it can fail without a clear list of potential failure reasons in the documentation. Not that dlclose() is better according to the documentation, but there, the source is available... > > and I don't have a Windows system to test whether it's actually > > different in practice. > > Well, how about explaining the details in terms that are simple enough > that I could understand and do the testing? Excellent idea. I'll try! > Until now, you and Andrea > have been talking Chinese as far as I'm concerned. Please be aware > that I don't know half the details you two do about native-comp > internals, and will never be able to know that: too many other things > on my plate and too little time. Can you perhaps explain the issue > without alluding to CU_1, CU_2, Fnative_elisp_load etc., and without > assuming that their interactions are common knowledge? Native-comp uses a pseudo-vector type representing a dlopen()ed handle. In addition to the handle being stored in the pseudo-vector, a pointer to the pseudo-vector is stored in the data space belonging to the handle. I'll refer to that as the "reverse pointer" because I can't think of a better term right now. When we cleanup the pseudo-vector, we don't reset the reverse pointer to NULL, or Qnil. That is because we assume that the dlclose() we perform on cleanup will unmap the data space belonging to the handle, anyway. That assumption is wrong in certain specific circumstances. In those circumstances, the reverse pointer is dereferenced after the vector has been deallocated. It points to a random different vector now. > > > Why would any of the above assumptions be violated? > > > > I have several suspicions, including "because the second compilation > > unit referring to the same handle hasn't been collected". Because that > > is definitely a bug, and one we should fix, and then we can debug this > > issue more if and when it reappears. > > More Chinese. (Upon rereading, I agree. My bad.) One of the circumstances in which the assumption (that the reverse pointer won't be used) becomes invalid is when two pseudo-vectors share a handle (and, thus, a reverse pointer). But the reverse pointer can only point to one of them, and it might be the wrong one. My patch, thus, resets the reverse pointer to Qnil when cleanup is performed. In addition, it does so only if the reverse pointer actually pointed to the pseudo-vector being cleaned-up, rather than to a different one, to handle a corner case in the code. Pip From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 10:03:05 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 15:03:05 +0000 Received: from localhost ([127.0.0.1]:44516 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHPV-0004Te-Km for submit@debbugs.gnu.org; Mon, 08 Mar 2021 10:03:05 -0500 Received: from mx.sdf.org ([205.166.94.24]:58762) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHPQ-0004T8-BX for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 10:03:04 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 128F2wQi024246 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Mon, 8 Mar 2021 15:02:59 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> Date: Mon, 08 Mar 2021 15:02:58 +0000 In-Reply-To: (Pip Cet's message of "Mon, 8 Mar 2021 10:45:49 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Mon, Mar 8, 2021 at 10:14 AM Andrea Corallo wrote: >> Hi Pip, >> >> thanks for the analysis, I'm not sure I followed 100% so I'll repeat to >> make sure we are on the same page, please correct me in case. > > Thanks for that! > >> IIUC (and make sense to me) the issue is that we are leaving two pointer >> pointing to the same handle: One is in the CU_2 allocated by >> 'Fnative_elisp_load' and later discarded by 'load_comp_unit' when >> reloading the same filename. The other is the original CU_1 created the >> first time this filename was loaded. >> >> When CU_2 will be GC'ed because discarded we'll get the problem because >> we'll dlclose the handle. Is this correct? > > CU_1 is GC'ed first. CU_2, for whatever reason, isn't GC'ed in the same cycle. > >> In case isn't the attached curing the issue as well? > > I don't think so. The problem is that we have an invalid Lisp_Object > in the shared library, not that we're calling dlclose() too often.. > > Again, there's no real cost to fixing this: at best, we avoid a > catastrophic use-after-free. At worst, we nulled out a word of memory > only for it to be unmapped a moment later, no harm done. > >> PS I couldn't reproduce using the lisp reproducer both on my 64bit both >> on my 32bit system (I left it looping for a while), is that reproducer >> working for you? > > Have you modified dynlib_open() to leak the shared object? That's what > I think might be happening for Eli, so it makes sense to test with a > double dlopen() call, as I did. No, because I failed to understand why calling 'dlopen' two times in a row on the same filename should make any difference as I expect the second call to just return the same handle as the first. I'm sure I'm missing something here or I misunderstood your suggestion: > I can reproduce this issue by replacing the single call of dlopen() in > dynlib_open with two calls Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 10:07:48 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 15:07:48 +0000 Received: from localhost ([127.0.0.1]:44520 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHU4-0004bd-7g for submit@debbugs.gnu.org; Mon, 08 Mar 2021 10:07:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHU2-0004bO-KF for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 10:07:47 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:49363) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJHTx-0001ZW-Fx; Mon, 08 Mar 2021 10:07:41 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2027 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJHTu-0007GY-L3; Mon, 08 Mar 2021 10:07:41 -0500 Date: Mon, 08 Mar 2021 17:07:30 +0200 Message-Id: <837dmhsmz1.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Sun, 07 Mar 2021 20:16:40 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <865z3866my.fsf@gmail.com> <865z38a9vo.fsf@gmail.com> <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Sun, 07 Mar 2021 20:16:40 +0000 > > > #1 0x0135a63b in emacs_abort () at w32fns.c:10914 > > #2 0x0115c637 in terminate_due_to_signal (sig=22, backtrace_limit=2147483647) > > at emacs.c:417 > > #3 0x0121c026 in die (msg=0x1782af2 "NATIVE_COMP_UNITP (a)", > > file=0x1782aeb "comp.h", line=70) at alloc.c:7452 > > #4 0x012cf582 in XNATIVE_COMP_UNIT (a=XIL(0x6f04860091b9000)) at comp.h:70 > > #5 0x012df324 in load_comp_unit (comp_u=0x6f33918, loading_dump=false, > > late_load=false) at comp.c:4821 > > #6 0x012e0c55 in Fnative_elisp_load (filename=XIL(0x80000000092db190), > > late_load=XIL(0)) at comp.c:5122 > > What I think is going on here: > > The same .eln file is loaded two times, we detect that and try to reuse > the same compilation unit (the Lisp object) instead of a new one. > > We keep a pointer to the compilation unit representing the .eln file in > each .eln. Here we read it and we have it into 'saved_cu', we try to > dereference it and extract the CU with XNATIVE_COMP_UNIT but something > goes wrong. > > This object might have been GC'ed for some reason and we might be > looking at the same GC issue I've seen on 32bit wide-int (my guess). > *If* this is the case the question is: why is the CU GC'ed? Can you please step back a notch for a moment and help me understand how this machinery works? Because I'm looking at the code, and I'm confused. For example, I see this: Lisp_Object *saved_cu = dynlib_sym (handle, COMP_UNIT_SYM); comp_u->loaded_once = !NILP (*saved_cu); But dynlib_sym doesn't return a pointer to a Lisp_Object, it returns a pointer to a function or a variable inside the .eln shared library. So how is this TRT? A few lines later we do this: comp_u_lisp_obj = *saved_cu; comp_u = XNATIVE_COMP_UNIT (comp_u_lisp_obj); But if saved_cu is NOT a pointer to a Lisp_Object, then how do we expect XNATIVE_COMP_UNIT not to crash? What am I missing? From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 10:09:56 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 15:09:56 +0000 Received: from localhost ([127.0.0.1]:44524 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHW8-0004fH-Ls for submit@debbugs.gnu.org; Mon, 08 Mar 2021 10:09:56 -0500 Received: from mail-oi1-f175.google.com ([209.85.167.175]:37763) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHW6-0004ez-Iq for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 10:09:54 -0500 Received: by mail-oi1-f175.google.com with SMTP id u198so6323042oia.4 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 07:09:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=E9iQa31pUFkypccrazHoj/eTiBIBXX7WNfQLHsDWYo8=; b=TTtWBZuizYahx9NEAoFv5Bd3mucuaW0tzSqf889K9T0Bqj4gSu7dS5GSsqyiFdFcN+ b1YY6+/J6Jtp/5xc60/vOgfjz/86Ha1sfQQkABXrdIv0gApM41Yuw3487MUe4VdhkiNx VDCyEAd0QgRT/wKt+8Th6p9grHX36ju4/ZEzM+rRKrruvvcpAU0h+QJw58m63YVqpH0/ Pd/BrRlfxd4FB1YrhNrPpxl8sJpT4PBooXvZHed0tEIYVVX2psaENfKrbQbQeUntNxh6 jaqtBU1fzjs7cv9vUr8pzZ4bgXBzcVwWHKVFk6gyMzB4Zuqf/l4K5gS/27Vp9YXtUCEJ qt9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=E9iQa31pUFkypccrazHoj/eTiBIBXX7WNfQLHsDWYo8=; b=ly6I8g/UOa9MVg8vJ7oBJClHYtNsr0/IAR935hOI60VzdLaHFDELVGVlEp96qslGUR kV+qPjqHQ/wIyIKFaeZMvDU+SrCSI24DJ9qQFOS7HLZT7Oh66JmgSBNRvXh30cABLpOT edDMVnwKmpSvU4Xx8nb6hM/tdCAWJJ8ZP9DpP+VcnSZCxII9UiZ8+jhAkSgA1hdBRywT fLiTVTsGt7jQtDkQ7whg6RurxkNdfyygDyEtfEoBdHmtsaPCIstapIS5msr2eWqr4No4 qQuCa8GvkCiQ8MDc4+yaDLLs5ueI2zAmxWVA7rOaVlzEPRCO9711a9z1zImerwTUO9d4 JsAw== X-Gm-Message-State: AOAM531Ze8Y7nIygt6svhdfySs0IIdk5SZ7yn/dIkJRkKFrIc1ykBew3 o05LIteiLc/j5Xva0X0KYJcTNIVCEtOyH8v3xoQ= X-Google-Smtp-Source: ABdhPJy5delomi1D+BwPoYm4580+QwEbsUoa/x++nz45eyVZQgKLhTqT5tPBfEDKllbZFFWhlyNt0eEDON7YsPZVJEI= X-Received: by 2002:aca:aad6:: with SMTP id t205mr17629754oie.122.1615216183942; Mon, 08 Mar 2021 07:09:43 -0800 (PST) MIME-Version: 1.0 References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Mon, 8 Mar 2021 15:09:07 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: multipart/mixed; boundary="000000000000e13aca05bd07d2fa" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000e13aca05bd07d2fa Content-Type: text/plain; charset="UTF-8" On Mon, Mar 8, 2021 at 3:03 PM Andrea Corallo wrote: > Pip Cet writes: > > On Mon, Mar 8, 2021 at 10:14 AM Andrea Corallo wrote: > > Have you modified dynlib_open() to leak the shared object? That's what > > I think might be happening for Eli, so it makes sense to test with a > > double dlopen() call, as I did. > > No, because I failed to understand why calling 'dlopen' two times in a > row on the same filename should make any difference as I expect the > second call to just return the same handle as the first. It does. What changes is that the next time we load the library, the first (leaky) dlopen() will have kept it in memory, so the third and fourth calls to dlopen() would also return the same handle as the first and second calls did. > I'm sure I'm missing something here or I misunderstood your suggestion: I don't know whether you are, it's possible I am confused. What I do know is if I apply the attached patch and run the reproducer, it crashes rapidly, usually on the first run. Pip --000000000000e13aca05bd07d2fa Content-Type: text/x-patch; charset="US-ASCII"; name="dup-dlopen.diff" Content-Disposition: attachment; filename="dup-dlopen.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_km0pyebc0 ZGlmZiAtLWdpdCBhL3NyYy9keW5saWIuYyBiL3NyYy9keW5saWIuYwppbmRleCAxMzM4ZTkxMDlj OTFhLi5kMjliZGIxZTg2ZDBhIDEwMDY0NAotLS0gYS9zcmMvZHlubGliLmMKKysrIGIvc3JjL2R5 bmxpYi5jCkBAIC0yNzAsNiArMjcwLDcgQEAgZHlubGliX2Nsb3NlIChkeW5saWJfaGFuZGxlX3B0 ciBoKQogZHlubGliX2hhbmRsZV9wdHIKIGR5bmxpYl9vcGVuIChjb25zdCBjaGFyICpwYXRoKQog eworICBkbG9wZW4gKHBhdGgsIFJUTERfTEFaWSk7CiAgIHJldHVybiBkbG9wZW4gKHBhdGgsIFJU TERfTEFaWSk7CiB9CiAK --000000000000e13aca05bd07d2fa-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 10:14:44 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 15:14:44 +0000 Received: from localhost ([127.0.0.1]:44536 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHam-0004pC-Ha for submit@debbugs.gnu.org; Mon, 08 Mar 2021 10:14:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58840) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHal-0004ox-Nx for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 10:14:44 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:49514) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJHag-0004ad-DD; Mon, 08 Mar 2021 10:14:38 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2456 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJHaf-0000ER-QS; Mon, 08 Mar 2021 10:14:38 -0500 Date: Mon, 08 Mar 2021 17:14:32 +0200 Message-Id: <834khlsmnb.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 14:50:50 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83r1kpsrng.fsf@gnu.org> <83blbtso9k.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 14:50:50 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > > No dlclose() on Windows. > > > > Why does this matter in this case? (And I do have dlclose in a > > standard library that comes with MinGW, btw. Not that it's relevant.) > > We don't use dlclose() on Windows. FreeLibrary() is documented not to > unload the library in certain cases, and to return a failure code. You will need to show how those cases could happen in our scenario, given the way we call FreeLibrary and other related APIs. Otherwise, I don't see how these subtleties are relevant. > > > FreeLibrary() is documented to behave differently from dlclose() > > > > It is? In what way? > > Libraries can be pinned We never call the API that could result in a library being pinned, certainly not in the scenario we are talking about. At least that's my reading of the code. Again, if you can describe the situation where such pinning could happen, please do. If that happens, it's probably a bug, because we have no reason to pin a DLL. > > Well, how about explaining the details in terms that are simple enough > > that I could understand and do the testing? > > Excellent idea. I'll try! Thanks, I will study this later. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 10:38:50 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 15:38:50 +0000 Received: from localhost ([127.0.0.1]:44552 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHy6-0005TW-G9 for submit@debbugs.gnu.org; Mon, 08 Mar 2021 10:38:50 -0500 Received: from mx.sdf.org ([205.166.94.24]:54015) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJHy4-0005TO-D3 for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 10:38:49 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 128Fcklx014866 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Mon, 8 Mar 2021 15:38:47 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> Date: Mon, 08 Mar 2021 15:38:46 +0000 In-Reply-To: (Pip Cet's message of "Mon, 8 Mar 2021 15:09:07 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Mon, Mar 8, 2021 at 3:03 PM Andrea Corallo wrote: >> Pip Cet writes: >> > On Mon, Mar 8, 2021 at 10:14 AM Andrea Corallo wrote: >> > Have you modified dynlib_open() to leak the shared object? That's what >> > I think might be happening for Eli, so it makes sense to test with a >> > double dlopen() call, as I did. >> >> No, because I failed to understand why calling 'dlopen' two times in a >> row on the same filename should make any difference as I expect the >> second call to just return the same handle as the first. > > It does. > > What changes is that the next time we load the library, the first > (leaky) dlopen() will have kept it in memory, so the third and fourth > calls to dlopen() would also return the same handle as the first and > second calls did. Ah okay, IIUC the intent is to change the number of allocation so the internal reference counter of GLIBC doesn't go to zero? Andrea From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 12:40:47 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 17:40:47 +0000 Received: from localhost ([127.0.0.1]:44706 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJJs7-0002Bt-AA for submit@debbugs.gnu.org; Mon, 08 Mar 2021 12:40:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37794) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJJs2-0002Bd-Jn for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 12:40:46 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52516) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJJrw-0001gw-7O; Mon, 08 Mar 2021 12:40:36 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3683 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJJrv-0000jD-KE; Mon, 08 Mar 2021 12:40:35 -0500 Date: Mon, 08 Mar 2021 19:40:27 +0200 Message-Id: <83sg55r1bo.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 14:50:50 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83r1kpsrng.fsf@gnu.org> <83blbtso9k.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 14:50:50 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > Well, how about explaining the details in terms that are simple enough > > that I could understand and do the testing? > > Excellent idea. I'll try! Thanks. Somewhat clearer now, but I'm still not out of the woods yet. Bear with me. > Native-comp uses a pseudo-vector type representing a dlopen()ed handle. You mean, the Lisp_Native_Comp_Unit structure? If so, it doesn't really represent a handle, AFAIU, it represents a .eln file we loaded. Right? > In addition to the handle being stored in the pseudo-vector, a pointer > to the pseudo-vector is stored in the data space belonging to the > handle. I'll refer to that as the "reverse pointer" because I can't > think of a better term right now. Why do we need this reverse pointer, and how do we use it? > When we cleanup the pseudo-vector, we don't reset the reverse pointer > to NULL, or Qnil. What do you mean by "cleanup" here? Under what circumstances does it happen? And no, Qnil won't do, because a Lisp_Object can be wider than a pointer (it is in the 32-bit build --with-wide-int). NULL is fine. > That is because we assume that the dlclose() we perform on cleanup > will unmap the data space belonging to the handle, anyway. But the call to dlclose doesn't happen immediately, it only happens in GC. Right? (A nit: please don't use "foo()" to refer to a function, because that looks like a call to 'foo' with no arguments, which is not what you mean.) > That assumption is wrong in certain specific circumstances. > > In those circumstances, the reverse pointer is dereferenced after the > vector has been deallocated. It points to a random different vector > now. I need to understand the circumstances under which this could happen. If the vector has been deallocated, it means it was GC'ed, right? And if it was GC'ed, how come the .eln was not unloaded? > One of the circumstances in which the assumption (that the reverse > pointer won't be used) becomes invalid is when two pseudo-vectors > share a handle (and, thus, a reverse pointer). How can that happen? can you describe a series of events that make this possible? > My patch, thus, resets the reverse pointer to Qnil when cleanup is > performed. You can't use Qnil, for the reasons described above. P.S. The stuff described in this sub-thread should eventually find its way into comments in comp.c. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 13:07:14 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 18:07:14 +0000 Received: from localhost ([127.0.0.1]:44799 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKHi-00051J-0F for submit@debbugs.gnu.org; Mon, 08 Mar 2021 13:07:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42856) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKHg-000516-JP for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 13:07:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52894) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJKHZ-0004dM-4Y; Mon, 08 Mar 2021 13:07:05 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1424 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJKHY-0002bO-CP; Mon, 08 Mar 2021 13:07:04 -0500 Date: Mon, 08 Mar 2021 20:06:58 +0200 Message-Id: <83r1kpr03h.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 14:27:19 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 14:27:19 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > I would be interested in the pseudovector type of the variable that is > supposed to be a comp_unit, but isn't. I think that's all the > information of value that debuggee still has... You mean, *saved_cu? It cannot be anything interesting, because the pointer is garbled: (gdb) p *saved_cu $9 = XIL(0x6f04860091b9000) (gdb) xtype Lisp_Symbol (gdb) xsymbol $10 = (struct Lisp_Symbol *) 0xaa21360 Cannot access memory at address 0xaa21368 Since this is a 32-bit build, no Lisp object can have the high 24 bits non-zero, so 0x6f04860091b9000 cannot be a valid object. Another factoid that may be of interest is this. At the beginning of load_comp_unit we do: dynlib_handle_ptr handle = comp_u->handle; So: (gdb) p/x comp_u->handle $13 = 0x6a580000 Now, on Windows, the "handle" returned by LoadLibrary is just the memory address where the library is loaded. However, "info shared" in GDB doesn't show _any_ .eln library loaded at that address. The closest one is this: From To Syms Read Shared Object Library 0x6a581000 0x6a5bacd8 Yes d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\cc-align-bb265728-bd3550a3.eln whose address is 4KB higher. That probably means the CU represented by comp_u was unloaded, right? Anything else we could glean from that crashed Emacs? From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 13:13:48 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 18:13:48 +0000 Received: from localhost ([127.0.0.1]:44808 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKO4-0005An-53 for submit@debbugs.gnu.org; Mon, 08 Mar 2021 13:13:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44088) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKO3-0005Aa-5y for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 13:13:47 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52986) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJKNx-0007hE-Q4; Mon, 08 Mar 2021 13:13:41 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1828 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJKNx-0007Y4-3O; Mon, 08 Mar 2021 13:13:41 -0500 Date: Mon, 08 Mar 2021 20:13:35 +0200 Message-Id: <83pn09qzsg.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 14:27:19 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 14:27:19 +0000 > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > I would be interested in the pseudovector type of the variable that is > supposed to be a comp_unit, but isn't. I think that's all the > information of value that debuggee still has... You mean, *saved_cu? It cannot be anything interesting, because the pointer is garbled: (gdb) p *saved_cu $9 = XIL(0x6f04860091b9000) (gdb) xtype Lisp_Symbol (gdb) xsymbol $10 = (struct Lisp_Symbol *) 0xaa21360 Cannot access memory at address 0xaa21368 Since this is a 32-bit build, no Lisp object can have the high 24 bits non-zero, so 0x6f04860091b9000 cannot be a valid object. Another factoid that may be of interest is this. At the beginning of load_comp_unit we do: dynlib_handle_ptr handle = comp_u->handle; So: (gdb) p/x comp_u->handle $13 = 0x6a580000 Now, on Windows the "handle" returned by LoadLibrary is just the memory address where the library is loaded. However, "info shared" in GDB doesn't show _any_ .eln library loaded at that address. The closest one is this: From To Syms Read Shared Object Library 0x6a581000 0x6a5bacd8 Yes d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\cc-align-bb265728-bd3550a3.eln whose address is 4KB higher. That probably means the CU represented by comp_u was unloaded, right? But: (gdb) p comp_u->file $15 = XIL(0x80000000092db190) (gdb) xtype Lisp_String (gdb) xstring $16 = (struct Lisp_String *) 0x92db190 "d:/usr/eli/.emacs.d/eln-cache/28.0.50-19fa14f1/cc-align-bb265728-bd3550a3.eln" Surprise! it's the same .eln file as is now loaded 4KB higher. Anything else we could glean from that crashed Emacs session? From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 13:15:24 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 18:15:24 +0000 Received: from localhost ([127.0.0.1]:44814 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKPc-0005Dp-Gm for submit@debbugs.gnu.org; Mon, 08 Mar 2021 13:15:24 -0500 Received: from mx.sdf.org ([205.166.94.24]:60466) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKPa-0005Dh-M7 for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 13:15:23 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 128IFLft017041 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Mon, 8 Mar 2021 18:15:21 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> Date: Mon, 08 Mar 2021 18:15:21 +0000 In-Reply-To: <83r1kpr03h.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Mar 2021 20:06:58 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Pip Cet X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Pip Cet >> Date: Mon, 8 Mar 2021 14:27:19 +0000 >> Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> >> I would be interested in the pseudovector type of the variable that is >> supposed to be a comp_unit, but isn't. I think that's all the >> information of value that debuggee still has... > > You mean, *saved_cu? It cannot be anything interesting, because the > pointer is garbled: > > (gdb) p *saved_cu > $9 = XIL(0x6f04860091b9000) > (gdb) xtype > Lisp_Symbol > (gdb) xsymbol > $10 = (struct Lisp_Symbol *) 0xaa21360 > Cannot access memory at address 0xaa21368 > > Since this is a 32-bit build, no Lisp object can have the high 24 bits > non-zero, so 0x6f04860091b9000 cannot be a valid object. > > Another factoid that may be of interest is this. At the beginning of > load_comp_unit we do: > > dynlib_handle_ptr handle = comp_u->handle; > > So: > > (gdb) p/x comp_u->handle > $13 = 0x6a580000 > > Now, on Windows, the "handle" returned by LoadLibrary is just the > memory address where the library is loaded. However, "info shared" in > GDB doesn't show _any_ .eln library loaded at that address. The > closest one is this: > > From To Syms Read Shared Object Library > 0x6a581000 0x6a5bacd8 Yes d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\cc-align-bb265728-bd3550a3.eln > > whose address is 4KB higher. That probably means the CU represented > by comp_u was unloaded, right? I guess this suggests 0x6a580000 was a previously infact a mapped eln that got unmapped. Andrea From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 13:18:19 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 18:18:19 +0000 Received: from localhost ([127.0.0.1]:44822 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKSR-0005IU-7M for submit@debbugs.gnu.org; Mon, 08 Mar 2021 13:18:19 -0500 Received: from mx.sdf.org ([205.166.94.24]:58183) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKSP-0005IM-7I for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 13:18:17 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 128IIGDM016608 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Mon, 8 Mar 2021 18:18:16 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> Date: Mon, 08 Mar 2021 18:18:16 +0000 In-Reply-To: <83r1kpr03h.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Mar 2021 20:06:58 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Pip Cet X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > Anything else we could glean from that crashed Emacs? Not on my side thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 13:33:40 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 18:33:40 +0000 Received: from localhost ([127.0.0.1]:44837 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKhI-0005fd-Er for submit@debbugs.gnu.org; Mon, 08 Mar 2021 13:33:40 -0500 Received: from mail-ot1-f53.google.com ([209.85.210.53]:40813) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJKhG-0005fP-2h for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 13:33:38 -0500 Received: by mail-ot1-f53.google.com with SMTP id b8so10176477oti.7 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 10:33:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ciuvMlPZELvXOY1r/tEkMiYjukdoIKVQq/ndOojr5L4=; b=iZVCw6AtJUSk7eMNMgm4zv4f37tnEuihttB2EvdNRJxpHJJ77BHPGS/hAHMtqO0Mlk o5RxfilKHi5azS7UM8mn4UyXvtUVWcF0d6kTnrNfti8fbqrpCEQXB93eun/kqG2PTSh5 tU3fXmbeLDJa/Hf+WMZUV6knR4v6QpzBe1KZkPYjksX8HckDulmoHAHXS269vvGS0ji6 TdlVvHGHf4uvFs/Q1HKUmF674HouZ0+mzJ+uFLeVb4TX48c19BGhiMsnAPrIIxorfaww E/6Hb7JW2e6x5evEZZjLiytCP222tsNsWrBAp/q/kCIb6at37eT02H1cPKhpFHFyDfrM kcVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ciuvMlPZELvXOY1r/tEkMiYjukdoIKVQq/ndOojr5L4=; b=BVJMARgd7T/nUV6xGZRallyQeNSjROlwyL0ZIPjSYSWMl4+Jl63qVIsftVZpdokIG1 W1fy1pRSAtLxmnbpmBazr1FIw9c8hGvix5RYShB0snX3GM0XP0O6SPfR8pzersznhOjA NBrMxmE9YjsU+EI8Ug6O8hULdVieldgHV8cjIZqGUVNn4FyDg17Dvucod+pU4o0Agq0E RwqykHWx5MFwFKvH3jeasxhz8PRGl1DtZnIwU8TJWpZRPQv+JOPhrNSTS7kUBpIFRIPq yfTShTQeWITbLqousOvBZGahGAX8Tq/Yr7U8CodzWHvC6LWa83+UWgXp/LhYOw/lZJYT 1C0w== X-Gm-Message-State: AOAM531YBNaylYFlc6z2Bf4yJEps6h6aX8muHQOUa/p219JAtaTDzO4Q 1Uv+ryCnDnIi2BFE1ZIKK6qu24tzAj/YoNO2xXM= X-Google-Smtp-Source: ABdhPJx9zvQYSIqC10wtL+tJ7Q8eJPP1slpLxDpBhMYMWzkMEPdp1g6XFOx0nxTLMU5vF22jBrFDNXqi70xKEJm7FxU= X-Received: by 2002:a05:6830:1e51:: with SMTP id e17mr20750279otj.292.1615228412386; Mon, 08 Mar 2021 10:33:32 -0800 (PST) MIME-Version: 1.0 References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Mon, 8 Mar 2021 18:32:55 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Mar 8, 2021 at 6:18 PM Andrea Corallo wrote: > Eli Zaretskii writes: > > > Anything else we could glean from that crashed Emacs? > > Not on my side thanks What's saved_cu, actually? Pip From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 15:37:26 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 20:37:26 +0000 Received: from localhost ([127.0.0.1]:44936 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMd4-0002HA-EE for submit@debbugs.gnu.org; Mon, 08 Mar 2021 15:37:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46076) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMd3-0002Gx-25 for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 15:37:25 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54675) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJMcx-0002uX-Pj; Mon, 08 Mar 2021 15:37:19 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2822 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJMcw-0005xK-QP; Mon, 08 Mar 2021 15:37:19 -0500 Date: Mon, 08 Mar 2021 22:37:12 +0200 Message-Id: <83mtvdqt53.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Mon, 08 Mar 2021 18:15:21 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: Pip Cet , 46256@debbugs.gnu.org, > andrewjmoreton@gmail.com > Date: Mon, 08 Mar 2021 18:15:21 +0000 > > > From To Syms Read Shared Object Library > > 0x6a581000 0x6a5bacd8 Yes d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\cc-align-bb265728-bd3550a3.eln > > > > whose address is 4KB higher. That probably means the CU represented > > by comp_u was unloaded, right? > > I guess this suggests 0x6a580000 was a previously infact a mapped eln > that got unmapped. Can you tell why are we loading the same .eln files more than once? What are the reasons for unloading a .eln file which was once loaded into a session? From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 15:48:05 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 20:48:05 +0000 Received: from localhost ([127.0.0.1]:44990 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMnM-0002Yz-Pu for submit@debbugs.gnu.org; Mon, 08 Mar 2021 15:48:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49608) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMnL-0002YV-QH for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 15:48:04 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54813) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJMnF-0007mA-78; Mon, 08 Mar 2021 15:47:57 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3468 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJMn9-0006x6-TR; Mon, 08 Mar 2021 15:47:52 -0500 Date: Mon, 08 Mar 2021 22:47:44 +0200 Message-Id: <83im61qsnj.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 18:32:55 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 18:32:55 +0000 > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > What's saved_cu, actually? Not sure I understand the question. Is the below what you wanted to see? (gdb) p saved_cu $6 = (Lisp_Object *) 0x6a5b2e7c From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 15:49:25 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 20:49:25 +0000 Received: from localhost ([127.0.0.1]:44998 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMof-0002bG-6P for submit@debbugs.gnu.org; Mon, 08 Mar 2021 15:49:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49948) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMod-0002b4-Rt for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 15:49:24 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54822) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJMoV-0008Lt-FQ; Mon, 08 Mar 2021 15:49:15 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3551 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJMoP-00073R-AG; Mon, 08 Mar 2021 15:49:11 -0500 Date: Mon, 08 Mar 2021 22:49:04 +0200 Message-Id: <83h7llqslb.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Mon, 08 Mar 2021 18:18:16 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: Pip Cet , 46256@debbugs.gnu.org, > andrewjmoreton@gmail.com > Date: Mon, 08 Mar 2021 18:18:16 +0000 > > Eli Zaretskii writes: > > > Anything else we could glean from that crashed Emacs? > > Not on my side thanks Anything you'd like me to try to find out in the next session, assuming I'll be able to reproduce this assertion violation? From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 15:51:31 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 20:51:31 +0000 Received: from localhost ([127.0.0.1]:45010 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMqh-0002fP-6T for submit@debbugs.gnu.org; Mon, 08 Mar 2021 15:51:31 -0500 Received: from mail-oi1-f170.google.com ([209.85.167.170]:34751) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMqe-0002fB-Ny for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 15:51:30 -0500 Received: by mail-oi1-f170.google.com with SMTP id x78so12498228oix.1 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 12:51:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+oavxQG6zQpdNYSEiRKkrkbLqHHC+JGA8h0ga0jAZMQ=; b=kqbJlJvsd3XNcFJVl/d0gGW/OqxyXdpkDo503g60xC29vA7MG9FIH84UbepN1nDVYX dkF9167KbBV3Pk+41WYonoBqZ9qCp+j81+hEz/4scuyiUJdb/ARgt9Jsmadl9PWJBOet TDFQmOvErjgy7Y3goRmDwbPdMW4nlIJ9Iv8HTe4m4LeXkP2KjB0uZuB23cqv2E6QlBX1 g5/nfPOMYoB4PS26bPkasLA8eg1VO3xWr7hh186xi2QorvGoYpakqTQgp0AopGB2ERhy 66MfFpcWOy7pY1vcaDU+ZCQQliV80Ln0YDZCyel6sSqAPoKxza1bG+Vq4EDQdDJbUH3s 749Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+oavxQG6zQpdNYSEiRKkrkbLqHHC+JGA8h0ga0jAZMQ=; b=dzqYWjweJYYdMHpj7GzzxxBzee44bZCDUrLX9fisQcHmlVvnIjhgzPmYKOaD9VK/aH PXUJIKHraP6rW9JWUqdNI9Bg/dOJaAtpCKM2Mv7gQKYhG9vTkBTfRi2nPMGJlhdtV9Ko D7yhkfs9QRLYLugAF3cT7WOekSdT6JdxdPrP9nK5Lfg7gjFDqfTMySPMLAsHAVZGcG/Y eMI3qScnsQPWfe9vmkGAesI+Ta6Mt7Hhb99JEvk9AWNDyhNDuMfsPszQ5tN0VW5oTf0D 66FgSwMqsw3M1ZphHjOyPc7eW6lVtcWcDKu+Ap9WgAt33RWDfuTWUckt+wLjJckCIT6C 71xg== X-Gm-Message-State: AOAM531N4EdUnJhR9kFErRhvmqHVrttVBlv4FrhDWORwERsVq09Q9guH PfgCtFFS5c+32Wq34dGE9Zefdafxf9dntyf15co= X-Google-Smtp-Source: ABdhPJw2Q3aWdZaFl2uBp94IzwqxyGnGDwz+5NrAqCBuMlkPGNrhQjmSpNRO8uJvltmFxz/8gpyWcSOMLpYQzudPlAY= X-Received: by 2002:a54:4196:: with SMTP id 22mr576566oiy.30.1615236683064; Mon, 08 Mar 2021 12:51:23 -0800 (PST) MIME-Version: 1.0 References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83im61qsnj.fsf@gnu.org> In-Reply-To: <83im61qsnj.fsf@gnu.org> From: Pip Cet Date: Mon, 8 Mar 2021 20:50:46 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: multipart/mixed; boundary="000000000000b906dd05bd0c984f" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000b906dd05bd0c984f Content-Type: text/plain; charset="UTF-8" On Mon, Mar 8, 2021 at 8:47 PM Eli Zaretskii wrote: > > From: Pip Cet > > Date: Mon, 8 Mar 2021 18:32:55 +0000 > > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > > What's saved_cu, actually? > > Not sure I understand the question. Is the below what you wanted to > see? > > (gdb) p saved_cu > $6 = (Lisp_Object *) 0x6a5b2e7c Yes! I believe we've found another bug. We were allocating comp_unit as a Lisp_Object **, but it's actually a Lisp_Object. Pip --000000000000b906dd05bd0c984f Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Try-to-fix-GC-crash-bug-46256.patch" Content-Disposition: attachment; filename="0001-Try-to-fix-GC-crash-bug-46256.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_km126kt30 RnJvbSBjYzcxN2RhYmE4MWZiMzliZjhhZDhlODVkNDZkZTM4NGJiNmZlNDdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBNb24s IDggTWFyIDIwMjEgMjA6NDk6NTkgKzAwMDAKU3ViamVjdDogW1BBVENIXSBUcnkgdG8gZml4IEdD IGNyYXNoIChidWcjNDYyNTYpCgoqIHNyYy9jb21wLmMgKGVtaXRfY3R4dF9jb2RlKTogQWxsb2Nh dGUgY29tcF91bml0IGFzIGEgTGlzcF9PYmplY3QsCm5vdCBhIHBvaW50ZXIgdG8gcG9pbnRlciB0 byBMaXNwX09iamVjdC4KLS0tCiBzcmMvY29tcC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2NvbXAuYyBiL3Ny Yy9jb21wLmMKaW5kZXggYzllMDY4YjkwYWEyYy4uNzk5Y2ZkYzg4YjU1ZCAxMDA2NDQKLS0tIGEv c3JjL2NvbXAuYworKysgYi9zcmMvY29tcC5jCkBAIC0yNzc0LDcgKzI3NzQsNyBAQCBlbWl0X2N0 eHRfY29kZSAodm9pZCkKIAljb21wLmN0eHQsCiAJTlVMTCwKIAlHQ0NfSklUX0dMT0JBTF9FWFBP UlRFRCwKLQlnY2Nfaml0X3R5cGVfZ2V0X3BvaW50ZXIgKGNvbXAubGlzcF9vYmpfcHRyX3R5cGUp LAorCWNvbXAubGlzcF9vYmpfdHlwZSwKIAlDT01QX1VOSVRfU1lNKTsKIAogICBkZWNsYXJlX2lt cG9ydGVkX2RhdGEgKCk7Ci0tIAoyLjMwLjEKCg== --000000000000b906dd05bd0c984f-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 08 15:53:46 2021 Received: (at 46256) by debbugs.gnu.org; 8 Mar 2021 20:53:46 +0000 Received: from localhost ([127.0.0.1]:45014 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMsr-0002ii-KK for submit@debbugs.gnu.org; Mon, 08 Mar 2021 15:53:45 -0500 Received: from mail-oi1-f178.google.com ([209.85.167.178]:45857) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJMsq-0002iS-0D for 46256@debbugs.gnu.org; Mon, 08 Mar 2021 15:53:44 -0500 Received: by mail-oi1-f178.google.com with SMTP id t83so2498949oih.12 for <46256@debbugs.gnu.org>; Mon, 08 Mar 2021 12:53:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=n7WLwJUvMF5NqvfU6t3wkosKvcaHBkn1rrDTpLm2Wqg=; b=j7GX5LxdPk9/JgJgAwfNb9s/psOfQgoX+ttOCeoLOjTyynUjc6ev6mUWfo5Gp+s4FQ Mq2fP+Bz77mKwQUppYKnvH+v53LDlw7z5XadhFa+FTP4sgGaHcsOJzAKeMlwmhKxjBGe ItKX8v6Tbg1gVh2KoUgl2usdz8kZmNAXJx8eAmTbsA4Ru9JPkkBEGEcvLcabSaucpAns s6v1q3HCpkyNsgsWgSGIqVFr/54R42n7ASrSi3jiO77MHZyPb1dfElM0VK70Y5HWHa4r svt7NVx6JkmFJ9ayacwGmukPXo6ymi8BdZZGn1WGoz9//sngUF96Z/rK2GzETSjgH/7Z Xrrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=n7WLwJUvMF5NqvfU6t3wkosKvcaHBkn1rrDTpLm2Wqg=; b=YwxAS7wVMOXI8UMJkJD3g7lHuz3zWszu/ZrBAZ0x8zDZYg9E4+y28K4GTm23ig3Uth wGnnhTF3PnhknTg2LPSOgdIRWPnZ8KryBTqaqwqP2KpMPXia49+JPNg+CK6g/h2uk5jA h0hpDcGG8f1r2KRmgaPlauLTNlh3uR1OJF0PD4OsKA0dZ/Febhjyr1I0bNT46O3g6Mmo ydJh6503+2rEoGjVE/ASlwx8RJjNA15r7PAohP9AhnvkYpDjT7FnbL5C+vThI+iEnk6e CTVZyGo1wIeCr4G2kJyv1FscNd8wMiiohfc29hSN//yhiyKYgrM5aGtU2iUTxjxI47mU XAuw== X-Gm-Message-State: AOAM532sHPO1+UQKcdbVMH5Sesxw5z1ks+u2MSerOCFfbYXLxB9wLYPB OmnfT9vm2cm+TjMufCNZU91ic00BgWi0n0zthK8= X-Google-Smtp-Source: ABdhPJzzF/l+ZMql2mA9XI0rf4+VwYUuK5ZD5MHpVNaCp/If+J1jppRpGEBrXFw1q0Qs0iv21lyPgJ+XeoNuvKUkgTQ= X-Received: by 2002:a54:4196:: with SMTP id 22mr582353oiy.30.1615236818535; Mon, 08 Mar 2021 12:53:38 -0800 (PST) MIME-Version: 1.0 References: <86eehujcip.fsf@gmail.com> <86blch14qt.fsf@gmail.com> <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83pn09qzsg.fsf@gnu.org> In-Reply-To: <83pn09qzsg.fsf@gnu.org> From: Pip Cet Date: Mon, 8 Mar 2021 20:53:02 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, Andrea Corallo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Mar 8, 2021 at 6:13 PM Eli Zaretskii wrote: > > From: Pip Cet > > Date: Mon, 8 Mar 2021 14:27:19 +0000 > > Cc: Andrea Corallo , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > > I would be interested in the pseudovector type of the variable that is > > supposed to be a comp_unit, but isn't. I think that's all the > > information of value that debuggee still has... > > You mean, *saved_cu? It cannot be anything interesting, because the > pointer is garbled: > > (gdb) p *saved_cu > $9 = XIL(0x6f04860091b9000) > (gdb) xtype > Lisp_Symbol > (gdb) xsymbol > $10 = (struct Lisp_Symbol *) 0xaa21360 > Cannot access memory at address 0xaa21368 > > Since this is a 32-bit build, no Lisp object can have the high 24 bits > non-zero, so 0x6f04860091b9000 cannot be a valid object. The high 32 bits have indeed been clobbered, because we allocated only four bytes for this Lisp_Object. And since you use MSB tags, I'm assuming 0x91b9000 was where the other native comp unit used to live. > Another factoid that may be of interest is this. At the beginning of > load_comp_unit we do: > > dynlib_handle_ptr handle = comp_u->handle; > > So: > > (gdb) p/x comp_u->handle > $13 = 0x6a580000 > > Now, on Windows the "handle" returned by LoadLibrary is just the > memory address where the library is loaded. However, "info shared" in > GDB doesn't show _any_ .eln library loaded at that address. The > closest one is this: > > From To Syms Read Shared Object Library > 0x6a581000 0x6a5bacd8 Yes d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\cc-align-bb265728-bd3550a3.eln > > whose address is 4KB higher. That probably means the CU represented > by comp_u was unloaded, right? But keep in mind that the code managed to call dynlib_sym (handle, COMP_UNIT_SYM) just fine, so I think there might simply be a 4KB region at the beginning of the library that's not mapped directly from the shared object. My search engine skills are weak, but aren't Windows DLL base addresses aligned to 64 KB? This really looks to me like the "base address" in Windows isn't what GDB shows in the From column. Pip From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 02:03:06 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 07:03:07 +0000 Received: from localhost ([127.0.0.1]:45476 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJWOY-0007Sp-Fo for submit@debbugs.gnu.org; Tue, 09 Mar 2021 02:03:06 -0500 Received: from mx.sdf.org ([205.166.94.24]:55197) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJWOW-0007Se-60 for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 02:03:05 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129731ZW006871 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 07:03:01 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> Date: Tue, 09 Mar 2021 07:03:01 +0000 In-Reply-To: <83mtvdqt53.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Mar 2021 22:37:12 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: Pip Cet , 46256@debbugs.gnu.org, >> andrewjmoreton@gmail.com >> Date: Mon, 08 Mar 2021 18:15:21 +0000 >> >> > From To Syms Read Shared Object Library >> > 0x6a581000 0x6a5bacd8 Yes d:\usr\eli\.emacs.d\eln-cache\28.0.50-19fa14f1\cc-align-bb265728-bd3550a3.eln >> > >> > whose address is 4KB higher. That probably means the CU represented >> > by comp_u was unloaded, right? >> >> I guess this suggests 0x6a580000 was a previously infact a mapped eln >> that got unmapped. > > Can you tell why are we loading the same .eln files more than once? I guess `load' was called two times on the same filename. > What are the reasons for unloading a .eln file which was once loaded > into a session? All the functions defined in it are not anymore reachable (read all symbols functions are makunbound or defined to some other function). Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 03:28:28 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 08:28:28 +0000 Received: from localhost ([127.0.0.1]:45553 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXjA-00018j-8e for submit@debbugs.gnu.org; Tue, 09 Mar 2021 03:28:28 -0500 Received: from mx.sdf.org ([205.166.94.24]:51220) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXj6-00018Y-K0 for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 03:28:26 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1298SMoh003512 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 08:28:23 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83im61qsnj.fsf@gnu.org> Date: Tue, 09 Mar 2021 08:28:22 +0000 In-Reply-To: (Pip Cet's message of "Mon, 8 Mar 2021 20:50:46 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Mon, Mar 8, 2021 at 8:47 PM Eli Zaretskii wrote: >> > From: Pip Cet >> > Date: Mon, 8 Mar 2021 18:32:55 +0000 >> > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> > >> > What's saved_cu, actually? >> >> Not sure I understand the question. Is the below what you wanted to >> see? >> >> (gdb) p saved_cu >> $6 = (Lisp_Object *) 0x6a5b2e7c > > Yes! I believe we've found another bug. > > We were allocating comp_unit as a Lisp_Object **, but it's actually a > Lisp_Object. Uops! Thanks I've installed this as 380ba045c4. Andrea BTW this is apparently fixing also my 32bit wide int GC issue. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 03:32:49 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 08:32:49 +0000 Received: from localhost ([127.0.0.1]:45557 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXnM-0001GQ-Rp for submit@debbugs.gnu.org; Tue, 09 Mar 2021 03:32:49 -0500 Received: from mx.sdf.org ([205.166.94.24]:51055) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXnL-0001GJ-Km for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 03:32:48 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1298Wkgt026620 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 08:32:47 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> Date: Tue, 09 Mar 2021 08:32:46 +0000 In-Reply-To: (Pip Cet's message of "Mon, 8 Mar 2021 06:48:40 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Mon, Mar 8, 2021 at 5:54 AM Pip Cet wrote: >> Note that this might not always work because of conservative GC. > > If it doesn't work, can you simply retry a few times? Eventually there > shouldn't be references to the stale native_comp_unit on the stack. > > However, I think I've worked out why dynlib_close doesn't do its job: > > Fnative_elisp_load creates a comp unit, but, if the shared library has > already been initialized, it doesn't set that comp unit's comp_unit > variable to point to the new comp unit; instead, it will continue > pointing to the first comp unit which still has it open. > > Then, the original comp unit is unloaded but not the new one created > by Fnative_elisp_load. We call dynlib_close() once, but we called it > twice before, leaving the shared library open and initialized. > > Then, we try to load the comp unit again, and follow the stale > comp_unit variable pointing to the original comp unit. > > Fix should be as attached. Note the fix is, at worst, harmless (unless > I messed up), so we should apply it anyway just because it's good not > to leave stale pointers lying around even if we hope that the OS > unmaps them at some point. > > Pip The original code was written in the assumption that dlclose (as FreeLibrary) can't fail unloading a shared when the internal refcount goes to zero. As this is not the case I think the suggested patch is the correct fix. I've installed it as 93f92cf1ba. Thanks! Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 03:35:07 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 08:35:07 +0000 Received: from localhost ([127.0.0.1]:45566 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXpb-0001KP-ER for submit@debbugs.gnu.org; Tue, 09 Mar 2021 03:35:07 -0500 Received: from mx.sdf.org ([205.166.94.24]:50972) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXpY-0001KD-3B for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 03:35:06 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1298Z3Dt004537 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 08:35:03 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83h7llqslb.fsf@gnu.org> Date: Tue, 09 Mar 2021 08:35:03 +0000 In-Reply-To: <83h7llqslb.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Mar 2021 22:49:04 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: Pip Cet , 46256@debbugs.gnu.org, >> andrewjmoreton@gmail.com >> Date: Mon, 08 Mar 2021 18:18:16 +0000 >> >> Eli Zaretskii writes: >> >> > Anything else we could glean from that crashed Emacs? >> >> Not on my side thanks > > Anything you'd like me to try to find out in the next session, > assuming I'll be able to reproduce this assertion violation? I think at this point the best is to recompile using the latest state of the branch with installed the two patches by Pip and see if you still see the issue (probably no). Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 03:36:02 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 08:36:02 +0000 Received: from localhost ([127.0.0.1]:45570 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXqT-0001Lr-Uh for submit@debbugs.gnu.org; Tue, 09 Mar 2021 03:36:02 -0500 Received: from mail-oi1-f179.google.com ([209.85.167.179]:43541) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXqS-0001LS-C8 for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 03:36:00 -0500 Received: by mail-oi1-f179.google.com with SMTP id d20so14081328oiw.10 for <46256@debbugs.gnu.org>; Tue, 09 Mar 2021 00:36:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=M2fMnfw62ACUrYwbftlHiGOP2JnDUXuDGuDj2bg+SaE=; b=aVLTfqvpwMf9J739ih1aM5X09BGepGIEKlBvMcRADu1p6Wn72i/uPYUpy0HIYKEca/ g2FDUVgI/RFmuzO0+eciOeEP2qTswujcZ9xwMmTk4G3K+SiX3Y0Pa6uTr47ciOtYjHF4 Ie4sD1nWaf3p+svLP2StkIFYRckGWqHwU63YFzh8IYG5hEIFz4fgF5qr2TKOz88azWb6 BCZTaMlbVCg+dMkNl2hL+OZSLfsbbi4wyrQjA1gajBmwRXHurJ/I2HJ8NfU8gHpIokSw pnV17wvweZFi2SgaMlCx0Guka8JNhJ9RPYIAhYzaHw+bAZ4qB6pT+/PRILjbAolAZTqF GOLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=M2fMnfw62ACUrYwbftlHiGOP2JnDUXuDGuDj2bg+SaE=; b=StiTLh2mhMDaG3ArZZs1gTxWjTYjWdSgocdQwAPesaa+ERF9rHO4ccpcBojWdStg09 1kQGZHQFEtsE+dYkn4/qQM5Q2PWvKnj2c7MU2CQAwDxdIeUBDhf+KIpzZEkKqsmIJ9h8 1+NLdQwE8N5UDy+GKL8VUpQG1e5DkoEV4cx4bENCgAiJTB/L3ceDQ3FgXpmSYjJPz1Dk 2IslLB0tvhQWHRjG2Xr6iq+lxwDgY94YX1SogYR0Kg6MRHG5dI0IdnCtM8DCw22sbRIP acIfiuq2cbuffa+7Qe2ArBK9HcZ7nKxSHcc8MSomUJUzyysvG1bRWlgzfqb3TuP5NZ+e 21Zw== X-Gm-Message-State: AOAM5313fbWlDYm/rtfDj3+DN50cxraeYB6Kbs/k7PLgoAMBLzmrh/Ie NS3MReNY8jXG/wtyLJXvPatM2QQhbC8aS+yTK/w= X-Google-Smtp-Source: ABdhPJxfai2iR26juVtnCzfXZUNwwNzbeqqUljg+fgtE/sBcXTEgI4uCYK33csFOXGYgKO3POQzRrj1gLDYK4LvaCWo= X-Received: by 2002:aca:aad6:: with SMTP id t205mr2217197oie.122.1615278954657; Tue, 09 Mar 2021 00:35:54 -0800 (PST) MIME-Version: 1.0 References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83im61qsnj.fsf@gnu.org> In-Reply-To: From: Pip Cet Date: Tue, 9 Mar 2021 08:35:18 +0000 Message-ID: Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree To: Andrea Corallo Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Tue, Mar 9, 2021 at 8:28 AM Andrea Corallo wrote: > Pip Cet writes: > > On Mon, Mar 8, 2021 at 8:47 PM Eli Zaretskii wrote: > >> > From: Pip Cet > >> > Date: Mon, 8 Mar 2021 18:32:55 +0000 > >> > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > >> > > >> > What's saved_cu, actually? > >> > >> Not sure I understand the question. Is the below what you wanted to > >> see? > >> > >> (gdb) p saved_cu > >> $6 = (Lisp_Object *) 0x6a5b2e7c > > > > Yes! I believe we've found another bug. > > > > We were allocating comp_unit as a Lisp_Object **, but it's actually a > > Lisp_Object. > > Uops! Thanks I've installed this as 380ba045c4. Thank you! > BTW this is apparently fixing also my 32bit wide int GC issue. Excellent, we were in luck there, then :-) I think the only mystery left here, assuming the bug doesn't happen again, is why GDB reports a different shared library address from what LoadLibrary returned. I think it might be because GDB looks at the actual mmap state, and the DLL header might have been read in rather than mmapped. Pip From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 03:43:31 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 08:43:31 +0000 Received: from localhost ([127.0.0.1]:45577 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXxi-0001Wg-Op for submit@debbugs.gnu.org; Tue, 09 Mar 2021 03:43:31 -0500 Received: from mx.sdf.org ([205.166.94.24]:50562) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJXxf-0001WV-4X for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 03:43:29 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 1298hOdD003499 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 08:43:25 GMT From: Andrea Corallo To: Pip Cet Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83im61qsnj.fsf@gnu.org> Date: Tue, 09 Mar 2021 08:43:24 +0000 In-Reply-To: (Pip Cet's message of "Tue, 9 Mar 2021 08:35:18 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pip Cet writes: > On Tue, Mar 9, 2021 at 8:28 AM Andrea Corallo wrote: >> Pip Cet writes: >> > On Mon, Mar 8, 2021 at 8:47 PM Eli Zaretskii wrote: >> >> > From: Pip Cet >> >> > Date: Mon, 8 Mar 2021 18:32:55 +0000 >> >> > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> >> > >> >> > What's saved_cu, actually? >> >> >> >> Not sure I understand the question. Is the below what you wanted to >> >> see? >> >> >> >> (gdb) p saved_cu >> >> $6 = (Lisp_Object *) 0x6a5b2e7c >> > >> > Yes! I believe we've found another bug. >> > >> > We were allocating comp_unit as a Lisp_Object **, but it's actually a >> > Lisp_Object. >> >> Uops! Thanks I've installed this as 380ba045c4. > > Thank you! > >> BTW this is apparently fixing also my 32bit wide int GC issue. > > Excellent, we were in luck there, then :-) And this simply answer also why only 32bit wide-int was affected (and how little has been tested in the past), nice. Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 07:36:29 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 12:36:29 +0000 Received: from localhost ([127.0.0.1]:45882 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJbbB-0003B6-0b for submit@debbugs.gnu.org; Tue, 09 Mar 2021 07:36:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38792) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJbb7-0003Aq-R3 for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 07:36:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:36027) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJbb0-0003pL-5x; Tue, 09 Mar 2021 07:36:18 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1766 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJbax-0002R1-6x; Tue, 09 Mar 2021 07:36:17 -0500 Date: Tue, 09 Mar 2021 14:36:11 +0200 Message-Id: <83ft14qzb8.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Mon, 8 Mar 2021 10:45:49 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Mon, 8 Mar 2021 10:45:49 +0000 > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > IIUC (and make sense to me) the issue is that we are leaving two pointer > > pointing to the same handle: One is in the CU_2 allocated by > > 'Fnative_elisp_load' and later discarded by 'load_comp_unit' when > > reloading the same filename. The other is the original CU_1 created the > > first time this filename was loaded. > > > > When CU_2 will be GC'ed because discarded we'll get the problem because > > we'll dlclose the handle. Is this correct? > > CU_1 is GC'ed first. CU_2, for whatever reason, isn't GC'ed in the same cycle. > > > In case isn't the attached curing the issue as well? > > I don't think so. The problem is that we have an invalid Lisp_Object > in the shared library, not that we're calling dlclose() too often.. > > Again, there's no real cost to fixing this: at best, we avoid a > catastrophic use-after-free. At worst, we nulled out a word of memory > only for it to be unmapped a moment later, no harm done. Once again, you are discussing a scenario whose relation to Real Life I'm not sure I understand. When will a cu be GC'ed? Isn't that when a .eln file is unloaded? And isn't it true that it can only be unloaded if the user or some code calls unload-feature or something similar? If the above is true, then the probability of this scenario to happen is very low, and in my particular case it is strictly zero. Not that I object to making the code robust in those rare cases, but we are discussing a particular crash. > > PS I couldn't reproduce using the lisp reproducer both on my 64bit both > > on my 32bit system (I left it looping for a while), is that reproducer > > working for you? > > Have you modified dynlib_open() to leak the shared object? That's what > I think might be happening for Eli What shared object is supposed to leak in my case, and why? From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 07:56:30 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 12:56:31 +0000 Received: from localhost ([127.0.0.1]:45895 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJbuY-0003dj-KV for submit@debbugs.gnu.org; Tue, 09 Mar 2021 07:56:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43712) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJbuW-0003dU-3q for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 07:56:29 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:36214) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJbuP-0005Sj-2D; Tue, 09 Mar 2021 07:56:21 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2981 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJbu4-0001sM-Ll; Tue, 09 Mar 2021 07:56:13 -0500 Date: Tue, 09 Mar 2021 14:55:57 +0200 Message-Id: <83blbsqyea.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 07:03:01 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 07:03:01 +0000 > > > Can you tell why are we loading the same .eln files more than once? > > I guess `load' was called two times on the same filename. Is this likely to happen? Our code generally uses 'require', which should avoid that. > > What are the reasons for unloading a .eln file which was once loaded > > into a session? > > All the functions defined in it are not anymore reachable (read all > symbols functions are makunbound or defined to some other function). That means someone did unload-feature, right? Again, unlikely. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 08:05:54 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 13:05:54 +0000 Received: from localhost ([127.0.0.1]:45916 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJc3d-0003sz-Tm for submit@debbugs.gnu.org; Tue, 09 Mar 2021 08:05:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48094) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJc3c-0003sm-68 for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 08:05:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:36418) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJc3W-0001PK-9O; Tue, 09 Mar 2021 08:05:46 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3561 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJc3H-0002Gg-L5; Tue, 09 Mar 2021 08:05:38 -0500 Date: Tue, 09 Mar 2021 15:05:27 +0200 Message-Id: <838s6wqxyg.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 08:32:46 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83h7m84h9g.fsf@gnu.org> <86v9ao5czu.fsf@gmail.com> <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, > andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 08:32:46 +0000 > > The original code was written in the assumption that dlclose (as > FreeLibrary) can't fail unloading a shared when the internal refcount > goes to zero. As this is not the case I think it _is_ the case, but the problem might be that the refcount is not zero, and therefore the shared library is not actually unloaded and unmapped. (I say "might be" because I still don't see the scenario where this could happen, and I'm not sure if it does happen the solution should be as suggested -- it could be that it's better to not load the .eln the second time, i.e. make 'load' behave like 'require'). From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 08:58:42 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 13:58:42 +0000 Received: from localhost ([127.0.0.1]:46019 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJcsg-0005F8-CB for submit@debbugs.gnu.org; Tue, 09 Mar 2021 08:58:41 -0500 Received: from mx.sdf.org ([205.166.94.24]:61090) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJcsb-0005Eu-Ct for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 08:58:37 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129DwV0g018822 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 13:58:32 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <838s6wqxyg.fsf@gnu.org> Date: Tue, 09 Mar 2021 13:58:31 +0000 In-Reply-To: <838s6wqxyg.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Mar 2021 15:05:27 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: Eli Zaretskii , 46256@debbugs.gnu.org, >> andrewjmoreton@gmail.com >> Date: Tue, 09 Mar 2021 08:32:46 +0000 >> >> The original code was written in the assumption that dlclose (as >> FreeLibrary) can't fail unloading a shared when the internal refcount >> goes to zero. As this is not the case > > I think it _is_ the case, but the problem might be that the refcount > is not zero, and therefore the shared library is not actually unloaded > and unmapped. (I say "might be" because I still don't see the > scenario where this could happen, and I'm not sure if it does happen > the solution should be as suggested -- it could be that it's better to > not load the .eln the second time, i.e. make 'load' behave like > 'require'). That was my understanding (as I don't see why dlclose should fail) but reading the man page: "On success, dlclose() returns 0; on error, it returns a nonzero value." So my understanding now is that it can fail. Am I wrong? Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 09:33:02 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 14:33:02 +0000 Received: from localhost ([127.0.0.1]:46153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJdPu-0006Bm-B0 for submit@debbugs.gnu.org; Tue, 09 Mar 2021 09:33:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54832) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJdPp-0006BW-Ge for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 09:32:57 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39238) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJdPi-0000Wu-TJ; Tue, 09 Mar 2021 09:32:46 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1239 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJdPh-00013K-Jr; Tue, 09 Mar 2021 09:32:46 -0500 Date: Tue, 09 Mar 2021 16:32:42 +0200 Message-Id: <835z20qtx1.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet In-Reply-To: (message from Pip Cet on Tue, 9 Mar 2021 08:35:18 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83im61qsnj.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Pip Cet > Date: Tue, 9 Mar 2021 08:35:18 +0000 > Cc: Eli Zaretskii , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > I think the only mystery left here, assuming the bug doesn't happen > again, is why GDB reports a different shared library address from what > LoadLibrary returned. I think it might be because GDB looks at the > actual mmap state, and the DLL header might have been read in rather > than mmapped. Yes, empirically I see this in every DLL that Emacs loads. So this is a non-issue. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 09:35:06 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 14:35:06 +0000 Received: from localhost ([127.0.0.1]:46157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJdRy-0006FB-9z for submit@debbugs.gnu.org; Tue, 09 Mar 2021 09:35:06 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55478) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJdRw-0006Ed-Qo for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 09:35:05 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39249) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJdRr-0001Ib-FM; Tue, 09 Mar 2021 09:34:59 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1356 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJdRZ-0005TC-P0; Tue, 09 Mar 2021 09:34:54 -0500 Date: Tue, 09 Mar 2021 16:34:38 +0200 Message-Id: <834khkqttt.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 08:35:03 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83h7llqslb.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 08:35:03 +0000 > > > Anything you'd like me to try to find out in the next session, > > assuming I'll be able to reproduce this assertion violation? > > I think at this point the best is to recompile using the latest state of > the branch with installed the two patches by Pip and see if you still > see the issue (probably no). I've now built the latest branch. It still crashes, in the same place, although with different Lisp files. I'm looking into this, will post the details. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 09:55:45 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 14:55:46 +0000 Received: from localhost ([127.0.0.1]:47693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJdlx-00078h-Mh for submit@debbugs.gnu.org; Tue, 09 Mar 2021 09:55:45 -0500 Received: from mx.sdf.org ([205.166.94.24]:57617) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJdlt-00078Z-Ki for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 09:55:45 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129Ete2Y003669 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 14:55:40 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> Date: Tue, 09 Mar 2021 14:55:40 +0000 In-Reply-To: <83blbsqyea.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Mar 2021 14:55:57 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Tue, 09 Mar 2021 07:03:01 +0000 >> >> > Can you tell why are we loading the same .eln files more than once? >> >> I guess `load' was called two times on the same filename. > > Is this likely to happen? Our code generally uses 'require', which > should avoid that. cc-*.el files for instance have more than one direct call to load. IIRC one of the analyzed cases was cc-mode related (certanly one I observed). >> > What are the reasons for unloading a .eln file which was once loaded >> > into a session? >> >> All the functions defined in it are not anymore reachable (read all >> symbols functions are makunbound or defined to some other function). > > That means someone did unload-feature, right? Also loading for example a new version freshly compiled of the same file should present the same scenario. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 10:38:57 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 15:38:57 +0000 Received: from localhost ([127.0.0.1]:47721 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJeRl-0008Fu-EQ for submit@debbugs.gnu.org; Tue, 09 Mar 2021 10:38:57 -0500 Received: from mx.sdf.org ([205.166.94.24]:51963) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJeRj-0008Fm-Ob for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 10:38:56 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129FcsCg028334 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 15:38:54 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83h7llqslb.fsf@gnu.org> <834khkqttt.fsf@gnu.org> Date: Tue, 09 Mar 2021 15:38:54 +0000 In-Reply-To: <834khkqttt.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Mar 2021 16:34:38 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Tue, 09 Mar 2021 08:35:03 +0000 >> >> > Anything you'd like me to try to find out in the next session, >> > assuming I'll be able to reproduce this assertion violation? >> >> I think at this point the best is to recompile using the latest state of >> the branch with installed the two patches by Pip and see if you still >> see the issue (probably no). > > I've now built the latest branch. It still crashes, in the same > place, although with different Lisp files. I'm looking into this, > will post the details. Thinking about, you might have stale eln files reachable in the `comp-eln-load-path' generated with the bug fixed by 380ba045c4. We should have probably bumped a new `comp-abi-hash' contextually with the fix, as I'm not sure if the merge bumped a new `comp-abi-hash' I did it now manually with 79c83f79c5 to be on the safe side. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 11:31:23 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 16:31:23 +0000 Received: from localhost ([127.0.0.1]:47796 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfGV-0002Gv-9w for submit@debbugs.gnu.org; Tue, 09 Mar 2021 11:31:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59730) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfGR-0002AP-Nl for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 11:31:22 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40788) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJfGK-00045o-0p; Tue, 09 Mar 2021 11:31:13 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4620 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJfG8-0008JF-WE; Tue, 09 Mar 2021 11:31:06 -0500 Date: Tue, 09 Mar 2021 18:30:57 +0200 Message-Id: <8335x4qofy.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie In-Reply-To: <83blbsqyea.fsf@gnu.org> (message from Eli Zaretskii on Tue, 09 Mar 2021 14:55:57 +0200) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Tue, 09 Mar 2021 14:55:57 +0200 > From: Eli Zaretskii > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com > > > From: Andrea Corallo > > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > Date: Tue, 09 Mar 2021 07:03:01 +0000 > > > > > Can you tell why are we loading the same .eln files more than once? > > > > I guess `load' was called two times on the same filename. > > Is this likely to happen? Our code generally uses 'require', which > should avoid that. Answering my own question here: it can easily happen due to use of cc-require in cc-*.el files. Alan, why does CC mode use this technique? what is the purpose of always loading a Lisp file even if it was already loaded? From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 11:36:31 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 16:36:31 +0000 Received: from localhost ([127.0.0.1]:47800 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfLT-0003JZ-2c for submit@debbugs.gnu.org; Tue, 09 Mar 2021 11:36:31 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60954) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfLR-0003JN-LH for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 11:36:29 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40869) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJfLM-0004kn-1n; Tue, 09 Mar 2021 11:36:24 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4994 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJfLJ-0005pc-S8; Tue, 09 Mar 2021 11:36:22 -0500 Date: Tue, 09 Mar 2021 18:36:19 +0200 Message-Id: <831rcoqo70.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 13:58:31 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnutogrh.fsf@gmail.com> <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <838s6wqxyg.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 13:58:31 +0000 > > > I think it _is_ the case, but the problem might be that the refcount > > is not zero, and therefore the shared library is not actually unloaded > > and unmapped. (I say "might be" because I still don't see the > > scenario where this could happen, and I'm not sure if it does happen > > the solution should be as suggested -- it could be that it's better to > > not load the .eln the second time, i.e. make 'load' behave like > > 'require'). > > That was my understanding (as I don't see why dlclose should fail) but > reading the man page: > > "On success, dlclose() returns 0; on error, it returns a nonzero value." > > So my understanding now is that it can fail. Am I wrong? I don't know. Posix says no errors are defined for dlclose, so maybe look at the glibc sources to see what happens on GNU/Linux? From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 11:42:28 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 16:42:28 +0000 Received: from localhost ([127.0.0.1]:47804 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfRD-0003Rs-OZ for submit@debbugs.gnu.org; Tue, 09 Mar 2021 11:42:28 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34176) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfRC-0003Rf-Iz for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 11:42:27 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40970) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJfR7-0005nY-9A; Tue, 09 Mar 2021 11:42:21 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1388 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJfR5-0003wg-Ad; Tue, 09 Mar 2021 11:42:20 -0500 Date: Tue, 09 Mar 2021 18:42:16 +0200 Message-Id: <83wnugp9cn.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 14:55:40 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 14:55:40 +0000 > > Eli Zaretskii writes: > > >> I guess `load' was called two times on the same filename. > > > > Is this likely to happen? Our code generally uses 'require', which > > should avoid that. > > cc-*.el files for instance have more than one direct call to load. IIRC > one of the analyzed cases was cc-mode related (certanly one I observed). Yes, that's the cc-require macro, as I have discovered meanwhile. I'm not yet sure I understand why CC mode does that. > >> > What are the reasons for unloading a .eln file which was once loaded > >> > into a session? > >> > >> All the functions defined in it are not anymore reachable (read all > >> symbols functions are makunbound or defined to some other function). > > > > That means someone did unload-feature, right? > > Also loading for example a new version freshly compiled of the same file > should present the same scenario. Yes, that, too. There's actually a problem with what we do in that case, see my other (as yet unwritten) message. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 11:51:25 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 16:51:25 +0000 Received: from localhost ([127.0.0.1]:47818 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfZs-0003fg-N4 for submit@debbugs.gnu.org; Tue, 09 Mar 2021 11:51:24 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36990) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfZq-0003fT-Ep for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 11:51:23 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41183) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJfZh-0007Mf-Tf; Tue, 09 Mar 2021 11:51:14 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1928 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJfZd-0006rT-2g; Tue, 09 Mar 2021 11:51:13 -0500 Date: Tue, 09 Mar 2021 18:51:03 +0200 Message-Id: <83v9a0p8y0.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 15:38:54 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83h7llqslb.fsf@gnu.org> <834khkqttt.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 15:38:54 +0000 > > > I've now built the latest branch. It still crashes, in the same > > place, although with different Lisp files. I'm looking into this, > > will post the details. > > Thinking about, you might have stale eln files reachable in the > `comp-eln-load-path' generated with the bug fixed by 380ba045c4. Maybe. What I see is that we load a CU in Fnative_elisp_load followed by load_comp_unit, for the first time, and create a Lisp CU object for it: Lisp_Object comp_u_lisp_obj; XSETNATIVE_COMP_UNIT (comp_u_lisp_obj, comp_u); Then we store it in the shared library: if (comp_u->loaded_once) ... else *saved_cu = comp_u_lisp_obj; But then we clobber the value of comp_u_lisp_obj here: data_ephemeral_vec = load_static_obj (comp_u, TEXT_DATA_RELOC_EPHEMERAL_SYM); EMACS_INT d_vec_len = XFIXNUM (Flength (data_ephemeral_vec)); for (EMACS_INT i = 0; i < d_vec_len; i++) data_eph_relocs[i] = AREF (data_ephemeral_vec, i); <<<<<<<<<<< Is this likely to be due to that problem? From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 12:05:05 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 17:05:05 +0000 Received: from localhost ([127.0.0.1]:47826 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfn7-00040W-Az for submit@debbugs.gnu.org; Tue, 09 Mar 2021 12:05:05 -0500 Received: from mx.sdf.org ([205.166.94.24]:62773) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfn4-000400-85 for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 12:05:03 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129H4xLt013244 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 17:04:59 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83h7llqslb.fsf@gnu.org> <834khkqttt.fsf@gnu.org> <83v9a0p8y0.fsf@gnu.org> Date: Tue, 09 Mar 2021 17:04:58 +0000 In-Reply-To: <83v9a0p8y0.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Mar 2021 18:51:03 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Tue, 09 Mar 2021 15:38:54 +0000 >> >> > I've now built the latest branch. It still crashes, in the same >> > place, although with different Lisp files. I'm looking into this, >> > will post the details. >> >> Thinking about, you might have stale eln files reachable in the >> `comp-eln-load-path' generated with the bug fixed by 380ba045c4. > > Maybe. What I see is that we load a CU in Fnative_elisp_load followed > by load_comp_unit, for the first time, and create a Lisp CU object for > it: > > Lisp_Object comp_u_lisp_obj; > XSETNATIVE_COMP_UNIT (comp_u_lisp_obj, comp_u); > > Then we store it in the shared library: > > if (comp_u->loaded_once) > ... > else > *saved_cu = comp_u_lisp_obj; > > But then we clobber the value of comp_u_lisp_obj here: > > data_ephemeral_vec = > load_static_obj (comp_u, TEXT_DATA_RELOC_EPHEMERAL_SYM); > > EMACS_INT d_vec_len = XFIXNUM (Flength (data_ephemeral_vec)); > for (EMACS_INT i = 0; i < d_vec_len; i++) > data_eph_relocs[i] = AREF (data_ephemeral_vec, i); <<<<<<<<<<< > > Is this likely to be due to that problem? Interesting, how can we clobber the value of 'comp_u_lisp_obj' that is stack allocated while writing into 'data_eph_relocs[i]' that is static allocated in an eln? If we clobber 'comp_u_lisp_obj' this is certanly a problem as we have to pass it to 'top_level_run' later on. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 12:10:51 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 17:10:51 +0000 Received: from localhost ([127.0.0.1]:47841 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfsh-00049F-9a for submit@debbugs.gnu.org; Tue, 09 Mar 2021 12:10:51 -0500 Received: from mx.sdf.org ([205.166.94.24]:62406) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJfsf-000496-Ms for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 12:10:50 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129HAmcC024847 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 17:10:49 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86wnut8fb9.fsf@gmail.com> <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <838s6wqxyg.fsf@gnu.org> <831rcoqo70.fsf@gnu.org> Date: Tue, 09 Mar 2021 17:10:48 +0000 In-Reply-To: <831rcoqo70.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Mar 2021 18:36:19 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Tue, 09 Mar 2021 13:58:31 +0000 >> >> > I think it _is_ the case, but the problem might be that the refcount >> > is not zero, and therefore the shared library is not actually unloaded >> > and unmapped. (I say "might be" because I still don't see the >> > scenario where this could happen, and I'm not sure if it does happen >> > the solution should be as suggested -- it could be that it's better to >> > not load the .eln the second time, i.e. make 'load' behave like >> > 'require'). >> >> That was my understanding (as I don't see why dlclose should fail) but >> reading the man page: >> >> "On success, dlclose() returns 0; on error, it returns a nonzero value." >> >> So my understanding now is that it can fail. Am I wrong? > > I don't know. Posix says no errors are defined for dlclose, so maybe > look at the glibc sources to see what happens on GNU/Linux? To a quick look into GLIBC AFAIU dlclose can return non zero values. Also looking at [1] it says: "If handle does not refer to an open symbol table handle or if the symbol table handle could not be closed, dlclose() shall return a non-zero value." So yeah, don't know if this is a real case (never seen it in practice) but I think is good to be robust against in principal. Thanks Andrea [1] From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 13:20:32 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 18:20:32 +0000 Received: from localhost ([127.0.0.1]:47897 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJgy8-0007yK-Ce for submit@debbugs.gnu.org; Tue, 09 Mar 2021 13:20:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56854) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJgy4-0007y4-0B for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 13:20:31 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42915) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJgxy-0006kr-Bb; Tue, 09 Mar 2021 13:20:22 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3493 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJgxx-00025z-4s; Tue, 09 Mar 2021 13:20:21 -0500 Date: Tue, 09 Mar 2021 20:20:17 +0200 Message-Id: <83o8fsp4ta.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 17:04:58 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83h7llqslb.fsf@gnu.org> <834khkqttt.fsf@gnu.org> <83v9a0p8y0.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 17:04:58 +0000 > > > else > > *saved_cu = comp_u_lisp_obj; > > > > But then we clobber the value of comp_u_lisp_obj here: > > > > data_ephemeral_vec = > > load_static_obj (comp_u, TEXT_DATA_RELOC_EPHEMERAL_SYM); > > > > EMACS_INT d_vec_len = XFIXNUM (Flength (data_ephemeral_vec)); > > for (EMACS_INT i = 0; i < d_vec_len; i++) > > data_eph_relocs[i] = AREF (data_ephemeral_vec, i); <<<<<<<<<<< > > > > Is this likely to be due to that problem? > > Interesting, how can we clobber the value of 'comp_u_lisp_obj' that is > stack allocated while writing into 'data_eph_relocs[i]' that is static > allocated in an eln? I don't know, but the problem disappeared after I rebuild with the latest branch, so I guess it was related to the bug fixed in 380ba045c4 after all. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 13:31:51 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 18:31:51 +0000 Received: from localhost ([127.0.0.1]:47922 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJh95-0008Gy-Ea for submit@debbugs.gnu.org; Tue, 09 Mar 2021 13:31:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58760) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJh93-0008Gk-Rv for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 13:31:50 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43143) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJh8y-0002wt-Cf; Tue, 09 Mar 2021 13:31:44 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4212 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJh8x-0004WK-QT; Tue, 09 Mar 2021 13:31:44 -0500 Date: Tue, 09 Mar 2021 20:31:39 +0200 Message-Id: <83mtvcp4ac.fsf@gnu.org> From: Eli Zaretskii To: Andrea Corallo In-Reply-To: (message from Andrea Corallo on Tue, 09 Mar 2021 14:55:40 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <861rd1tbpa.fsf@gmail.com> <83pn0km6y3.fsf@gnu.org> <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Andrea Corallo > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Tue, 09 Mar 2021 14:55:40 +0000 > > cc-*.el files for instance have more than one direct call to load. IIRC > one of the analyzed cases was cc-mode related (certanly one I observed). > > >> > What are the reasons for unloading a .eln file which was once loaded > >> > into a session? > >> > >> All the functions defined in it are not anymore reachable (read all > >> symbols functions are makunbound or defined to some other function). > > > > That means someone did unload-feature, right? > > Also loading for example a new version freshly compiled of the same file > should present the same scenario. I see a problem in this area. Consider this code in native-elisp-load: if (!NILP (Fgethash (filename, all_loaded_comp_units_h, Qnil)) && !file_in_eln_sys_dir (filename) && !NILP (Ffile_writable_p (filename))) { /* If in this session there was ever a file loaded with this name, rename it before loading, to make sure we always get a new handle! */ Lisp_Object tmp_filename = Fmake_temp_file_internal (filename, Qnil, build_string (".eln.tmp"), Qnil); if (NILP (Ffile_writable_p (tmp_filename))) comp_u->handle = dynlib_open (SSDATA (encoded_filename)); else { Frename_file (filename, tmp_filename, Qt); comp_u->handle = dynlib_open (SSDATA (ENCODE_FILE (tmp_filename))); Frename_file (tmp_filename, filename, Qnil); } The last 'else' branch momentarily renames the .eln file, then loads it under the modified name, with the assumption that this would force dynlib_open to produce a new handle. But in the case that the same .eln file is loaded more than once, i.e. the .eln file was not modified since the previous load, dynlib_open returns the same handle regardless of the file name, at least on MS-Windows. (Does this work as intended on GNU/Linux?) The problem with returning the same handle is that the refcount of the handle is incremented, which means unload-feature will be unable to unload the library. Is this renaming dance for the case that the .eln file was updated since the last load, or do we need it even if it wasn't updated? If the former, then I guess we could dynlib_close the handle immediately if we discover that it's identical to the one we had from the previous load. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 14:23:50 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 19:23:50 +0000 Received: from localhost ([127.0.0.1]:47963 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJhxO-00013w-6v for submit@debbugs.gnu.org; Tue, 09 Mar 2021 14:23:50 -0500 Received: from mx.sdf.org ([205.166.94.24]:49683) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJhxI-00013l-P8 for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 14:23:48 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129JNh7u018936 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 19:23:44 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83h7llqslb.fsf@gnu.org> <834khkqttt.fsf@gnu.org> <83v9a0p8y0.fsf@gnu.org> <83o8fsp4ta.fsf@gnu.org> Date: Tue, 09 Mar 2021 19:23:43 +0000 In-Reply-To: <83o8fsp4ta.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Mar 2021 20:20:17 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Tue, 09 Mar 2021 17:04:58 +0000 >> >> > else >> > *saved_cu = comp_u_lisp_obj; >> > >> > But then we clobber the value of comp_u_lisp_obj here: >> > >> > data_ephemeral_vec = >> > load_static_obj (comp_u, TEXT_DATA_RELOC_EPHEMERAL_SYM); >> > >> > EMACS_INT d_vec_len = XFIXNUM (Flength (data_ephemeral_vec)); >> > for (EMACS_INT i = 0; i < d_vec_len; i++) >> > data_eph_relocs[i] = AREF (data_ephemeral_vec, i); <<<<<<<<<<< >> > >> > Is this likely to be due to that problem? >> >> Interesting, how can we clobber the value of 'comp_u_lisp_obj' that is >> stack allocated while writing into 'data_eph_relocs[i]' that is static >> allocated in an eln? > > I don't know, but the problem disappeared after I rebuild with the > latest branch, so I guess it was related to the bug fixed in > 380ba045c4 after all. Super Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 09 14:38:22 2021 Received: (at 46256) by debbugs.gnu.org; 9 Mar 2021 19:38:22 +0000 Received: from localhost ([127.0.0.1]:47986 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJiBS-0001QA-DY for submit@debbugs.gnu.org; Tue, 09 Mar 2021 14:38:22 -0500 Received: from mx.sdf.org ([205.166.94.24]:65040) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJiBN-0001Px-1d for 46256@debbugs.gnu.org; Tue, 09 Mar 2021 14:38:20 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 129JcFI3007092 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Tue, 9 Mar 2021 19:38:16 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <86ft1f8ara.fsf@gmail.com> <83sg5cjdn8.fsf@gnu.org> <83r1kwjcy2.fsf@gnu.org> <8335x6u9o4.fsf@gnu.org> <83zgzesrku.fsf@gnu.org> <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> <83mtvcp4ac.fsf@gnu.org> Date: Tue, 09 Mar 2021 19:38:15 +0000 In-Reply-To: <83mtvcp4ac.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Mar 2021 20:31:39 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andrea Corallo >> Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Tue, 09 Mar 2021 14:55:40 +0000 >> >> cc-*.el files for instance have more than one direct call to load. IIRC >> one of the analyzed cases was cc-mode related (certanly one I observed). >> >> >> > What are the reasons for unloading a .eln file which was once loaded >> >> > into a session? >> >> >> >> All the functions defined in it are not anymore reachable (read all >> >> symbols functions are makunbound or defined to some other function). >> > >> > That means someone did unload-feature, right? >> >> Also loading for example a new version freshly compiled of the same file >> should present the same scenario. > > I see a problem in this area. Consider this code in > native-elisp-load: > > if (!NILP (Fgethash (filename, all_loaded_comp_units_h, Qnil)) > && !file_in_eln_sys_dir (filename) > && !NILP (Ffile_writable_p (filename))) > { > /* If in this session there was ever a file loaded with this > name, rename it before loading, to make sure we always get a > new handle! */ > Lisp_Object tmp_filename = > Fmake_temp_file_internal (filename, Qnil, build_string (".eln.tmp"), > Qnil); > if (NILP (Ffile_writable_p (tmp_filename))) > comp_u->handle = dynlib_open (SSDATA (encoded_filename)); > else > { > Frename_file (filename, tmp_filename, Qt); > comp_u->handle = dynlib_open (SSDATA (ENCODE_FILE (tmp_filename))); > Frename_file (tmp_filename, filename, Qnil); > } > > The last 'else' branch momentarily renames the .eln file, then loads > it under the modified name, with the assumption that this would force > dynlib_open to produce a new handle. But in the case that the same > .eln file is loaded more than once, i.e. the .eln file was not > modified since the previous load, dynlib_open returns the same handle > regardless of the file name, at least on MS-Windows. (Does this work > as intended on GNU/Linux?) > > The problem with returning the same handle is that the refcount of the > handle is incremented, which means unload-feature will be unable to > unload the library. It works because the handle is stored into the new CU object and passed to 'load_comp_unit'. 'load_comp_unit' will recognize the "re-load" condition and discard the CU freshly allocated to use the original one (that is stored in the .eln). As a consequence the discarded CU will be GC'd end so the refcounf will be decremented. > Is this renaming dance for the case that the .eln file was updated > since the last load, or do we need it even if it wasn't updated? The renaming dance is for cases like one changes `comp-speed' recompile and load. Andrea From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 10 08:14:26 2021 Received: (at 46256) by debbugs.gnu.org; 10 Mar 2021 13:14:26 +0000 Received: from localhost ([127.0.0.1]:49135 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJyfR-0004RL-SX for submit@debbugs.gnu.org; Wed, 10 Mar 2021 08:14:26 -0500 Received: from colin.muc.de ([193.149.48.1]:56697 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1lJyfQ-0004R6-77 for 46256@debbugs.gnu.org; Wed, 10 Mar 2021 08:14:24 -0500 Received: (qmail 6189 invoked by uid 3782); 10 Mar 2021 13:14:17 -0000 Received: from acm.muc.de (p4fe15e8b.dip0.t-ipconnect.de [79.225.94.139]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 10 Mar 2021 14:14:17 +0100 Received: (qmail 8631 invoked by uid 1000); 10 Mar 2021 13:14:16 -0000 Date: Wed, 10 Mar 2021 13:14:16 +0000 To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Message-ID: References: <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> <8335x4qofy.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8335x4qofy.fsf@gnu.org> X-Submission-Agent: TMDA/1.3.x (Ph3nix) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, Eli. On Tue, Mar 09, 2021 at 18:30:57 +0200, Eli Zaretskii wrote: > > Date: Tue, 09 Mar 2021 14:55:57 +0200 > > From: Eli Zaretskii > > Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com > > > From: Andrea Corallo > > > Cc: pipcet@gmail.com, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com > > > Date: Tue, 09 Mar 2021 07:03:01 +0000 > > > > Can you tell why are we loading the same .eln files more than once? > > > I guess `load' was called two times on the same filename. > > Is this likely to happen? Our code generally uses 'require', which > > should avoid that. > Answering my own question here: it can easily happen due to use of > cc-require in cc-*.el files. Alan, why does CC mode use this > technique? what is the purpose of always loading a Lisp file even if > it was already loaded? Are you sure? cc-require is intended just to compile a `require' form (OK, it compiles (progn nil (require 'cc-vars)), but the byte compiler will optimise the progn away). When loading uncompiled cc-*.el, cc-require does fancy things to make sure the cc-*.el is in the "correct" directory, but it shouldn't compile any of this into the *.elc. Maybe there's a bug, somewhere. The code in this area was written by Martin Stjernholm (my predecessor), who was evidently having trouble with "wrong" versions of the *.el files getting loaded. I've had a bit of a look at the thread for bug #46256, but I can't really follow it, at least not without a lot of effort. Might it be that the ..eln compiler is doing things on the .el file? I'm not at all familiar with how the native compilation works, I'm afraid. -- Alan Mackenzie (Nuremberg, Germany). From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 10 08:20:15 2021 Received: (at 46256) by debbugs.gnu.org; 10 Mar 2021 13:20:15 +0000 Received: from localhost ([127.0.0.1]:49146 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJyl4-0004cM-Rr for submit@debbugs.gnu.org; Wed, 10 Mar 2021 08:20:15 -0500 Received: from mx.sdf.org ([205.166.94.24]:51484) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJyl2-0004cD-R7 for 46256@debbugs.gnu.org; Wed, 10 Mar 2021 08:20:13 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 12ADKB9s027156 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Wed, 10 Mar 2021 13:20:12 GMT From: Andrea Corallo To: Alan Mackenzie Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> <8335x4qofy.fsf@gnu.org> Date: Wed, 10 Mar 2021 13:20:11 +0000 In-Reply-To: (Alan Mackenzie's message of "Wed, 10 Mar 2021 13:14:16 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Eli Zaretskii , andrewjmoreton@gmail.com, 46256@debbugs.gnu.org, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Alan Mackenzie writes: [...] > I've had a bit of a look at the thread for bug #46256, but I can't really > follow it, at least not without a lot of effort. Might it be that the > ..eln compiler is doing things on the .el file? I'm not at all familiar > with how the native compilation works, I'm afraid. Hi Alan, I believe should be independent from the native compilation, I'd expect the same load being performed on a vanilla Emacs. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 10 09:08:08 2021 Received: (at 46256) by debbugs.gnu.org; 10 Mar 2021 14:08:08 +0000 Received: from localhost ([127.0.0.1]:49282 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJzVP-0005wd-RK for submit@debbugs.gnu.org; Wed, 10 Mar 2021 09:08:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41232) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lJzVO-0005w9-3S for 46256@debbugs.gnu.org; Wed, 10 Mar 2021 09:08:06 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33796) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJzVI-0003cB-8V; Wed, 10 Mar 2021 09:08:00 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1165 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lJzVH-00031I-Ez; Wed, 10 Mar 2021 09:08:00 -0500 Date: Wed, 10 Mar 2021 16:07:55 +0200 Message-Id: <83y2evnltw.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie In-Reply-To: (message from Alan Mackenzie on Wed, 10 Mar 2021 13:14:16 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> <8335x4qofy.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Wed, 10 Mar 2021 13:14:16 +0000 > Cc: akrl@sdf.org, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, > pipcet@gmail.com > From: Alan Mackenzie > > > Answering my own question here: it can easily happen due to use of > > cc-require in cc-*.el files. Alan, why does CC mode use this > > technique? what is the purpose of always loading a Lisp file even if > > it was already loaded? > > Are you sure? cc-require is intended just to compile a `require' form > (OK, it compiles (progn nil (require 'cc-vars)), but the byte compiler > will optimise the progn away). We are not talking about compilation, we are talking about loading cc-* files. When we process cc-require, we end up loading the required CC mode file, even though it is already loaded. > When loading uncompiled cc-*.el, cc-require does fancy things to make > sure the cc-*.el is in the "correct" directory, but it shouldn't compile > any of this into the *.elc. Maybe there's a bug, somewhere. > > The code in this area was written by Martin Stjernholm (my predecessor), > who was evidently having trouble with "wrong" versions of the *.el files > getting loaded. > > I've had a bit of a look at the thread for bug #46256, but I can't really > follow it, at least not without a lot of effort. Might it be that the > ..eln compiler is doing things on the .el file? I'm not at all familiar > with how the native compilation works, I'm afraid. Maybe. Andrea, could you take a look at what happens with cc-require in the native-comp branch? From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 10 10:24:43 2021 Received: (at 46256) by debbugs.gnu.org; 10 Mar 2021 15:24:43 +0000 Received: from localhost ([127.0.0.1]:51622 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lK0hX-0006N4-8Q for submit@debbugs.gnu.org; Wed, 10 Mar 2021 10:24:43 -0500 Received: from mx.sdf.org ([205.166.94.24]:55775) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lK0hV-0006Mw-Ep for 46256@debbugs.gnu.org; Wed, 10 Mar 2021 10:24:42 -0500 Received: from mab (ma.sdf.org [205.166.94.33]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 12AFOeg7013357 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Wed, 10 Mar 2021 15:24:40 GMT From: Andrea Corallo To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83tupms4mp.fsf@gnu.org> <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> <8335x4qofy.fsf@gnu.org> <83y2evnltw.fsf@gnu.org> Date: Wed, 10 Mar 2021 15:24:40 +0000 In-Reply-To: <83y2evnltw.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 10 Mar 2021 16:07:55 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: Alan Mackenzie , 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> Date: Wed, 10 Mar 2021 13:14:16 +0000 >> Cc: akrl@sdf.org, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, >> pipcet@gmail.com >> From: Alan Mackenzie >> >> > Answering my own question here: it can easily happen due to use of >> > cc-require in cc-*.el files. Alan, why does CC mode use this >> > technique? what is the purpose of always loading a Lisp file even if >> > it was already loaded? >> >> Are you sure? cc-require is intended just to compile a `require' form >> (OK, it compiles (progn nil (require 'cc-vars)), but the byte compiler >> will optimise the progn away). > > We are not talking about compilation, we are talking about loading > cc-* files. When we process cc-require, we end up loading the > required CC mode file, even though it is already loaded. > >> When loading uncompiled cc-*.el, cc-require does fancy things to make >> sure the cc-*.el is in the "correct" directory, but it shouldn't compile >> any of this into the *.elc. Maybe there's a bug, somewhere. >> >> The code in this area was written by Martin Stjernholm (my predecessor), >> who was evidently having trouble with "wrong" versions of the *.el files >> getting loaded. >> >> I've had a bit of a look at the thread for bug #46256, but I can't really >> follow it, at least not without a lot of effort. Might it be that the >> ..eln compiler is doing things on the .el file? I'm not at all familiar >> with how the native compilation works, I'm afraid. > > Maybe. Andrea, could you take a look at what happens with cc-require > in the native-comp branch? Yes, today or tomorrow evening I'll try to have a look. Thanks Andrea From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 10 11:56:28 2021 Received: (at 46256) by debbugs.gnu.org; 10 Mar 2021 16:56:28 +0000 Received: from localhost ([127.0.0.1]:51735 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lK28F-0002IZ-HP for submit@debbugs.gnu.org; Wed, 10 Mar 2021 11:56:28 -0500 Received: from colin.muc.de ([193.149.48.1]:62872 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1lK28D-0002IM-Bv for 46256@debbugs.gnu.org; Wed, 10 Mar 2021 11:56:21 -0500 Received: (qmail 58038 invoked by uid 3782); 10 Mar 2021 16:56:14 -0000 Received: from acm.muc.de (p4fe15e8b.dip0.t-ipconnect.de [79.225.94.139]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 10 Mar 2021 17:56:14 +0100 Received: (qmail 9942 invoked by uid 1000); 10 Mar 2021 16:56:14 -0000 Date: Wed, 10 Mar 2021 16:56:14 +0000 To: Eli Zaretskii Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree Message-ID: References: <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> <8335x4qofy.fsf@gnu.org> <83y2evnltw.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83y2evnltw.fsf@gnu.org> X-Submission-Agent: TMDA/1.3.x (Ph3nix) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, Eli. On Wed, Mar 10, 2021 at 16:07:55 +0200, Eli Zaretskii wrote: > > Date: Wed, 10 Mar 2021 13:14:16 +0000 > > Cc: akrl@sdf.org, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, > > pipcet@gmail.com > > From: Alan Mackenzie > > > Answering my own question here: it can easily happen due to use of > > > cc-require in cc-*.el files. Alan, why does CC mode use this > > > technique? what is the purpose of always loading a Lisp file even if > > > it was already loaded? > > Are you sure? cc-require is intended just to compile a `require' form > > (OK, it compiles (progn nil (require 'cc-vars)), but the byte compiler > > will optimise the progn away). > We are not talking about compilation, we are talking about loading > cc-* files. The cc-*.el files? The cc-*.elc files simply have compiled `require's in them and shouldn't be reloading already loaded .elc files. I don't know anything about the cc-*.eln files. > When we process cc-require, we end up loading the required CC mode > file, even though it is already loaded. Yes, if it is processed while loading the source .el file. This is a facility designed for CC Mode hackers, in particular Martin S., whose working style apparently led to him switching source directories frequently. > > When loading uncompiled cc-*.el, cc-require does fancy things to make > > sure the cc-*.el is in the "correct" directory, but it shouldn't compile > > any of this into the *.elc. Maybe there's a bug, somewhere. > > The code in this area was written by Martin Stjernholm (my predecessor), > > who was evidently having trouble with "wrong" versions of the *.el files > > getting loaded. > > I've had a bit of a look at the thread for bug #46256, but I can't really > > follow it, at least not without a lot of effort. Might it be that the > > ..eln compiler is doing things on the .el file? I'm not at all familiar > > with how the native compilation works, I'm afraid. > Maybe. Andrea, could you take a look at what happens with cc-require > in the native-comp branch? -- Alan Mackenzie (Nuremberg, Germany). From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 10 12:43:35 2021 Received: (at 46256) by debbugs.gnu.org; 10 Mar 2021 17:43:35 +0000 Received: from localhost ([127.0.0.1]:51793 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lK2rv-0003X1-F9 for submit@debbugs.gnu.org; Wed, 10 Mar 2021 12:43:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55584) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lK2rt-0003Wo-AJ for 46256@debbugs.gnu.org; Wed, 10 Mar 2021 12:43:33 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39000) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lK2rm-00007h-7N; Wed, 10 Mar 2021 12:43:27 -0500 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2885 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lK2rk-0001Dn-LS; Wed, 10 Mar 2021 12:43:25 -0500 Date: Wed, 10 Mar 2021 19:43:20 +0200 Message-Id: <83k0qeoqfb.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie In-Reply-To: (message from Alan Mackenzie on Wed, 10 Mar 2021 16:56:14 +0000) Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree References: <83eegpspjk.fsf@gnu.org> <83r1kpr03h.fsf@gnu.org> <83mtvdqt53.fsf@gnu.org> <83blbsqyea.fsf@gnu.org> <8335x4qofy.fsf@gnu.org> <83y2evnltw.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 46256 Cc: 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, pipcet@gmail.com, akrl@sdf.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Date: Wed, 10 Mar 2021 16:56:14 +0000 > Cc: akrl@sdf.org, 46256@debbugs.gnu.org, andrewjmoreton@gmail.com, > pipcet@gmail.com > From: Alan Mackenzie > > > We are not talking about compilation, we are talking about loading > > cc-* files. > > The cc-*.el files? The cc-*.elc files simply have compiled `require's in > them and shouldn't be reloading already loaded .elc files. I don't know > anything about the cc-*.eln files. It's not realated to *.eln files, AFAIU. Emacs was byte-compiling cc-*.el files. As part of byte-compiling, we load these files, right? And when we load them, cc-require causes some CC mode files to be loaded more than once in the same session. Perhaps there was some trick there not to do that when we load the *.elc files instead, and perhaps the compiled code in the corresponding *.eln files misses that trick. > > When we process cc-require, we end up loading the required CC mode > > file, even though it is already loaded. > > Yes, if it is processed while loading the source .el file. This is a > facility designed for CC Mode hackers, in particular Martin S., whose > working style apparently led to him switching source directories > frequently. If this is the intended behavior, fine. I just was surprised by those multiple loads and didn't expect them. From unknown Fri Aug 15 20:29:17 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 08 Apr 2021 11:24:08 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator