Bug 1473680

Summary: glibc: Reduce IFUNC resolver usage in libpthread and librt [Fedora]
Product: [Fedora] Fedora Reporter: Jakob Hirsch <jh.redhat-2018>
Component: glibcAssignee: Carlos O'Donell <codonell>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 30CC: arjun.is, athmanem, codonell, dj, drjohnson1, fweimer, kdudka, kevin, law, mfabian, michel, pfrankli, praiskup, quantum.analyst, siddhesh, tcallawa, tmz
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: glibc-2.30-4.fc31 glibc-2.29-22.fc30 glibc-2.30.9000-6.fc32 glibc-2.28-39.fc29 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-09-21 05:45:56 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1748194, 1748197    

Description Jakob Hirsch 2017-07-21 12:20:20 UTC
Description of problem:

After the update to F26, a warning is shown at every cgit start, telling me

    /var/www/cgi-bin/cgit: Relink `/lib64/liblua-5.3.so' with `/lib64/libpthread.so.0' for IFUNC symbol `system'

Despite this, it seems to work just fine, but the warnings are cluttering up web server's error log, which is (at least) annoying.

Version-Release number of selected component (if applicable):

# rpm -qf /var/www/cgi-bin/cgit /lib64/liblua-5.3.so /lib64/libpthread.so.0
cgit-1.1-2.fc26.x86_64
lua-libs-5.3.4-3.fc26.x86_64
glibc-2.25-7.fc26.x86_64

How reproducible:

Always

Steps to Reproduce:
1. run cgit from command line

Actual results:

Above warning message

Expected results:

No warning message

Additional info:

Worked fine in F25.

Comment 1 Kevin Fenzi 2017-07-24 19:56:02 UTC
Huh. This seems like it might be a lua bug?

Moving there for comment.

Comment 2 Tom "spot" Callaway 2017-08-04 16:26:12 UTC
Florian, upstream lua remarked that they were surprised at the idea that their use of system would need -lpthread, and suggested that this might be a glibc regression introduced in 2.25.

Would you be willing to look at this and offer advice? I think there is only one call of system() in the lua code, in src/loslib.c.

Comment 3 Florian Weimer 2017-08-04 16:38:00 UTC
This is a known issue, but we have not seen this with the system function before:

  https://sourceware.org/bugzilla/show_bug.cgi?id=20673
  https://sourceware.org/bugzilla/show_bug.cgi?id=20998

With the current dynamic linker, the IFUNC resolver for system in libpthread is invalid.

Comment 4 Tom "spot" Callaway 2017-08-04 16:39:44 UTC
It seems like we should wait for it to be resolved in glibc rather than linking pthreads into lua. Do you agree?

Comment 5 Florian Weimer 2017-08-04 17:56:01 UTC
(In reply to Tom "spot" Callaway from comment #4)
> It seems like we should wait for it to be resolved in glibc rather than
> linking pthreads into lua. Do you agree?

Yes, this needs to be addressed in glibc, either by changing the definition of system in libpthread, or relaxing IFUNC resolver requirements.

Comment 6 Tom "spot" Callaway 2017-08-04 20:45:42 UTC
Okay. Reassigning to glibc.

Comment 7 Jakob Hirsch 2017-12-15 11:53:18 UTC
glibc doesn't seem to care?

FWIW, it's still there in F27 (with lua-libs-5.3.4-7.fc27.x86_64):

/var/www/cgi-bin/cgit: Relink `/lib64/liblua-5.3.so' with `/lib64/libpthread.so.0' for IFUNC symbol `system'

Comment 8 Florian Weimer 2017-12-15 11:56:17 UTC
(In reply to Jakob Hirsch from comment #7)
> glibc doesn't seem to care?

We care, but it's not easy to fix.

Comment 9 Ben Cotton 2018-11-27 17:47:29 UTC
This message is a reminder that Fedora 27 is nearing its end of life.
On 2018-Nov-30  Fedora will stop maintaining and issuing updates for
Fedora 27. It is Fedora's policy to close all bug reports from releases
that are no longer maintained. At that time this bug will be closed as
EOL if it remains open with a Fedora  'version' of '27'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 27 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 10 Ben Cotton 2019-02-19 17:12:19 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 30 development cycle.
Changing version to '30.

Comment 11 Kamil Dudka 2019-06-18 07:21:16 UTC
*** Bug 1720948 has been marked as a duplicate of this bug. ***

Comment 12 Kamil Dudka 2019-06-18 07:23:03 UTC
A similar problem has been reported about libmagic and IFUNC symbol `vfork' (diagnostic message printed while executing git-annex).  See bug #1720948 for details.

Comment 13 Florian Weimer 2019-09-03 06:58:31 UTC
glibc 2.30 in Fedora 31 fixes this.  We may want to backport the changes, to get wider testing coverage for downstream.

Comment 14 Fedora Update System 2019-09-05 07:53:00 UTC
FEDORA-2019-c58a5380ea has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2019-c58a5380ea

Comment 15 Fedora Update System 2019-09-05 09:20:19 UTC
FEDORA-2019-2e9a65b50a has been submitted as an update to Fedora 30. https://bodhi.fedoraproject.org/updates/FEDORA-2019-2e9a65b50a

Comment 16 Fedora Update System 2019-09-05 10:52:10 UTC
glibc-2.30-4.fc31 has been pushed to the Fedora 31 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-c58a5380ea

Comment 17 Fedora Update System 2019-09-05 12:53:28 UTC
glibc-2.29-22.fc30 has been pushed to the Fedora 30 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-2e9a65b50a

Comment 18 Fedora Update System 2019-09-06 09:44:17 UTC
FEDORA-2019-8532718f88 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2019-8532718f88

Comment 19 Fedora Update System 2019-09-06 12:34:01 UTC
glibc-2.29-22.fc30 has been pushed to the Fedora 30 stable repository. If problems still persist, please make note of it in this bug report.

Comment 20 Fedora Update System 2019-09-06 13:21:46 UTC
glibc-2.28-39.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-8532718f88

Comment 21 Fedora Update System 2019-09-15 00:25:55 UTC
glibc-2.30-4.fc31 has been pushed to the Fedora 31 stable repository. If problems still persist, please make note of it in this bug report.

Comment 22 Fedora Update System 2019-09-21 01:42:16 UTC
glibc-2.28-39.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.

Comment 23 Florian Weimer 2019-09-26 08:11:58 UTC
This upstream commit is also needed:

commit b2b3b7598ae51c714b5fd0d0406d435e66f3624b
Author: Adhemerval Zanella <adhemerval.zanella>
Date:   Wed Sep 25 22:10:00 2019 +0000

    Set the expects flags to clock_nanosleep

    It moves the missing CFLAGS from rt/Makefile to time/Makefile missing
    from 7b5af2d8f2a2b (Finish move of clock_* functions to libc. [BZ #24959]).

    Checked on powerpc64le-linux-gnu.

        * rt/Makefile (CFLAGS-clock_nanosleep.c): Move to ...
        * time/Makefile (CFLAGS-clock_nanosleep.c): ... here.