Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 134843 - genkernel-3.3.11d and evms pthread_cancel problem with later glibc
Summary: genkernel-3.3.11d and evms pthread_cancel problem with later glibc
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Hosted Projects
Classification: Unclassified
Component: genkernel (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Genkernel Maintainers
URL:
Whiteboard:
Keywords: InVCS
: 131101 (view as bug list)
Depends on:
Blocks:
 
Reported: 2006-05-29 15:52 UTC by John Huttley
Modified: 2006-06-20 12:56 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Huttley 2006-05-29 15:52:25 UTC
Gentoo Base System version 1.12.0
Portage 2.1_rc3 (default-linux/x86/2006.0, gcc-4.1.1, glibc-2.4-r3, 2.6.16-gentoo-r8 i686)
=================================================================
System uname: 2.6.16-gentoo-r8 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz
ccache version 2.4 [enabled]
dev-lang/python:     2.3.4-r1, 2.4.3-r1
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.4-r1
dev-util/confcache:  [Not Present]
sys-apps/sandbox:    1.2.18.1
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r5
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O2 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /etc/mail/dspam /etc/postfix /etc/samba /etc/sasl2 /etc/squid /usr/lib/mozilla/defaults/pref /usr/share/X11/xkb /var/bind /var/run/dspam"
CONFIG_PROTECT_MASK="/etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/env.d"
CXXFLAGS="-march=pentium4 -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig ccache distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="x86 X acpi alsa apache2 cairo crypt cups dbus dri gif gmp gnome gpm gtk gtk2 hal jpeg mad mmx mp3 ogg opengl pam pcre png readline sasl sdl sse ssl tiff usb v4l vorbis xml xml2 xv xvid zlib elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux userland_GNU video_cards_sis"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, PORTAGE_RSYNC_EXTRA_OPTS

version: genkernel-3.3.11d

The issue is that somewhere along the line, glibc (nptl) needs an additional library for threads to work. this is /lib/libgcc_s.so

As part of the evms support process (in /usr/share/genkernel/gen_initramfs.sh)
the script copies the librarys it needs. However it doesn't copy that one.
During boot, we get a message about pthread_cancel not working because libgcc_s.so is not found.
Consquently evms_activate does not work.

Solution: dead easy. when copying all the other librarys, copy /lib/libgcc* also, if it exists, don't error if its not there.

PS, I'm currently using GCC4.1.1. however, the problem has nothing to do with that and exists with 3.4.5
Comment 1 Thomas Raschbacher gentoo-dev 2006-06-05 02:01:19 UTC
hi

same problem here.

just apply this patch to /usr/share/genkernel/gen_initramfs.sh (and to gen_initrd.sh as well)

--- gen_initramfs.sh_orig    2006-06-04 16:21:52.000000000 +0100
+++ gen_initramfs.sh   2006-06-04 15:51:52.000000000 +0100
@@ -255,7 +255,6 @@
                        print_info 1 '          EVMS2: Adding support...'
                        mkdir -p ${TEMP}/initramfs-evms2-temp/lib
                        cp -a /lib/ld-* "${TEMP}/initramfs-evms2-temp/lib" || gen_die 'Could not copy files for EVMS2!'
+                       cp -a /lib/libgcc_s* "${TEMP}/initramfs-evms2-temp/lib" || gen_die 'Could not copy files for EVMS2!'
                        cp -a /lib/libc-* /lib/libc.* "${TEMP}/initramfs-evms2-temp/lib" || gen_die 'Could not copy files for EVMS2!'
                        cp -a /lib/libdl-* /lib/libdl.* "${TEMP}/initramfs-evms2-temp/lib" || gen_die 'Could not copy files for EVMS2!'
                        cp -a /lib/libpthread* "${TEMP}/initramfs-evms2-temp/lib" || gen_die 'Could not copy files for EVMS2!'
Comment 2 John Huttley 2006-06-08 21:56:00 UTC
(In reply to comment #0)

There is a problem with this line

cp -a /lib/libgcc_s* "${TEMP}/initramfs-evms2-temp/lib"
|| gen_die 'Could not copy files for EVMS2!'

in your proposed fix. The file does not exist in older glibc's. This would incorrectly cause a 'die'.

A safer, backward compatible line, would be..
cp -a /lib/libgcc_s* "${TEMP}/initramfs-evms2-temp/lib"

let it fail silently on older systems

--John

Comment 3 Chris Gianelloni (RETIRED) gentoo-dev 2006-06-09 06:23:00 UTC
Or even better would be to sanity check that the files exist before copying... which is what I did... ;]
Comment 4 Chris Gianelloni (RETIRED) gentoo-dev 2006-06-09 06:29:50 UTC
*** Bug 131101 has been marked as a duplicate of this bug. ***
Comment 5 Tim Yamin (RETIRED) gentoo-dev 2006-06-20 12:56:08 UTC
Fixed in 3.4.0_pre1, thanks.