Bug 1702539

Summary: glibc: Fix hang in pldd
Product: Red Hat Enterprise Linux 8 Reporter: Florian Weimer <fweimer>
Component: glibcAssignee: Patsy Griffin <pfrankli>
Status: CLOSED ERRATA QA Contact: qe-baseos-tools-bugs
Severity: medium Docs Contact:
Priority: medium    
Version: 8.1CC: ashankar, codonell, dj, fweimer, mnewsome, pfrankli, skolosov
Target Milestone: rcKeywords: Patch
Target Release: 8.1   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: glibc-2.28-56.el8 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-11-05 21:29:05 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: 1361689    
Bug Blocks: 1684553    
Deadline: 2019-05-22   

Description Florian Weimer 2019-04-24 05:20:15 UTC
In order to have a working pldd, we need to backport this upstream commit:

commit 1a4c27355e146b6d8cc6487b998462c7fdd1048f
Author: Adhemerval Zanella <adhemerval.zanella>
Date:   Thu Apr 11 18:12:00 2019 -0300

    elf: Fix pldd (BZ#18035)
    
    Since 9182aa67994 (Fix vDSO l_name for GDB's, BZ#387) the initial link_map
    for executable itself and loader will have both l_name and l_libname->name
    holding the same value due:
    
     elf/dl-object.c
    
     95   new->l_name = *realname ? realname : (char *) newname->name + libname_len - 1;
    
    Since newname->name points to new->l_libname->name.
    
    This leads to pldd to an infinite call at:
    
     elf/pldd-xx.c

The test depends on <support/subprocess.h> from this commit:

commit 0e169691290a6d2187a4ff41495fc5678cbfdcdc
Author: Adhemerval Zanella <adhemerval.zanella>
Date:   Fri Apr 12 17:39:53 2019 -0300

    support: Add support_capture_subprogram
    
    Its API is similar to support_capture_subprocess, but rather creates a
    new process based on the input path and arguments.  Under the hoods it
    uses posix_spawn to create the new process.
    
    It also allows the use of other support_capture_* functions to check
    for expected results and free the resources.

Comment 4 Sergey Kolosov 2019-09-12 11:32:18 UTC
Verified, pldd doesn't hang in glibc-2.28-56.el8

Comment 6 errata-xmlrpc 2019-11-05 21:29:05 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2019:3513