Bug 436414 - Possible ABI break in libnss3.so: ATOB_AsciiToData lost 2 parameters
Possible ABI break in libnss3.so: ATOB_AsciiToData lost 2 parameters
Status: CLOSED NOTABUG
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: nss (Show other bugs)
5.2
All Linux
low Severity low
: rc
: ---
Assigned To: Kai Engert (:kaie) (on vacation)
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-03-06 19:23 EST by Dave Malcolm
Modified: 2008-03-07 01:24 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-03-07 01:24:51 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Dave Malcolm 2008-03-06 19:23:52 EST
Description of problem:
comparing from nss-3.11.7-1.3.el5 to 3.11.99.3-1.el5

It appears that ATOB_AsciiToData has lost parameters, going from 4 input params
in RHEL-5.1 version to 2 input params in RHEL-5.2 candidate

Looking at built binary data:

Old implementation has this debug data on i386 (eu-readelf -w libnss3.so.debug):
 [ 692e6]    subprogram
             sibling              [ 69341]
             external             
             name                 "ATOB_AsciiToData"
             decl_file            1
             decl_line            817
             prototyped           
             type                 [ 689f3]
             low_pc               0x0004da90
             high_pc              0x0004daf1
             frame_base           location list [ 3d0ba]
 [ 69304]      formal_parameter
               name                 "string"
               decl_file            1
               decl_line            816
               type                 [ 68942]
               location             location list [ 3d0e6]
 [ 69314]      formal_parameter
               name                 "lenp"
               decl_file            1
               decl_line            816
               type                 [ 689f9]
               location             2 byte block
                [   0] fbreg 4
 [ 69323]      variable
               name                 "binary_item"
               decl_file            1
               decl_line            818
               type                 [ 68a61]
               location             2 byte block
                [   0] fbreg -28
 [ 69332]      variable
               name                 "dummy"
               decl_file            1
               decl_line            818
               type                 [ 6928b]
               location             1 byte block
                [   0] reg1

New one has this:
 [  4d37]    subprogram
             sibling              [  4d74]
             external             
             name                 "ATOB_AsciiToData"
             decl_file            2
             decl_line            679
             prototyped           
             type                 [  3661]
             low_pc               0x00013a50
             high_pc              0x00013a7a
             frame_base           location list [  14c1]
 [  4d55]      formal_parameter
               name                 "string"
               decl_file            2
               decl_line            678
               type                 [  34fa]
               location             2 byte block
                [   0] fbreg 0
 [  4d64]      formal_parameter
               name                 "lenp"
               decl_file            2
               decl_line            678
               type                 [  36fa]
               location             2 byte block
                [   0] fbreg 4

Caveat: I may be misunderstanding the effect of symbol versioning here, though I
can only see one version of the symbol in each of the old and new implementation.

libnss3.so is used by numerous packages in the distro; am working on trying to
determine the extent of binary usage of this

As one datapoint, 
/usr/lib/firefox-1.5.0.12/components/libpipnss.so within
firefox-1.5.0.12-3.el5.i386 does have UNDEF symbol "ATOB_AsciiToData@NSS_3.2"
and so appears to consume this ABI
Comment 1 Dave Malcolm 2008-03-06 19:33:18 EST
Here's a list of i386 Client packages that depend on nss; haven't yet broken
down analysis by symbol usage:

Package pam_pkcs11-0.5.3-23.i386.rpm requires libnss3.so
Package libpurple-2.3.1-1.el5.i386.rpm requires libnss3.so
Package svrcore-4.0.4-3.el5.i386.rpm requires libnss3.so
Package evolution-2.12.3-6.el5.i386.rpm requires libnss3.so
Package coolkey-1.1.0-6.el5.i386.rpm requires libnss3.so
Package xmlsec1-nss-1.2.9-8.1.i386.rpm requires libnss3.so
Package evolution-data-server-1.12.3-5.el5.i386.rpm requires libnss3.so
Package xulrunner-1.9-0.beta3.2.el5.i386.rpm requires libnss3.so
Package cman-2.0.80-1.el5.i386.rpm requires libnss3.so
Package openoffice.org-core-2.3.0-6.2.el5.i386.rpm requires libnss3.so
Package mozldap-tools-6.0.5-1.el5.i386.rpm requires libnss3.so
Package svrcore-4.0.4-3.el5.i386.rpm requires libnss3.so
Package evolution-2.12.3-6.el5.i386.rpm requires libnss3.so
Package coolkey-1.1.0-6.el5.i386.rpm requires libnss3.so
Package gdm-2.16.0-40.el5.i386.rpm requires libnss3.so
Package libpurple-2.3.1-1.el5.i386.rpm requires libnss3.so
Package xulrunner-1.9-0.beta3.2.el5.i386.rpm requires libnss3.so
Package mod_nss-1.0.3-4.el5.i386.rpm requires libnss3.so
Package perl-Mozilla-LDAP-1.5.2-4.el5.i386.rpm requires libnss3.so
Package openssh-clients-4.3p2-26.el5.i386.rpm requires libnss3.so
Package thunderbird-2.0.0.12-1.el5.i386.rpm requires libnss3.so
Package xmlsec1-nss-1.2.9-8.1.i386.rpm requires libnss3.so
Package gnome-screensaver-2.16.1-6.el5.i386.rpm requires libnss3.so
Package pam_pkcs11-0.5.3-23.i386.rpm requires libnss3.so
Package mozldap-6.0.5-1.el5.i386.rpm requires libnss3.so
Package openssh-4.3p2-26.el5.i386.rpm requires libnss3.so
Package openssh-server-4.3p2-26.el5.i386.rpm requires libnss3.so
Package evolution-data-server-1.12.3-5.el5.i386.rpm requires libnss3.so
Package pkinit-nss-0.7.3-1.el5.i386.rpm requires libnss3.so
Comment 2 Dave Malcolm 2008-03-06 19:34:13 EST
Sorry, pasted wrong buffer; here's a deduped list:
Package cman-2.0.80-1.el5.i386.rpm requires libnss3.so
Package coolkey-1.1.0-6.el5.i386.rpm requires libnss3.so
Package evolution-2.12.3-6.el5.i386.rpm requires libnss3.so
Package evolution-data-server-1.12.3-5.el5.i386.rpm requires libnss3.so
Package gdm-2.16.0-40.el5.i386.rpm requires libnss3.so
Package gnome-screensaver-2.16.1-6.el5.i386.rpm requires libnss3.so
Package libpurple-2.3.1-1.el5.i386.rpm requires libnss3.so
Package mod_nss-1.0.3-4.el5.i386.rpm requires libnss3.so
Package mozldap-6.0.5-1.el5.i386.rpm requires libnss3.so
Package mozldap-tools-6.0.5-1.el5.i386.rpm requires libnss3.so
Package openoffice.org-core-2.3.0-6.2.el5.i386.rpm requires libnss3.so
Package openssh-4.3p2-26.el5.i386.rpm requires libnss3.so
Package openssh-clients-4.3p2-26.el5.i386.rpm requires libnss3.so
Package openssh-server-4.3p2-26.el5.i386.rpm requires libnss3.so
Package pam_pkcs11-0.5.3-23.i386.rpm requires libnss3.so
Package perl-Mozilla-LDAP-1.5.2-4.el5.i386.rpm requires libnss3.so
Package pkinit-nss-0.7.3-1.el5.i386.rpm requires libnss3.so
Package svrcore-4.0.4-3.el5.i386.rpm requires libnss3.so
Package thunderbird-2.0.0.12-1.el5.i386.rpm requires libnss3.so
Package xmlsec1-nss-1.2.9-8.1.i386.rpm requires libnss3.so
Package xulrunner-1.9-0.beta3.2.el5.i386.rpm requires libnss3.so
Comment 3 Kai Engert (:kaie) (on vacation) 2008-03-07 01:24:51 EST
Hi Dave, thanks for caring about possible ABI breaks.
I hope this is a false alert:

(In reply to comment #0)
> Old implementation has this debug data on i386 (eu-readelf -w libnss3.so.debug):
>  [ 69304]      formal_parameter
>                name                 "string"
>  [ 69314]      formal_parameter
>                name                 "lenp"
>  [ 69323]      variable
>                name                 "binary_item"
>  [ 69332]      variable
>                name                 "dummy"

The first two are parameters, number 3 and 4 are the first local variables in
the implementation of the function (not parameters).

I compared the function definition of NSS 3.11.5 with the most recent versions,
and the function signature looks unchanged to me (always uses 2 parameters).

Note You need to log in before you can comment on or make changes to this bug.