Bug 328486

Summary: there is some problem in the implementation bcopy function
Product: [openSUSE] openSUSE 10.3 Reporter: Pang Dawei <pangdae>
Component: DevelopmentAssignee: Ruediger Oertel <ro>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Critical    
Priority: P5 - None CC: andreas.pfaller, coolo, detlef, dmueller, fbi, matz, mls, pth, rguenther
Version: RC 1Keywords: NTS_Public
Target Milestone: ---   
Hardware: x86-64   
OS: openSUSE 10.3   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: backstrace of gamix (32bit)
strace of gamix

Description Pang Dawei 2007-09-26 11:45:04 UTC
When I compiled emacs 23.0.50.1, I got Segmentation fault when make the temacs, I used gdb to trace the temacs, the problem happend on the bcopy function.
I removed the '#define HAVE_BCOPY 1' on the compiling emacs, the emacs can compile successfully.
So I guess that there is some problem in the implementation bcopy function, then I write a programme to test that, I got incorrect result. The following is my test programme, please check the glibc or other something.Thank you!

#include <strings.h>

main()
{

    int count[10] = {16, 15, 2, 3, 4, 5, 6, 7, 8, 9};
    int ids[3] = {0, 1, 2};

    bcopy(count, ids, 2*sizeof(int));
    printf("%d\n",ids[0]);
    printf("%d\n",ids[1]);
}

the correct result should be 16, 15
but now is 0,1
Comment 1 Richard Biener 2007-09-27 12:12:31 UTC
glibc/glibc-2.3.3-amd64-string.diff

Index: sysdeps/x86_64/bcopy.S
===================================================================
--- /dev/null
+++ sysdeps/x86_64/bcopy.S
@@ -0,0 +1,13 @@
+# $Header: /K8_Projects/Glibc/amd64bcopy.S 2     2/10/04 11:48 Emenezes $
+
+# (c) 2002 Advanced Micro Devices, Inc.
+# YOUR USE OF THIS CODE IS SUBJECT TO THE TERMS
+# AND CONDITIONS OF THE GNU LESSER GENERAL PUBLIC
+# LICENSE FOUND IN THE "README" FILE THAT IS
+# INCLUDED WITH THIS FILE
+
+#define USE_AS_BCOPY
+#define memcpy bcopy
+
+#include <sysdeps/x86_64/memcpy.S>
+

but memcpy.S doesn't seem to care about USE_AS_BCOPY (and memcpy and bcopy
have src/dest arguments swapped).
Comment 2 Stephan Kulow 2007-09-27 12:20:32 UTC
Perhaps we should check this isn't also on older distributions a problem ;(
Comment 3 Dirk Mueller 2007-09-27 13:26:22 UTC
I don't think it is, the broken patch is only in 10.3. 

Comment 4 Dirk Mueller 2007-09-27 13:29:00 UTC
either this one:

+Tue Aug 21 22:31:54 CEST 2007 - pbaudis@suse.cz
+
+- Reintroduce errorneously omitted AMD64 optimizations
+  (and fix them to compile again)
+


or this one:

+-------------------------------------------------------------------
+Fri Jul 13 18:27:49 CEST 2007 - schwab@suse.de
+
+- Update to head of glibc-2.6 branch.


or this one:

+Fri Aug  3 15:46:35 CEST 2007 - pbaudis@suse.cz
+
+- Remove the dynamic linker support for direct bindings (-Bdirect);
+  according to Michael Meeks, the performance improvement is too small
+- Split timezone package to a separate physical package
+- Update glibc to version 2.6.1


broke it
Comment 5 Michael Matz 2007-09-27 13:53:11 UTC
The problem is, that the partial patch which got accepted upstream
didn't include the bcopy parts, hence the wrapper can't work anymore.

As bcopy is an obsolete function I think it's easiest to not include
a fast implementation of it at all.  It's also wrong to implement bcopy
in terms of memcpy, as bcopy allows overlapping buffers, unlike memcpy.
If at all it would have to use memmove.  I'll do this.
Comment 6 Michael Matz 2007-09-28 14:36:17 UTC
Fixed package submitted to STABLE and 10.3 (for online update).
Comment 7 Detlef Reichelt 2007-10-08 09:15:46 UTC
This update breaks 32bit-apps on x86_64. :(

After update, i couldn't start opera, seamonky (32bit) and moneyplex anymore. All apps die with "Segmentation fault".

Downgrade of glibc-* and all 32bit-apps works fine.
Comment 8 Michael Matz 2007-10-08 09:43:39 UTC
Please give here the output of 

% rpm -qa 'glibc*'
Comment 9 Michael Matz 2007-10-08 09:44:22 UTC
Once when programs crash, once when they work.
Comment 10 Detlef Reichelt 2007-10-08 10:08:57 UTC
It works with "dvd-glibc":

rpm -qa glibc*
glibc-locale-2.6.1-18
glibc-i18ndata-2.6.1-18
glibc-locale-32bit-2.6.1-18
glibc-html-2.6.1-18
glibc-profile-2.6.1-18
glibc-32bit-2.6.1-18
glibc-devel-32bit-2.6.1-18
glibc-obsolete-2.6.1-18
glibc-2.6.1-18
glibc-info-2.6.1-18
glibc-devel-2.6.1-18
glibc-profile-32bit-2.6.1-18

After update:

rpm -qa "glibc*"
glibc-info-2.6.1-18.2
glibc-obsolete-2.6.1-18.2
glibc-2.6.1-18.2
glibc-devel-32bit-2.6.1-18.2
glibc-html-2.6.1-18.2
glibc-locale-32bit-2.6.1-18.2
glibc-locale-2.6.1-18.2
glibc-i18ndata-2.6.1-18.2
glibc-profile-32bit-2.6.1-18.2
glibc-profile-2.6.1-18.2
glibc-32bit-2.6.1-18.2
glibc-devel-2.6.1-18.2

Crash :(

rpm -Uvh --force glibc-* in dvddir it works again

Comment 11 Michael Matz 2007-10-08 12:01:15 UTC
Try to get a backtrace from a crashing program then, please.  Perhaps
something easier than opera or moneyplex crash too?  The problem is, that
we can't reproduce this here.  At least on one x86_64 machine here opera (the
32bit app) runs just fine.  With that very glibc:

% rpm -qa 'glibc*'
glibc-locale-2.6.1-18.2
glibc-info-2.6.1-18.2
glibc-32bit-2.6.1-18.2
glibc-locale-32bit-2.6.1-18.2
glibc-i18ndata-2.6.1-18.2
glibc-2.6.1-18.2
glibc-devel-2.6.1-18.2
glibc-devel-32bit-2.6.1-18.2

% file /usr/lib/opera/9.23-20070809.6/opera
/usr/lib/opera/9.23-20070809.6/opera: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.1, dynamically linked (uses shared libs), stripped
% ldd /usr/lib/opera/9.23-20070809.6/opera
 linux-gate.so.1 =>  (0xffffe000)
 libqt-mt.so.3 => /usr/lib/libqt-mt.so.3 (0xf7872000)
 libX11.so.6 => /usr/lib/libX11.so.6 (0xf7757000)
 libXext.so.6 => /usr/lib/libXext.so.6 (0xf7748000)
 libSM.so.6 => /usr/lib/libSM.so.6 (0xf773f000)
 libICE.so.6 => /usr/lib/libICE.so.6 (0xf7726000)
 libpthread.so.0 => /lib/libpthread.so.0 (0xf7710000)
 libdl.so.2 => /lib/libdl.so.2 (0xf770b000)
 libm.so.6 => /lib/libm.so.6 (0xf76e6000)
 libz.so.1 => /lib/libz.so.1 (0xf76d3000)
 libc.so.6 => /lib/libc.so.6 (0xf75a0000)
 libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf74b4000)
 libpng12.so.0 => /usr/lib/libpng12.so.0 (0xf748f000)
 libXi.so.6 => /usr/lib/libXi.so.6 (0xf7485000)
 libXrender.so.1 => /usr/lib/libXrender.so.1 (0xf747c000)
 libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xf7475000)
 libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xf746b000)
 libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xf7467000)
 libXft.so.2 => /usr/lib/libXft.so.2 (0xf7454000)
 libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xf73e4000)
 libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xf73b8000)
 libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf73aa000)
 libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xf73a7000)
 libxcb.so.1 => /usr/lib/libxcb.so.1 (0xf738e000)
 libXau.so.6 => /usr/lib/libXau.so.6 (0xf7389000)
 /lib/ld-linux.so.2 (0xf7f92000)
 libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xf7383000)
 libexpat.so.1 => /lib/libexpat.so.1 (0xf7362000)
Comment 12 Michael Matz 2007-10-08 12:11:02 UTC
Oh, and another idea, please provide the output of 
% rpm -Va 'glibc*'

To rule out any breakage of the update as you see it.
Comment 13 Detlef Reichelt 2007-10-08 14:29:09 UTC
# rpm -Va 'glibc*'
.......T    /usr/lib64/gconv/gconv-modules.cache

hmmm

Comment 14 Detlef Reichelt 2007-10-08 14:29:47 UTC
Created attachment 176821 [details]
backstrace of gamix (32bit)
Comment 15 Detlef Reichelt 2007-10-08 14:30:44 UTC
Created attachment 176822 [details]
strace of gamix
Comment 16 Detlef Reichelt 2007-10-08 14:31:37 UTC
i've testet to little apps:

viki = works
gamix = crash, see attached files
Comment 17 Michael Matz 2007-10-08 15:10:51 UTC
Okay, we still can't reproduce, also not with gamix.  Please try to downgrade
only (!) glibc-32bit (maybe you need --force --nodeps).  The backtrace
is a mystery and actually just shows it breaking in the dynamic linker :-/
Comment 18 Detlef Reichelt 2007-10-08 21:23:35 UTC
done:

rpm -Uvh --force --nodeps glibc-32bit-2.6.1-18.x86_64.rpm

rpm -qa "glibc*"
glibc-devel-2.6.1-18.2
glibc-32bit-2.6.1-18
glibc-2.6.1-18.2
glibc-devel-32bit-2.6.1-18.2
glibc-locale-32bit-2.6.1-18.2
glibc-i18ndata-2.6.1-18.2
glibc-info-2.6.1-18.2
glibc-locale-2.6.1-18.2

and gamix, opera etc works again...

Now, i'll try a fresh install without other repos, only suse-dvd and update on another partition.

Comment 19 Detlef Reichelt 2007-10-08 22:30:47 UTC
ok, fresh install finished:

- install opera -> works
- add update repository
- YOU
- opera crash

:(

Comment 20 Detlef Reichelt 2007-10-08 22:35:41 UTC
test@detlef-pc:~> rpm -qa --last | head -n 40
amarok-xine-1.4.7-37.2                        Di 09 Okt 2007 00:26:54 CEST
amarok-1.4.7-37.2                             Di 09 Okt 2007 00:26:51 CEST
fvwm2-2.5.23-1.1                              Di 09 Okt 2007 00:26:48 CEST
amarok-yauap-1.4.7-37.2                       Di 09 Okt 2007 00:26:46 CEST
nscd-2.6.1-18.2                               Di 09 Okt 2007 00:26:45 CEST
cpio-2.9-17.2                                 Di 09 Okt 2007 00:26:45 CEST
ksh-93s-48.2                                  Di 09 Okt 2007 00:26:44 CEST
wvdial-1.56-22.2                              Di 09 Okt 2007 00:26:43 CEST
glibc-locale-32bit-2.6.1-18.2                 Di 09 Okt 2007 00:26:43 CEST
gtk2-32bit-2.12.0-5.2                         Di 09 Okt 2007 00:26:42 CEST
gtk2-2.12.0-5.2                               Di 09 Okt 2007 00:26:40 CEST
amarok-libvisual-1.4.7-37.2                   Di 09 Okt 2007 00:26:39 CEST
yauap-0.2.1-21.2                              Di 09 Okt 2007 00:26:37 CEST
glibc-locale-2.6.1-18.2                       Di 09 Okt 2007 00:26:33 CEST
release-notes-10.3.17-0.1                     Di 09 Okt 2007 00:26:30 CEST
glibc-2.6.1-18.2                              Di 09 Okt 2007 00:26:29 CEST
glibc-32bit-2.6.1-18.2                        Di 09 Okt 2007 00:26:27 CEST
glibc-i18ndata-2.6.1-18.2                     Di 09 Okt 2007 00:26:24 CEST
opera-9.23-15                                 Di 09 Okt 2007 00:04:01 CEST
yast2-repair-2.15.7-59                        Mo 08 Okt 2007 23:53:31 CEST
yast2-backup-2.15.4-50                        Mo 08 Okt 2007 23:53:31 CEST
yast2-add-on-2.15.17-4                        Mo 08 Okt 2007 23:53:30 CEST
autoyast2-2.15.17-17                          Mo 08 Okt 2007 23:53:29 CEST
yast2-storage-2.15.27-4                       Mo 08 Okt 2007 23:53:28 CEST
ufraw-gimp-0.12-32                            Mo 08 Okt 2007 23:53:28 CEST
yast2-online-update-frontend-2.15.23-9        Mo 08 Okt 2007 23:53:27 CEST
gimp-help-0.9-142                             Mo 08 Okt 2007 23:53:26 CEST
autoyast2-installation-2.15.17-17             Mo 08 Okt 2007 23:53:18 CEST
yast2-update-2.15.23-21                       Mo 08 Okt 2007 23:53:17 CEST
yast2-profile-manager-2.15.0-52               Mo 08 Okt 2007 23:53:16 CEST
gimp-2.2.17-40                                Mo 08 Okt 2007 23:53:15 CEST
compiz-0.5.4-27                               Mo 08 Okt 2007 23:53:11 CEST
yast2-sudo-2.15.3-86                          Mo 08 Okt 2007 23:53:10 CEST
yast2-samba-server-2.15.7-57                  Mo 08 Okt 2007 23:53:10 CEST
yast2-registration-2.15.3-15                  Mo 08 Okt 2007 23:53:09 CEST
yast2-online-update-2.15.23-9                 Mo 08 Okt 2007 23:53:09 CEST
yast2-metapackage-handler-0.7.1-9             Mo 08 Okt 2007 23:53:08 CEST
yast2-mail-2.15.23-2                          Mo 08 Okt 2007 23:53:08 CEST
yast2-iscsi-client-2.15.2-39                  Mo 08 Okt 2007 23:53:07 CEST
yast2-inetd-2.15.1-41                         Mo 08 Okt 2007 23:53:07 CEST

Comment 21 Petr Baudis 2007-10-10 10:11:51 UTC
*** Bug 332438 has been marked as a duplicate of this bug. ***
Comment 22 Detlef Reichelt 2007-10-11 19:25:52 UTC
Ok, one idea:

I use a "very old" amd64, one of the first on 775 sockel.

What did you use, Andreas?

If we find a bug in oldstyle amd64, we get a gift! ;)

Comment 23 Michael Matz 2007-10-11 19:39:46 UTC
Interesting.  We noticed that the 10.3 DVD contains glibc-32bit built
from the i686 tree, whereas the glibc-32bit on the update comes from the
i386 tree (!).  That means they do contain different code, although of course
all amd64 processors should work with i586 code just fine, the same like
with i686 code.  But never say never, so it would be very interesting to not
only get the backtrace of a segfault (which wasn't that usefull after all),
but also the output of the following gdb commands when the segfault occurs:

(gdb) p $pc
(gdb) disassemble $pc $pc+48

I've also uploaded a glibc-32bit.rpm which comes from the i686 tree, from
the same sources as the update.  Please try that.  It's also build -18.2,
so you can only detect the difference with rpm -qi (the Distribution: tag
includes "i686").

So, please try the one from
  ftp://ftp.suse.de/pub/people/matz/bug328486/glibc-32bit.rpm
Comment 24 Detlef Reichelt 2007-10-11 20:42:30 UTC
ok, wait for weekend, i install a fresh 10.3 on a new partition.
I'am very busy now....

Oder auf deutsch:
Ich habe im Moment zu viel auf der Liste.... :(
Werde aber am Wochenende nen paar Stunden frei machen, um das noch einmal mit einer frischen Installation durch zu spielen.
Comment 25 Andreas Pfaller 2007-10-11 21:52:00 UTC
(In reply to comment #22 from Detlef Reichelt)

Well, all my three 64bit systems which now have 10.3 installed show the
same problem

 - Intel(R) Core(TM)2 Duo CPU T7300  @ 2.00GHz, Laptop
 - AMD Athlon(tm) 64 X2 Dual Core Processor 3800+, Desktop, Socket 939
 - AMD Athlon(tm) 64 X2 Dual Core Processor 4600+, Desktop, Socket AM2?

so I doubt it is processor specific. The only things common are 
that all systems are dual cores and have 2GB of memory.



(In reply to comment #23 from Michael Matz)

The i686 version (from suse.com, suse.de does not have the file) works
(tested on the T7300 and 4600+). I would guess it is a compiler code
generation problem. Both my problematic 32bit binaries are started
from extensive wrapper scripts so I am not sure how to provide the
gdb output.


Comment 26 Detlef Reichelt 2007-10-12 11:04:56 UTC
(gdb) run
Starting program: /usr/bin/gamix
warning: Lowest section in system-supplied DSO at 0xffffe000 is .hash at ffffe0b4
[Thread debugging using libthread_db enabled]
[New Thread 0xf746da90 (LWP 25236)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xf746da90 (LWP 25236)]
0x00000006 in ?? ()
(gdb) p $pc
$1 = (void (*)()) 0x6
(gdb) disassemble $pc $pc+48
Dump of assembler code from 0x6 to 0x36:
0x00000006:     Cannot access memory at address 0x6
(gdb)  
Comment 27 Detlef Reichelt 2007-10-12 11:08:51 UTC
Your glibc-32bit.rpm works for me!

I find out, why the bug hits me (bwalle, thx for hint;) :

If i use my local mirror of the update-repo, the rpms are installed and i get this bug.

If i use an online update repo, YOU use the delta rpms, and all works fine.


Comment 28 Bernhard Walle 2007-10-12 12:15:27 UTC
(In reply to comment #27 from Detlef Reichelt)
> 
> (bwalle, thx for hint;) :

You mis-understood me. The RPM from Micha is built differently (i686 vs. i386) and that's why it works.
Comment 29 Michael Matz 2007-10-12 12:54:32 UTC
Re comment #26: Blaeh, right, that was already visible from the backtrace.
Someone is jumping to the wildly invalid address 0x00000006, but of course
we can't really determine where that came from :-(  Sigh.  We really need
a way for reproducing this internally I fear.
Comment 30 Detlef Reichelt 2007-10-12 14:34:29 UTC
(In reply to comment #28 from Bernhard Walle)
> (In reply to comment #27 from Detlef Reichelt)
> > 
> > (bwalle, thx for hint;) :
> 
> You mis-understood me. The RPM from Micha is built differently (i686 vs. i386)
> and that's why it works.
> 

Okt 11 21:22:02 <bwalle>	also damit kein patch-rpm genommen wird

Thats what i mean, if i use the patch-rpms, it works! ;)



Comment 31 Bernhard Walle 2007-10-12 14:59:52 UTC
(In reply to comment #30 from Detlef Reichelt)
> 
> Thats what i mean, if i use the patch-rpms, it works! ;)

Hm -- really? Here, it also works when I install the full RPM.
Comment 32 Michael Matz 2007-10-12 15:56:16 UTC
Okay, another data point.  Please give the output of this:

% md5sum /lib/libc-2.6.1.so /lib/ld-2.6.1.so

With the broken libs of course.
Comment 33 Andreas Pfaller 2007-10-12 17:59:20 UTC
From still broken system:
  75853b6c86ef1007f80e5b764b9ce50d  lib/libc-2.6.1.so
  c539d7186f4950c5841ddf96ab2d31c5  lib/ld-2.6.1.so
Comment 34 Michael Matz 2007-10-15 06:05:33 UTC
Okay, those are the correct ones, i.e. it's no misapplied delta-rpm or the
like.

Pfff, I don't know what to do, clearly the i586 libc somehow doesn't work
for you, but it's impossible to get nearer to the problem without reproducing
it.  Do you perhaps have other applications which also crash?  For now
we have opera, seamonkey, moneyplex and gamix.

Or would it be possible to get ssh access to a machine when the broken glibc
is installed (no root access required)?
Comment 35 Detlef Reichelt 2007-10-15 07:29:27 UTC
(In reply to comment #34 from Michael Matz)
> Or would it be possible to get ssh access to a machine when the broken glibc
> is installed (no root access required)?

wait some minutes, you will get mail... ;)
Comment 36 Detlef Reichelt 2007-10-15 07:38:29 UTC
mail for matz@suse.de
Comment 37 Andreas Pfaller 2007-10-15 08:10:14 UTC
I have just tried reverting a system to the broken state (it 
was broken initially, than fixed by installing the i686 glibc
version from comment #23 and than tried to brake it again by
installing the broken (i586) glibc with 
"rpm -Uv --force glibc-32bit-2.6.1-18.2.x86_64.rpm" 
but it still works.

Further checking by comparing the md5sums of a broken system (which
never had the 686 version installed) and the reverted
system revealed differences in the MD5SUMs!

ld-2.6.1.so: OK
libBrokenLocale-2.6.1.so: OK
libSegFault.so: FAILED
libanl-2.6.1.so: FAILED
libc-2.6.1.so: OK
libcidn-2.6.1.so: FAILED
libcrypt-2.6.1.so: FAILED
libdl-2.6.1.so: FAILED
libkeyutils-1.2.so: OK
libm-2.6.1.so: OK
libmemusage.so: FAILED
libnsl-2.6.1.so: OK
libnss_compat-2.6.1.so: FAILED
libnss_dns-2.6.1.so: FAILED
libnss_files-2.6.1.so: OK
libnss_hesiod-2.6.1.so: FAILED
libnss_nis-2.6.1.so: FAILED
libnss_nisplus-2.6.1.so: FAILED
libpcprofile.so: FAILED
libpthread-2.6.1.so: OK
libresolv-2.6.1.so: OK
librt-2.6.1.so: OK
libthread_db-1.0.so: FAILED
libutil-2.6.1.so: FAILED
md5sum: WARNING: 14 of 24 computed checksums did NOT match


At the moment I think that somehow the automatic update process seems
to install something different than a manual install with rpm.

"rpm -qi glibc-32bit" is identical on both systems. "rpm -Vv glibc-32bit"
also shows no problems on both systems, yet the MD5SUMs don't match.

I will provide the output of these commands in a moment.

Comment 38 Andreas Pfaller 2007-10-15 08:34:32 UTC
"bomba" is the reverted system, diavolo is still broken.
I just noticed that the signature date is different!
All my systems were updated from a local update repository which
I frequently rsync from gwdg.de. All my (originally 3) broken systems
were updated by either you or opensuseupdater-kde from this
local repository.


# diff -u bomba.rpm-qil.txt diavolo.rpm-qil.txt
--- bomba.rpm-qil.txt	2007-10-15 10:00:29.000000000 +0200
+++ diavolo.rpm-qil.txt	2007-10-15 10:12:21.000000000 +0200
@@ -1,10 +1,10 @@
 Name        : glibc-32bit                  Relocations: (not relocatable)
 Version     : 2.6.1                             Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany
 Release     : 18.2                          Build Date: Wed 03 Oct 2007 05:32:42 PM CEST
-Install Date: Mon 15 Oct 2007 08:57:43 AM CEST      Build Host: harvey.suse.de
+Install Date: Wed 10 Oct 2007 08:39:14 AM CEST      Build Host: harvey.suse.de
 Group       : System/Libraries              Source RPM: glibc-2.6.1-18.2.src.rpm
 Size        : 2340775                          License: BSD 3-Clause; GPL v2 or later; LGPL v2 or later
-Signature   : DSA/SHA1, Wed 03 Oct 2007 05:38:46 PM CEST, Key ID a84edae89c800aca
+Signature   : DSA/SHA1, Thu 04 Oct 2007 02:20:48 PM CEST, Key ID a84edae89c800aca
 Packager    : http://bugs.opensuse.org
 URL         : http://www.gnu.org/software/libc/libc.html
 Summary     : Standard Shared Libraries (from the GNU C Library)



bomba: md5sum /lib/*.so
c539d7186f4950c5841ddf96ab2d31c5  /lib/ld-2.6.1.so
9a1cad93620046f34f541656ae84f236  /lib/libBrokenLocale-2.6.1.so
73956b49bbc14d24322acc1ecdfba570  /lib/libSegFault.so
b769a065f2b095cc447a4166512a060d  /lib/libanl-2.6.1.so
75853b6c86ef1007f80e5b764b9ce50d  /lib/libc-2.6.1.so
c2a02baceac4ec1540fc8d60aa2aab70  /lib/libcidn-2.6.1.so
9975e462a514c928df69c30fcb669cb8  /lib/libcrypt-2.6.1.so
20b0c64894a355a68df930f08c330d14  /lib/libdl-2.6.1.so
52ddb0a9af02b89de9aca86ff0ed0f82  /lib/libkeyutils-1.2.so
03407c32b78921f1fd63a866ecfbf146  /lib/libm-2.6.1.so
8a91ce6b791044a1b92c9164e0dce220  /lib/libmemusage.so
40ff2dd9dec707881a48a562aeaff4e0  /lib/libnsl-2.6.1.so
0f5889fd923aa4164a09f37e8e01656c  /lib/libnss_compat-2.6.1.so
e12305b1756285e2452f8030f56e3db1  /lib/libnss_dns-2.6.1.so
2eb73c96bd6e33ac585612f6a2ae4a6a  /lib/libnss_files-2.6.1.so
72aabab44ccdfd9dbea7a131994f308d  /lib/libnss_hesiod-2.6.1.so
89e1f938d0406470093a4ab99d887e0c  /lib/libnss_nis-2.6.1.so
e1e0321f066b0be4a138b95fcd2afba0  /lib/libnss_nisplus-2.6.1.so
4b27f5a9137587786c39bff57206d802  /lib/libpcprofile.so
70d6ae91f6e7c2389b915ac6b819a4cd  /lib/libpthread-2.6.1.so
4f1aeb5870b28812c06375fc4eff031b  /lib/libresolv-2.6.1.so
6b5190ccfb905efdab0de8154d24d119  /lib/librt-2.6.1.so
027f837b7e447478d7dd3322b2086ba6  /lib/libthread_db-1.0.so
973b8fda49ee0cf8198a97d2c6ee3ff3  /lib/libutil-2.6.1.so



diavolo: md5sum /lib/*.so
c539d7186f4950c5841ddf96ab2d31c5  /lib/ld-2.6.1.so
9a1cad93620046f34f541656ae84f236  /lib/libBrokenLocale-2.6.1.so
4397cdccc1acc15e7cc337b6812a9004  /lib/libSegFault.so
b20556e5cbd1cf36c368b3f96e7c9844  /lib/libanl-2.6.1.so
75853b6c86ef1007f80e5b764b9ce50d  /lib/libc-2.6.1.so
b3cc2e0edef8623104ac5daeb16d24e1  /lib/libcidn-2.6.1.so
d3a57cf10e098ca745365ad4ab21e3ea  /lib/libcrypt-2.6.1.so
39404cdba21509be3eac1450b832449b  /lib/libdl-2.6.1.so
52ddb0a9af02b89de9aca86ff0ed0f82  /lib/libkeyutils-1.2.so
03407c32b78921f1fd63a866ecfbf146  /lib/libm-2.6.1.so
ed7c067af689c9bde157943a5b647693  /lib/libmemusage.so
40ff2dd9dec707881a48a562aeaff4e0  /lib/libnsl-2.6.1.so
431fbf7a4cd86551b1c1301708f172ab  /lib/libnss_compat-2.6.1.so
376b5c0ee6dddf154478547f39f69b22  /lib/libnss_dns-2.6.1.so
2eb73c96bd6e33ac585612f6a2ae4a6a  /lib/libnss_files-2.6.1.so
99b43a0435777bd804804906ed8fac9c  /lib/libnss_hesiod-2.6.1.so
735b64c1edea58adbb526c6b0324d36f  /lib/libnss_nis-2.6.1.so
a6f6813ef5f0a0a576cfd757ebded5d6  /lib/libnss_nisplus-2.6.1.so
5a647a1a7ca7d139098e812852aaa187  /lib/libpcprofile.so
70d6ae91f6e7c2389b915ac6b819a4cd  /lib/libpthread-2.6.1.so
4f1aeb5870b28812c06375fc4eff031b  /lib/libresolv-2.6.1.so
6b5190ccfb905efdab0de8154d24d119  /lib/librt-2.6.1.so
949f2f4b2be8d8eed648284d4fa3c123  /lib/libthread_db-1.0.so
2b527c799f2314b8f20a689f1d80196c  /lib/libutil-2.6.1.so

Comment 39 Michael Matz 2007-10-15 08:38:17 UTC
Yes, the update process is broken.  With the help of the ssh account I was
able to determine that on broken systems there is a mixture of the i686
glibc and the i586 glibc installed.  The cause is the .patch.rpm on the
update server.

One after the other:
1) GA installs the i686 glibc as glibc-32bit
2) Update has the i586 glibc as glibc-32bit.rpm

Both will work fine, when installed separately.  But:

3) Update tree also has a .patch.rpm, which updates the changed files
   for the update (which are not _all_ of them), in particular it will
   not change libdl-2.6.1.so.

Installing the patch rpm (neither the delta rpm nor the full rpm will exhibit
this problem) will now replace some files on the system, e.g. ld-2.6.1.so to
the update version (from the i586 tree).  It will leave some files unupdated,
as per the patch rpm.  For instance libdl-2.6.1.so.

So, now there's a mixture of an i686 libdl-2.6.1.so and a i586 ld-2.6.1.so
installed.  This is indeed not supported by glibc.  All these files dealing
with the runtime linker have to come out of the same build (they use
internal interfaces which change over build configurations).

Therefore this segfault.

There are two bugs in here:
1) actually generating the patch.rpm went somehow wrong.
   A correct patch.rpm (from i686-GA glibc-32bit to i586-Update
   glibc-32bit _should_ have contained all files).
2) That applying the patch.rpm didn't result in exactly the same files
   as installing the full rpm obviously isn't checked.  Hence some integrity
   checking is missing in actually applying patch rpms.

Not again, that this wouldn't have happened if the update process would have
either used the delta rpm, or the full rpm.  yast2 should have chosen
the delta rpm actually.  Have you used a different installer?

CCing also mls as the patch rpm definitely is completely wrong.
Comment 40 Michael Matz 2007-10-15 08:40:45 UTC
And what's even more worrying is, that rpm -V doesn't show this
discrepancy in the MD5 sums of these files.  So, as far as the user is
concerned he has installed a fully valid glibc-32bit package, which just
doesn't exist at all anywhere in the world, except in the imagination of
patch-rpm :-/
Comment 41 Andreas Pfaller 2007-10-15 09:19:46 UTC
(In reply to comment #39 from Michael Matz)
> Not again, that this wouldn't have happened if the update process would have
> either used the delta rpm, or the full rpm.  yast2 should have chosen
> the delta rpm actually.  Have you used a different installer?

I used either "you" or "opensuseupdater-kde" on all systems. I did some
experiments with "--exclude"-ing patch and delta rpms from my
rsync update of my local repository since they are redundant
but I am quite sure that I had a complete rsync when the problem
happened.

Comment 42 Michael Matz 2007-10-18 08:21:13 UTC
It seems I wasn't explicit enough, the wrong patch rpm still is on the update
server.  It needs to be removed (probably including the metadata referring
to it).  Hence assigning to Rudi.
Comment 43 Ruediger Oertel 2007-10-18 09:59:52 UTC
as a quick start I'm rerunning that patch with a fixed glibc-32bit
(now the i686 one again) thus removing the broken rpm/delta/patch,
which will fix things for people updating now.

However, we will need another update to fix the systems that are affected
already.

Anja: please can I get a new SWAMPID so we can really fix this ?
Comment 44 Anja Stock 2007-10-18 13:40:35 UTC
sure. SWAMPID is 14207
Comment 45 Michael Matz 2007-10-23 11:17:03 UTC
/mounts/mirror/SuSE/ftp.opensuse.org/srv/ftp/pub/opensuse/update/10.3/rpm/x86_64/glibc-32bit-2.6.1-18.2.x86_64.patch.rpm

still is the old one.  Someone should please remove it.
Comment 46 Philipp Thomas 2007-10-23 11:50:09 UTC
*** Bug 335912 has been marked as a duplicate of this bug. ***
Comment 47 Ruediger Oertel 2007-10-23 22:34:54 UTC
old patch (with rpms release-number 18.2) has been removed completely
new patch with rebuilt glibc rpms (release-number 18.3) has been checked
in and is in the queue for approval (id 528d3b710b55f4880b33cb600342e274)
Comment 48 Anja Stock 2007-10-24 15:33:33 UTC
released