Summary: | groff-1.19.1-r2 fails to compile on UCLIBC emerge -e system | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Jory A. Pratt <geekypenguin> |
Component: | [OLD] Core system | Assignee: | Embedded Gentoo Team <embedded> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | bugs.gentoo.org, mail, remybosch, yvasilev |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
libperl-ebuild.diff
uClibc-0.9.28-_dl_fini-correct-order.patch uClibc-0.9.28-_dl_fini-correct-order.patch uClibc-0.9.27-_dl_fini-correct-order.patch uClibc-0.9.27-_dl_fini-correct-order.patch 40_all_uClibc-0.9.27-_dl_fini-correct-order.patch |
Description
Jory A. Pratt
2005-07-07 00:03:15 UTC
Signal 11 -> segv does it fail everytime at the same spot ? yeah it fails same spot no matter what version I tell it to use. after a onshot and nodeps on libperl a Signal 6 arrises. I will leave this up to embedded herd to close at their discreation! a stable build then converted to ~arch works fine no segv, as I reported earlier a ~arch stage1 setup however fails with groff. Hopefully you all can figure it all out. having the same problem: =====[ begin ]===== make[2]: Entering directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/pic2graph' rm -f pic2graph; \ sed -e "s|@g@||g" \ -e "s|@VERSION@|1.19.1|" \ -e 1s/a/a/ ./pic2graph.sh >pic2graph; \ chmod +x pic2graph Making pic2graph.n from pic2graph.man make[2]: Leaving directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/pic2graph' make[2]: Entering directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/eqn2graph' rm -f eqn2graph; \ sed -e "s|@g@||g" \ -e "s|@VERSION@|1.19.1|" \ -e 1s/a/a/ ./eqn2graph.sh >eqn2graph; \ chmod +x eqn2graph Making eqn2graph.n from eqn2graph.man make[2]: Leaving directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/eqn2graph' make[2]: Entering directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/grap2graph' rm -f grap2graph; \ sed -e "s|@g@||g" \ -e "s|@VERSION@|1.19.1|" \ -e 1s/a/a/ ./grap2graph.sh >grap2graph; \ chmod +x grap2graph Making grap2graph.n from grap2graph.man make[2]: Leaving directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/grap2graph' make[2]: Entering directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/groffer' rm -f groffer; \ sed -e "s|@BINDIR@|/usr/bin|g" \ -e "s|@VERSION@|1.19.1|g" \ -e 1s/a/a/ ./groffer.sh >groffer; \ chmod +x groffer Making groffer.n from groffer.man make[2]: Leaving directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/groffer' make[2]: Entering directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/mom' cp ./examples/penguin.ps . test -d examples || /bin/sh /var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/mkinstalldirs examples touch examples/stamp GROFF_COMMAND_PREFIX=''; export GROFF_COMMAND_PREFIX; GROFF_BIN_PATH=`echo /var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/src/roff/groff /var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/src/roff/troff /var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/src/devices/grops | sed -e 's| *|:|g'`; export GROFF_BIN_PATH; /var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/src/roff/groff/groff -F/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/font -F/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/font -M/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/tmac -M/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/tmac -M. -Tps -mom examples/letter.mom >examples/letter.ps =====[ end ]===== after that it just enters an infinit loop or something, cpu is permanent at 100% so i just killed it: =====[ begin ]==== /var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/src/roff/groff/groff: grops: Signal 15 make[2]: *** [examples/letter.ps] Error 2 make[2]: Leaving directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1/contrib/mom' make[1]: *** [contrib/mom] Error 2 make[1]: Leaving directory `/var/tmp/portage/groff-1.19.1-r2/work/groff-1.19.1' make: *** [all] Error 2 !!! ERROR: sys-apps/groff-1.19.1-r2 failed. !!! Function src_compile, Line 85, Exitcode 2 !!! (no error message) !!! If you need support, post the topmost build error, NOT this status message. =====[ end ]===== some infos: # ls /*.tar.bz2 /portage-20050707.tar.bz2 /stage1-x86-uclibc-2005.0.tar.bz2 # emerge --info Portage 2.0.51.22-r1 (uclibc/x86, gcc-3.4.4, uclibc-0.9.27-r0, 2.6.12-gentoo-r4 i686) ================================================================= System uname: 2.6.12-gentoo-r4 i686 Intel(R) Pentium(R) M processor 1.60GHz Gentoo Base System version 1.6.12 dev-lang/python: 2.3.4-r1 sys-apps/sandbox: 1.2.10 sys-devel/autoconf: [Not Present] sys-devel/automake: [Not Present] sys-devel/binutils: 2.16.1 sys-devel/libtool: [Not Present] virtual/os-headers: 2.6.11-r2 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CBUILD="i686-gentoo-linux-uclibc" CFLAGS="-march=pentium-m -Os -pipe -fomit-frame-pointer" CHOST="i686-gentoo-linux-uclibc" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/lib/X11/xkb /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-march=pentium-m -Os -pipe -fomit-frame-pointer" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig distlocks nodoc noinfo noman sandbox sfperms strict" GENTOO_MIRRORS="http://pandemonium.tiscali.de/pub/gentoo/" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" SYNC="rsync://rsync.de.gentoo.org/gentoo-portage" USE="x86 userland_GNU kernel_linux elibc_uclibc" Unset: ASFLAGS, CTARGET, LANG, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS, PORTDIR_OVERLAY # grep -v ^# /etc/make.conf | grep . USE="-* x86" CHOST="i686-gentoo-linux-uclibc" CFLAGS="-march=pentium-m -Os -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" ACCEPT_KEYWORDS="~x86" GENTOO_MIRRORS="http://pandemonium.tiscali.de/pub/gentoo/" SYNC="rsync://rsync.de.gentoo.org/gentoo-portage" ALSA_CARDS="intel8x0" # USE="bzip2 gpm ncurses readline pcre zlib" emerge -e system [...] some info from work dir on ldd groff itself : libstdc++.so.6 => /usr/lib/gcc/i686-pc-linux-uclibc/3.4.4/libstdc++.so.6 (0xb7f06000) libm.so.0 => /lib/libm.so.0 (0xb7ef7000) libgcc_s.so.1 => /usr/lib/gcc/i686-pc-linux-uclibc/3.4.4/libgcc_s.so.1 (0xb7ef0000) libc.so.0 => /lib/libc.so.0 (0xb7ea6000) ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0xb7f82000) I will be going threw code to see if I can come up with a patch for this issue to address the memory issue at hand here. I'm pretty sure groff has never worked with uclibc. Its apart of the reason that we have had it removed from system along with man which depends on this. We probably just need to fix libperl You should be able to work around this one temp by adding the following to your system /etc/portage/package.use: sys-devel/libperl nocxx Created attachment 63069 [details, diff]
libperl-ebuild.diff
or with the following patch and no references to nocxx.
I'm having another problem with groff 1.19.1-r2. During it's emerge I got millions of messages like this, one after another and it seams to be an endless loop: grops:<standard input> (<standard input>):1748: missing argument If I stop it's emerge with Ctrl-C I got: grops:<standard input>make[2]: *** Deleting file `pic.ps' Caught signal 2 in pid 10974 make[2]: *** [pic.ps] Error 130 make[1]: *** [doc] Interrupt make: *** [all] Interrupt /usr/portage/sys-apps/groff/groff-1.19.1-r2.ebuild: src_compile aborted; exiting. solar even with the patch same results are applied. Groff works fine with stable by the way. this is a GCC-3.4.4 issue I am almost sure about it. I will continue to look for a better way then removing the man pages and groff from uclibc setup. Ok well. We still never had perl depending on it for uclibc. Thats why nobody noticed it before. (You never needed it) ok, i can reproduce here in my uclibc chroot with gcc-3.4.4 I can reproduce this error with groff-1.19.1-r2 and 1.18.1-r4. I'm using gcc-3.3.5. I do not get this endless loop also mentioned. it either goes into a loop or segfaults either way, disabling sandbox seems to allow groff to complete I reproduced the problem in my usual uclibc/hardened stage3 builds. I use a stable profile... Avoiding groff by passing a nocxx flag to libperl works fine as a workaround... but we must still fix the profile somehow so that stage3 builds do not fail. rumor has it that if sandbox is disabled groff compiles fine. perhaps we are looking in the wrong place? Solar is for sure a sandbox violation. Spanky nailed it right on the money. And how about removing perl from the uclibc profiles completely ? It currently pulls in : app-admin/perl-cleaner-1.01 sys-apps/man-1.6-r1 sys-process/cronbase-0.3.2 dev-lang/perl-5.8.6-r5 sys-devel/libperl-5.8.6-r1 sys-apps/groff-1.19.1-r2 sys-apps/texinfo-4.8 If that's not an option, I am considering adding an uclibc/x86/hardened/gnap profile that would reduce the number of packages I need to build in stage3 just to remove them in livecd-stage2 (and also workaround this bug :). Any no's/dont's ? libperl patch commited to the tree for now. I also have this error on ppc. I can not get by it. I tried the following.. FEATURES="-sandbox" emerge groff USE="nocxx" emerge libperl My current repoz has the patches applied to libperl. Anything you need let me know I am dead in an emerge system :( Created attachment 67844 [details, diff]
uClibc-0.9.28-_dl_fini-correct-order.patch
If _DL_FINI_CRT_COMPAT is defined, the libraries's FINI is setup to run at exit
via atexit(), but this makes it run _before_ the fini (__app_fini()) of the
app, causing stuff like sandbox that frees structs, etc via its fini to
segfault. Same thing for 0.9.27, although things are slightly different.
This patch fixes it, but I consider it more a hack, and 0.9.28's new
__rtld_fini() stuff fixes it properly if _DL_FINI_CRT_COMPAT=n.
Created attachment 67846 [details, diff]
uClibc-0.9.28-_dl_fini-correct-order.patch
Might have made a mistake with the casting there, allthough it works fine:
This:
-----
- if (_dl_atexit)
- (*_dl_atexit) (_dl_fini);
+ if (__set__dl_fini)
+ (__set__dl_fini)(_dl_fini);
-----
instead of (note the added '*' before __set__dl_fini):
-----
- if (_dl_atexit)
- (*_dl_atexit) (_dl_fini);
+ if (__set__dl_fini)
+ (*__set__dl_fini)(_dl_fini);
-----
Created attachment 67847 [details, diff]
uClibc-0.9.27-_dl_fini-correct-order.patch
Untested patch for 0.9.27 .. note that I sorda ported _dl_fini() from 0.9.28
...
Created attachment 67850 [details, diff]
uClibc-0.9.27-_dl_fini-correct-order.patch
Bah, I should check my patches before I send them anywhere.
Comment on attachment 67846 [details, diff]
uClibc-0.9.28-_dl_fini-correct-order.patch
ive fixed this upstream and i dont plan on enabling DL_FINI_CRT_COMPAT in
uClibc-0.9.28 ebuild so this should be a non-issue
Comment on attachment 67850 [details, diff]
uClibc-0.9.27-_dl_fini-correct-order.patch
ok, i had to tweak nlist and init_fini_list variables, and remove the
'tpnt->init_flag |= FINI_FUNCS_CALLED;' line in the last hunk against ldso.c
once i did that, it seems to work now
Created attachment 69195 [details, diff]
40_all_uClibc-0.9.27-_dl_fini-correct-order.patch
i'm giving this one a spin now in a uclibc chroot (emerge system -e) ... but it
seems to work fine
many thanks az :)
I can confirm that groff (which is needed by QMail on my side, which does want do install manpages) fails as mentioned with sandbox enabled, and succeeds with FEATURES="-sandbox -usersandbox" emerge groff hardened-uclibc profile, gcc-3.4.4-r1, uclibc-0.9.27, groff-1.19.1-r2 *** Bug 108717 has been marked as a duplicate of this bug. *** (In reply to comment #30) > *** Bug 108717 has been marked as a duplicate of this bug. *** Bug 108717 is about compiling Xorg without groff. Might be usefull in the meantime, until the groff/uclibc issue is resolved... 0.9.27-r1 is in ~arch now as is 0.9.28 |