Summary: | dev-lisp/sbcl-1.1.11 - src_compile(): WARNING! Some of the contrib modules did not build successfully or pass their self-tests. Failed contribs: sb-bsd-sockets | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Juergen Rose <rose> |
Component: | [OLD] Development | Assignee: | Panagiotis Christopoulos (RETIRED) <pchrist> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bugs, common-lisp, proxy-maint, schulz.benjamin |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: | build.log.bz2 |
Description
Juergen Rose
2013-09-30 08:38:26 UTC
Created attachment 359778 [details]
build.log.bz2
Now I have the issue on two machines. Is there not any patch. The test fail because connections to /dev/log fail, which probably means that you're not running a syslog daemon(systemd-journald perhaps?) (In reply to Stelian Ionescu from comment #3) > The test fail because connections to /dev/log fail, which probably means > that you're not running a syslog daemon(systemd-journald perhaps?) Thanks, this can be. I still migrate to systemd, which is not so easy, because I have first to merge / and /usr partitions all systems, which means several days of work. *** Bug 455268 has been marked as a duplicate of this bug. *** I don't have this problem on my ~amd64 computer; sbcl works fine and compiles maxima. However, I do have it on my ~x86 computer, for both sbcl-1.1.11 and 1.1.12. On both computers, I run syslog-ng. Is there any way to disable the problematic test? I suggest you try to debug this. Maybe the sandbox is blocking access to /dev/log. I had this problem on my stable amd64 system, too. On my ~amd system, it is not present. I want to remark, that on both systems, I ran syslog-ng. I also want to remark that this bug apparently affects several lisps. sbcl is just the only one which fails to compile because it has self-tests. the other lisps do not incorporate these self tests. The other lisbs compile fine, but in order to connect to maxima, the gui wsmaxima needs the sb-sockets module. With this bug, wxmaxima can not connect to maxima: https://bugs.gentoo.org/show_bug.cgi?id=454298 If one does not need wxmaxima, the advice would be to compile maxima with another lisp program than sbcl, since maxima itself compiles fine. It just can not communicate then with gui programs over a socket. The problem occured on my system after an emerge -uD world on my stable system. it seems that some library deep in the system, and not sbcl itself causes that bug. One more data point: on my ~x86 computer, I still have sbcl-1.1.7, and it works. Now I tried to re-emerge the same version 1.1.7, and it failed in testing sb-bsd-sockets. So, something in the system has changed between the moment I successfully emerged 1.1.7 (don't know the exact date, from the ChangeLog it must be around 1 May 2013) and the moment 1.1.10 failed (9 August 2013). SB-BSD-SOCKETS-TEST::SIMPLE-LOCAL-CLIENT tried to connect to /dev/log/ and gets #<SB-BSD-SOCKETS:CONNECTION-REFUSED-ERROR {B9DD091}>. This is not due to any changes in sbcl or in sb-bsd-sockets (which last changed in Jan 2003), but by some unrelated change in the system. Did the portage sandbox change ? I should add that i do not think this is a problem of the portage sandbox. Because other lisbs that do not make a self-test like sbcl can be installed. But then, you will get this error in gui programs like wxmaxima or cantor, that connect to maxima via the sb-sockets module : https://bugs.gentoo.org/show_bug.cgi?id=454298 sci-mathematics/wxmaxima-12.09.0 says: (wxmaxima:2446): WARNING **: IPP request failed with status 1280 The function bug_report() provides bug reporting information. (%i1) ; in: PROGN (SETUP-SERVER 0) ; (MAXIMA::SETUP-SERVER 0) ; ; caught STYLE-WARNING: ; undefined function: SETUP-SERVER ; ; compilation unit finished ; Undefined function: ; SETUP-SERVER ; caught 1 STYLE-WARNING condition Maxima encountered a Lisp error: The function MAXIMA::SETUP-SERVER is undefined. Automatically continuing. I can confirm this bug too. tsunami nnrd # emerge --info sbcl Portage 2.2.7 (default/linux/amd64/13.0, gcc-4.7.3, glibc-2.16.0, 3.10.25-calculate x86_64) ================================================================= System Settings ================================================================= System uname: Linux-3.10.25-calculate-x86_64-AMD_FX-tm-6300_Six-Core_Processor-with-gentoo-13.11.1 KiB Mem: 8135440 total, 5731748 free KiB Swap: 0 total, 0 free Timestamp of tree: Mon, 06 Jan 2014 16:30:01 +0000 ld GNU ld (GNU Binutils) 2.23.2 app-shells/bash: 4.2_p45 dev-java/java-config: 2.1.12-r1 dev-lang/python: 2.7.5-r3 dev-util/cmake: 2.8.11.2 dev-util/pkgconfig: 0.28 sys-apps/baselayout: 2.2 sys-apps/openrc: 0.12.4 sys-apps/sandbox: 2.6-r1 sys-devel/autoconf: 2.13, 2.69 sys-devel/automake: 1.11.6, 1.12.6, 1.13.4 sys-devel/binutils: 2.23.2 sys-devel/gcc: 4.7.3-r1 sys-devel/gcc-config: 1.7.3 sys-devel/libtool: 2.4.2 sys-devel/make: 3.82-r4 sys-kernel/linux-headers: 3.1 (virtual/os-headers) sys-libs/glibc: 2.16.0 Repositories: gentoo calculate lisp Installed sets: @custom ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="*" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-pipe -O2 -march=native -g0 -s -mfpmath=both -mprefer-avx128 -funroll-loops -fno-tree-pre -ftree-vectorize" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0 /usr/share/themes/oxygen-gtk/gtk-3.0" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-pipe -O2 -march=native -g0 -s -mfpmath=both -mprefer-avx128 -funroll-loops -fno-tree-pre -ftree-vectorize" DISTDIR="/var/calculate/remote/distfiles" EMERGE_DEFAULT_OPTS="--binpkg-respect-use=y --quiet-build=n --with-bdeps=y" FCFLAGS="-O2 -pipe" FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync metadata-transfer news parallel-fetch parallel-install preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch usersandbox usersync" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/" LANG="ru_RU.UTF-8" LDFLAGS="-Wl,--as-needed" MAKEOPTS="-j7" PKGDIR="/var/calculate/remote/packages/CLD/x86_64" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/calculate/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/var/lib/layman/calculate /var/lib/layman/lisp" USE="3dnow X X509 a52 aac acl acpi alsa amd64 amr archive audiofile avi avx bash-completion berkdb bittorrent blas bluetooth bzip2 cairo cdda cddb cdparanoia cdr chm clamav cli clisp consolekit cpudetection cracklib crossfade crypt css cue cups cxx dbus djvu dri dv dvd dvdr dvdread ebook enca encode exif faac faad fbcon ffmpeg fftw flac flash fma fontconfig foomaticdb fortran ftp fuse gd gdbm ggi gif gmp gnuplot gphoto2 gsl gtk iconv id3tag ieee1394 imagemagick ios ipod ipv6 irc jabber jingle jpeg jpeg2k kde ladspa lapack latex ldns libcaca libnotify libsamplerate libwww lirc log4j logrotate lzo mad matroska mbox mikmod mms mmx mmxext mng modplug modules mp3 mpeg mplayer mtp mudflap multilib musepack nas ncurses networkmanager nfs nls notifier nptl nsplugin octave ogg oggvorbis okteta openal opencore-amr openexr opengl openmp oscar pam pcre pdf png policykit portaudio ppp pulseaudio qt3support qt4 qthelp quicktime raw rdesktop readline real samba sbcl scanner sdl semantic-desktop session smp sndfile speex spell srt sse sse2 sse3 sse4.1 sse4.2 sse4_1 sse4a sse5 ssl ssse3 stereo svg tcpd tga theora threads tiff tray truetype udev udisks unicode usb userlocales v4l v4l2 vaapi vcd vdpau vhosts vorbis wavpack webkit wimax win32codecs wmf wxwidgets wxwindows x264 xanim xcomposite xetex xft xinerama xml xpm xv xvid xvmc yahoo zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="* ptp2" CDISTRO="CLD desktop" CL="builder client desktop console consolegui" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" DRACUT_MODULES="dmraid dmsquash-live gensplash lvm mdraid nfs" ELIBC="glibc" FOO2ZJS_DEVICES="*" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64 efi-32 pc" INPUT_DEVICES="keyboard mouse evdev mutouch synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en ru ru_RU" LIRC_DEVICES="devinput" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7" RUBY_TARGETS="ruby20" THEMES="CLD" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga nouveau nv r128 radeon savage sis tdfx trident vesa via vmware nouveau nvidia i915 i965 r100 r200 r300 r600 radeonhd dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" USE_PYTHON="2.7" Unset: CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, SYNC Actual problematic test in "sbcl-1.1.14/contrib/sb-bsd-sockets/tests.lisp" is ;;; See https://bugs.launchpad.net/sbcl/+bug/659857 ;;; Apparently getprotobyname_r on FreeBSD says -1 and EINTR ;;; for unknown protocols... #-(and freebsd sb-thread) (deftest get-protocol-by-name/error (handler-case (get-protocol-by-name "nonexistent-protocol") (unknown-protocol () t) (:no-error () nil)) t) As you can see it is already matched as problematic at FreeBSD with sb-threads. I've examined SBCL sources and find the problem in "sbcl-1.1.14/contrib/sb-bsd-sockets/inet.lisp" function get-protocol-by-name (with my comments): #+(and sb-thread os-provides-getprotoby-r) ;; Only when threads USE is set (let ((buffer-length 1024) (max-buffer 10000) (result-buf nil) (buffer nil) #-solaris (result nil)) (declare (type fixnum buffer-length) (type fixnum max-buffer)) (loop (unwind-protect (progn (setf result-buf (sb-alien:make-alien sockint::protoent) buffer (sb-alien:make-alien sb-alien:char buffer-length)) #-solaris (setf result (sb-alien:make-alien (* sockint::protoent))) (when (or (sb-alien:null-alien result-buf) (sb-alien:null-alien buffer) (sb-alien:null-alien result)) (error "Could not allocate foreign memory.")) (let ((res (sockint::getprotobyname-r name result-buf buffer buffer-length #-solaris result))) ;; call getprotobyname-r (cond ((eql res 0) ;; if it returns zero i.e. Ok. #-solaris (when (sb-alien::null-alien (sb-alien:deref result 0)) (error 'unknown-protocol :name name)) (return-from get-protocol-by-name (protoent-to-values result-buf))) ;; return protocol number (t ;; **** else if some errors (OUR CASE - test for bogus protocol name) **** (let ((errno (sb-unix::get-errno))) ;; get errno (cond ((eql errno sockint::erange) ;; if trouble with buffer length (incf buffer-length 1024) ;; try to enlarge it (when (> buffer-length max-buffer) (error "Exceeded max-buffer of ~d" max-buffer))) (t ;; ****#### all other errors (OUR CASE) ####**** (error "Unexpected errno ~d" errno)))))))) ;;; throu error as in bug report (when result-buf (sb-alien:free-alien result-buf)) (when buffer (sb-alien:free-alien buffer)) #-solaris (when result (sb-alien:free-alien result))))) Now, getprotobyname_r manual has a test example. I've compiled it with a slight change. Here is a result: tsunami ~ # ./proto tcp getprotobyname_r() returned: 0 (success) (0) (buflen=1024) p_name=tcp; p_proto=6; aliases=TCP tsunami ~ # ./proto bogus getprotobyname_r() returned: ENOENT (2) (buflen=1024) Call failed/record not found So, being called with bogus arg it returns 2 - situation is not accurately handled by bsd-socket contrib. I don't know what getprotobyname_r() returned in such case before, but it seems that some recent changes in glibc have broken SBCL code. May be other lisps are affected too. As a temporary measure it would be better to comment out this test like FreeBSD does. Well, I've just patch out that problematic test: tsunami ~ # cat sbcl-no-bogus-test.patch --- contrib/sb-bsd-sockets/tests.lisp 2013-11-30 20:28:17.000000000 +0600 +++ contrib/sb-bsd-sockets/tests2.lisp 2014-01-08 12:09:36.229707131 +0600 @@ -29,14 +29,14 @@ ;;; See https://bugs.launchpad.net/sbcl/+bug/659857 ;;; Apparently getprotobyname_r on FreeBSD says -1 and EINTR ;;; for unknown protocols... -#-(and freebsd sb-thread) -(deftest get-protocol-by-name/error - (handler-case (get-protocol-by-name "nonexistent-protocol") - (unknown-protocol () - t) - (:no-error () - nil)) - t) +;#-(and freebsd sb-thread) +;(deftest get-protocol-by-name/error +; (handler-case (get-protocol-by-name "nonexistent-protocol") +; (unknown-protocol () +; t) +; (:no-error () +; nil)) +; t) (deftest make-inet-socket ;; make a socket SCBL builds. wxMaxima builds and works fine. 11 Jan 2014; Andrey Grozin <grozin@gentoo.org> sbcl-1.1.14.ebuild, +files/bsd-sockets-test.patch, +files/concurrency-test.patch: Patching tests which fail on some systems: bug #486552, thanks to Danis S. <ssoqboss@gmail.com>; bug #468482, thanks to Eckard Brauer <ecki@intershop.de> and Juergen Rose <rose@rz.uni-potsdam.de> |