GNU bug report logs - #43521
ports.test "non-revealed port is closed" breaks other tests

Previous Next

Package: guile;

Reported by: Rob Browning <rlb <at> defaultvalue.org>

Date: Sat, 19 Sep 2020 19:27:01 UTC

Severity: normal

To reply to this bug, email your comments to 43521 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guile <at> gnu.org:
bug#43521; Package guile. (Sat, 19 Sep 2020 19:27:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Rob Browning <rlb <at> defaultvalue.org>:
New bug report received and forwarded. Copy sent to bug-guile <at> gnu.org. (Sat, 19 Sep 2020 19:27:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Rob Browning <rlb <at> defaultvalue.org>
To: bug-guile <at> gnu.org
Subject: ports.test "non-revealed port is closed" breaks other tests
Date: Sat, 19 Sep 2020 14:25:45 -0500
I think the "non-revealed port is closed" test can break other tests,
depending on the gc's behavior.  At the moment this is easy to reproduce
for some reason (presumably differing gc behavior) on the Debian s390x
machines.

I believe the problem is that if the gc doesn't collect the port when
the test calls (gc), then the test (which recognizes that possibility)
calls close-fdes on the underlying fd.  However, the port still exists,
and it may be garbage collected later, during a test that's using the
same fd, which may break that test.

I did add some low-level fprintf diagnostics which confirmed that exact
behavior.  i.e. one of the subsequent tests would call (gc), and I could
see that the old port object (identified by the %p pointer) from the
earlier "non-revealed port is closed" test, closed the fd which broke
the the current test when it attempted a seek on the fd that should
still be open.

For now, I've just commented out the test in the Debian packages, and
unless some other arrangements can be made, suspect we might want to do
the same thing in Guile itself.

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4




Information forwarded to bug-guile <at> gnu.org:
bug#43521; Package guile. (Sat, 19 Sep 2020 19:36:02 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Rob Browning <rlb <at> defaultvalue.org>
To: bug-guile <at> gnu.org
Subject: Re: ports.test "non-revealed port is closed" breaks other tests
Date: Sat, 19 Sep 2020 14:35:26 -0500
Rob Browning <rlb <at> defaultvalue.org> writes:

> I believe the problem is that if the gc doesn't collect the port when
> the test calls (gc), then the test (which recognizes that possibility)
> calls close-fdes on the underlying fd.  However, the port still exists,
> and it may be garbage collected later, during a test that's using the
> same fd, which may break that test.

...and I'd have to think about it more carefully, but if dropping
the close-fdes call would completely prevent any subsequent test from
re-using the fd unsafely before the lingering port is collected, then
perhaps that's one potential fix.

-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4




Information forwarded to bug-guile <at> gnu.org:
bug#43521; Package guile. (Sat, 19 Sep 2020 20:41:02 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Rob Browning <rlb <at> defaultvalue.org>
To: bug-guile <at> gnu.org
Subject: Re: ports.test "non-revealed port is closed" breaks other tests
Date: Sat, 19 Sep 2020 15:40:40 -0500
Rob Browning <rlb <at> defaultvalue.org> writes:

> ...and I'd have to think about it more carefully, but if dropping
> the close-fdes call would completely prevent any subsequent test from
> re-using the fd unsafely before the lingering port is collected, then
> perhaps that's one potential fix.

I ended up doing that for now:

  https://salsa.debian.org/rlb/deb-guile/-/commit/9fae58b134d8951e15b39b8e1751160a245228a6

-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4




Information forwarded to bug-guile <at> gnu.org:
bug#43521; Package guile. (Mon, 11 Jan 2021 15:15:02 GMT) Full text and rfc822 format available.

Message #14 received at 43521 <at> debbugs.gnu.org (full text, mbox):

From: Mathieu Othacehe <othacehe <at> gnu.org>
To: Rob Browning <rlb <at> defaultvalue.org>
Cc: 43521 <at> debbugs.gnu.org
Subject: Re: bug#43521: ports.test "non-revealed port is closed" breaks
 other tests
Date: Mon, 11 Jan 2021 16:14:39 +0100
Hello Rob,

> I ended up doing that for now:
>
>   https://salsa.debian.org/rlb/deb-guile/-/commit/9fae58b134d8951e15b39b8e1751160a245228a6

Nice catch! I had the exact same issue, reported here:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45788.

Except for a small typo: s/subseuquent/subsequent, your fix looks good
to me, and could by applied mainline I think.

Thanks,

Mathieu




Information forwarded to bug-guile <at> gnu.org:
bug#43521; Package guile. (Mon, 19 Jul 2021 11:06:02 GMT) Full text and rfc822 format available.

Message #17 received at 43521 <at> debbugs.gnu.org (full text, mbox):

From: Maxime Devos <maximedevos <at> telenet.be>
To: 45788 <at> debbugs.gnu.org, 43521 <at> debbugs.gnu.org, 48389 <at> debbugs.gnu.org
Subject: ‘non-revealed port is
 closed’ test case is already fixed
Date: Mon, 19 Jul 2021 13:05:21 +0200
[Message part 1 (text/plain, inline)]
Hi guilers and guix,

I (and some other people) encountered this bug:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=43521#11
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45788
https://issues.guix.gnu.org/48389#8

There is already a fix:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=43521#11

Apparently it is already applied on Debian:

https://salsa.debian.org/rlb/deb-guile/-/commit/9fae58b134d8951e15b39b8e1751160a245228a6
https://salsa.debian.org/rlb/deb-guile/-/blob/f24ab0150132d906b9724128576c36c39361cab7/debian/patches/0007-Fix-non-revealed-port-is-closed-ports.test.patch

Maybe it can be applied now on 'main'? 

Also, could it be added to the 'patches' in Guix?

Greetings,
Maxime.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guile <at> gnu.org:
bug#43521; Package guile. (Sun, 20 Mar 2022 21:55:02 GMT) Full text and rfc822 format available.

Message #20 received at 43521 <at> debbugs.gnu.org (full text, mbox):

From: Maxime Devos <maximedevos <at> telenet.be>
To: 43521 <at> debbugs.gnu.org
Subject: ports.test "non-revealed port is closed" breaks other tests
Date: Sun, 20 Mar 2022 22:54:46 +0100
[Message part 1 (text/plain, inline)]
Looks like it has been resolved now, see
the commit by Rob Browing:
<https://git.savannah.gnu.org/cgit/guile.git/commit/?id=6e82a4516ae597d8f1b64c2831bf14f1899f40ad>

Do we close the issue now, or only at the next release?

Thanks,
Maxime.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guile <at> gnu.org:
bug#43521; Package guile. (Mon, 04 Dec 2023 21:10:01 GMT) Full text and rfc822 format available.

Message #23 received at 43521 <at> debbugs.gnu.org (full text, mbox):

From: Maxime Devos <maximedevos <at> telenet.be>
To: 43521 <at> debbugs.gnu.org, Rob Browning <rlb <at> defaultvalue.org>
Subject: Re: ports.test "non-revealed port is closed" breaks other tests
Date: Mon, 4 Dec 2023 22:08:56 +0100
[Message part 1 (text/plain, inline)]
Quoting myself, as this message appears to have been ignored for 1 year 
and 258 days:

> Looks like it has been resolved now, see
> the commit by Rob Browing:
> <https://git.savannah.gnu.org/cgit/guile.git/commit/?id=6e82a4516ae597d8f1b64c2831bf14f1899f40ad>
> 
> Do we close the issue now, or only at the next release?
> 
> Thanks,
> Maxime.


[OpenPGP_0x49E3EE22191725EE.asc (application/pgp-keys, attachment)]
[OpenPGP_signature (application/pgp-signature, attachment)]

This bug report was last modified 140 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.