[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1008174: marked as done (libc6: poll() spuriously returns EINTR)



Your message dated Sat, 16 Apr 2022 11:18:56 +0000
with message-id <E1nfgS8-0005GC-RV@fasolo.debian.org>
and subject line Bug#1008174: fixed in glibc 2.34-0experimental4
has caused the Debian Bug report #1008174,
regarding libc6: poll() spuriously returns EINTR
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1008174: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008174
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: libc6
Version: 2.34-0experimental3
Severity: important

Dear Maintainer,

In the example below, glibc 2.34 from experimental causes a spurious
EINTR error in the poll() call from the child thread. It seems that
thread cancellation causes the poll() to be spuriously interrupted,
even though the cancellation is explicitly disabled at that time.

As far as I understand, POSIX allows (or even requires) thread
cancellation to be essentially like a signal interruption, save for
ending the thread. But that is *only* from the moment that cancellation
is effected. Cancellation cannot be effected while it is disabled by
definition, so the behaviour from glibc seems wrong here.

This regression is known to break the test suite from the VLC package.
Rolling back to 2.33 from unstable solves the problem.

----8<----

#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <poll.h>
#include <pthread.h>

static void *thread(void *data)
{
        int canc;

        (void) data;
        pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &canc);

        if (poll(NULL, 0, 2000) < 0) {
                perror("Unexpected poll error");
                abort();
        }
        pthread_setcancelstate(canc, NULL);
        return NULL;
}

int main(void)
{
        pthread_t th;
        void *ret;
        struct timespec ts = { 0, 100*1000*1000 };

        if (pthread_create(&th, NULL, thread, NULL)) {
                perror("pthread_create");
                return 1;
        }


        clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);
        pthread_cancel(th);
        pthread_join(th, &ret);
        assert(ret == NULL);
        return 0;
}

---->8----

-- System Information:
Debian Release: bookworm/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, arm64

Kernel: Linux 5.16.0-5-amd64 (SMP w/12 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to fi_FI.UTF-8), LANGUAGE=fr:en_GB:fi
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libc6 depends on:
ii  libgcc-s1  12-20220319-1

Versions of packages libc6 recommends:
ii  libidn2-0  2.3.2-2

Versions of packages libc6 suggests:
ii  debconf [debconf-2.0]  1.5.79
pn  glibc-doc              <none>
ii  libc-l10n              2.34-0experimental3
ii  libnss-nis             3.1-4
ii  libnss-nisplus         1.3-4
ii  locales                2.33-7

-- debconf information:
* libraries/restart-without-asking: true
  glibc/kernel-too-old:
  glibc/restart-services:
  glibc/kernel-not-supported:
  glibc/restart-failed:
* glibc/upgrade: true
  glibc/disable-screensaver:

--- End Message ---
--- Begin Message ---
Source: glibc
Source-Version: 2.34-0experimental4
Done: Aurelien Jarno <aurel32@debian.org>

We believe that the bug you reported is fixed in the latest version of
glibc, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1008174@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Aurelien Jarno <aurel32@debian.org> (supplier of updated glibc package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Sat, 16 Apr 2022 13:10:56 +0200
Source: glibc
Architecture: source
Version: 2.34-0experimental4
Distribution: experimental
Urgency: medium
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Changed-By: Aurelien Jarno <aurel32@debian.org>
Closes: 1006692 1008174
Changes:
 glibc (2.34-0experimental4) experimental; urgency=medium
 .
   [ Aurelien Jarno ]
   * debian/patches/git-updates.diff: update from upstream stable branch:
     - Fixes spurious EINTR when thread cancellation is disabled.  Closes:
       #1008174.
     - debian/patches/any/local-revert-bz13979.diff: refresh.
 .
   [ Johannes Schauer Marin Rodrigues ]
   * debian/debhelper.in/libc.postinst: do not re-exec init if DPKG_ROOT is
     set.  Closes: #1006692.
Checksums-Sha1:
 b73691aec90b98d88c254e8a4fda81eb14adce9e 9683 glibc_2.34-0experimental4.dsc
 88b90828dd1fcbf896518bdd08b78860ec32cb2c 895432 glibc_2.34-0experimental4.debian.tar.xz
 fa5819e2454f0c27b79c88b7663c5502777bfc29 9462 glibc_2.34-0experimental4_source.buildinfo
Checksums-Sha256:
 75e500abab82ae3da23ed3a7a96fb6e4d4fc73a644a1bfb2baf2886aa0cee432 9683 glibc_2.34-0experimental4.dsc
 6c3388850a5bbf01ffc56347f876ce706f60b7b98fbf7c16db1ee45e5c4a0983 895432 glibc_2.34-0experimental4.debian.tar.xz
 197b193d0573cf4667c24d11459d673a51b45bceac2ece6840d2eeb942d487e4 9462 glibc_2.34-0experimental4_source.buildinfo
Files:
 a4de258baab6a3d856cb8bcead38b187 9683 libs required glibc_2.34-0experimental4.dsc
 d56abfaf2ff0bccb673ada497654551f 895432 libs required glibc_2.34-0experimental4.debian.tar.xz
 01b0c283bdbf713e4776032e54d721fe 9462 libs required glibc_2.34-0experimental4_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEUryGlb40+QrX1Ay4E4jA+JnoM2sFAmJapNYACgkQE4jA+Jno
M2u4dg//ZVQG/5XpFTJP6zX5cr5E4PwQKxGM7cZSfpBkHQkeWRZoem7fKbQQ8WmH
3N5CkYt6r9hlvP6Cdw4FJH/o1WnUjSM3GihorXVLSMsXWPHEQM1Ov00kwXHRPOj0
ewA8I/aSFvyG/i8Hh8+6uqST8thdcYtUXIM6yIskXpHSjW88d4gK8yaxKqvFSQXG
nOzhdRsRnLGILRMprtWacnwY2WV3M9O0vWZftccT485cjj+XPH2rGsEwGgC0j4wN
Hh9N1znxMtZuGm7dfpdIosXyqvb172gyC71LlbynICR2gAGtPTvvWvrjRDIUuEYr
rjBxcgNVhVPFxkW7giw0/GIYNkc9wAr0QwGSvhQYPLnoPPNOcfdM7oXX9Ali7KV2
2iSJJzf2JAEkGOiIcQqxau4yLj3K8ApmX8t0lSODcIDTxfZZsLXPKcv9JYqePU4U
NcJvykhUItQVO5oU6VqIHfI1nrVF4W/CU+hvatcMhYcmp5iYC6fHPeOyPhQmDTTf
nKbG2U38EqL1dmexXRc/Es2Yf9C0lPDdD0jGE4pTJxawpHyvi70KOzsSinzcZTc8
blL9ZAdjAGEE45j7k06xq6gHcFaIaOr+UQ83i8XbhmbU68Gk7KFuSpbjllvST02J
AtBF9+fRPkg06uTuWFmnaOerIHxWWYDt5TbTkqmbgmqVUbsP8XY=
=/V2+
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: