From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Subject: bug#32952: "make check-system" fails to report record-abi-mismatch-error Date: Mon, 08 Oct 2018 15:12:18 +0200 Message-ID: <87woqsziod.fsf@gnu.org> References: <875zyfv8y7.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57184) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g9VLP-0006pV-3W for bug-guix@gnu.org; Mon, 08 Oct 2018 09:13:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g9VLK-00041h-UZ for bug-guix@gnu.org; Mon, 08 Oct 2018 09:13:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:35731) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g9VLK-00041B-Mv for bug-guix@gnu.org; Mon, 08 Oct 2018 09:13:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1g9VLK-0006Wu-Ba for bug-guix@gnu.org; Mon, 08 Oct 2018 09:13:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <875zyfv8y7.fsf@gmail.com> (Chris Marusich's message of "Sat, 06 Oct 2018 00:19:12 -0700") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Chris Marusich Cc: 32952@debbugs.gnu.org Hi Chris, Chris Marusich skribis: > The procedure warn-about-load-error is defined in guix/ui.scm. It calls > display-error. That seems to be where the problem occurs. Based on the > debug output I added, we can see that in warn-about-load-error, the args > variable refers to the following list: > > (record-abi-mismatch-error #>) > > This is strange, since the only place that throws > record-abi-mismatch-error is in guix/records.scm... > > (define (abi-check type cookie) > "Return syntax that checks that the current \"application binary > interface\" (ABI) for TYPE is equal to COOKIE." > (with-syntax ((current-abi (current-abi-identifier type))) > #`(unless (eq? current-abi #,cookie) > ;; The source file where this exception is thrown must be > ;; recompiled. > (throw 'record-abi-mismatch-error 'abi-check > "~a: record ABI mismatch; recompilation needed" > (list #,type) '())))) > > > ...and based on that code, I expected the args variable to contain many > more elements. I expected it to look more like this: > > scheme@(guile-user)> (throw 'record-abi-mismatch-error 'abi-check > "~a: record ABI mismatch; recompilation needed" > (list 'some-type) '()) > Throw to key `record-abi-mismatch-error' with args `(abi-check "~a: recor= d ABI mismatch; recompilation needed" (some-type) ())'. > > Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. > scheme@(guile-user) [1]>=20 > > I don't understand what happened to all the other arguments. It looks > like the throw invocation in guix/records.scm was written carefully so > that it would throw exactly the arguments that display-error expects to > receive, but some of the arguments apparently went missing (e.g., the > "~a: record ABI mismatch; recompilation needed" message). I can't > figure out why those arguments are missing. Commit de5cbd4a38a33e0412f1c481fe8e01a871dc13e5 changed the arguments passed along =E2=80=98record-abi-mismatch-error=E2=80=99 exceptions precise= ly to fix the problem you report I believe. :-) What=E2=80=99s probably happening here is that you have a .go file built be= fore this commit, which is why it=E2=80=99s passing only on argument (the record type) along the =E2=80=98record-abi-mismatch-error=E2=80=99 exception. Does that make sense? Thanks, Ludo=E2=80=99.