Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 465894 - app-emulation/wine-1.5.28 + gcc-4.8: build failures (undefined reference to memset in preloader.c) and runtime failures (heap corruption)
Summary: app-emulation/wine-1.5.28 + gcc-4.8: build failures (undefined reference to m...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Normal normal (vote)
Assignee: Wine Maintainers
URL:
Whiteboard:
Keywords: InVCS
Depends on:
Blocks: gcc-4.8
  Show dependency tree
 
Reported: 2013-04-14 13:34 UTC by eroen
Modified: 2013-12-23 13:10 UTC (History)
1 user (show)

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


Attachments
build.log for wine-1.5.28 with gcc-4.8.0 (build.log,986.88 KB, text/plain)
2013-04-14 13:35 UTC, eroen
Details

Note You need to log in before you can comment on or make changes to this bug.
Description eroen 2013-04-14 13:34:53 UTC
Attempting to build app-emulation/wine-1.5.28 with gcc-4.8.0 fails. The build log is attached.

Building succeeds with gcc-4.7.2 .

Reproducible: Always




$ emerge --info '=app-emulation/wine-1.5.28'
Portage 2.2.0_alpha173 (default/linux/amd64/13.0/desktop, gcc-4.8.0, glibc-2.17, 3.8.6-occam1+ x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.8.6-occam1+-x86_64-Intel-R-_Core-TM-_i5-2520M_CPU_@_2.50GHz-with-gentoo-2.2
KiB Mem:     8011620 total,   1850380 free
KiB Swap:   16777212 total,  15663488 free
Timestamp of tree: Sun, 14 Apr 2013 11:00:01 +0000
ld GNU ld (GNU Binutils) 2.23.1
ccache version 3.1.9 [disabled]
app-shells/bash:          4.2_p45
dev-java/java-config:     2.2.0-r1000::progress
dev-lang/python:          2.7.5_pre20130407::progress, 3.2.4-r1000::progress, 3.3.0-r1
dev-util/ccache:          3.1.9
dev-util/cmake:           2.8.10.2-r1
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.9.6-r3, 1.11.6, 1.12.6, 1.13.1
sys-devel/binutils:       2.23.1
sys-devel/gcc:            4.6.3, 4.7.2-r1, 4.8.0
sys-devel/gcc-config:     1.8
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.8 (virtual/os-headers)
sys-libs/glibc:           2.17
Repositories: gentoo gentoo-haskell progress java-overlay glc hasufell roslin eroen-overlay cross
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=corei7-avx -O3 -pipe -flto -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/easy-rsa /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/apache2-php5.4/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=corei7-avx -O3 -pipe -flto -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity"
DISTDIR="/var/distfiles"
EMERGE_DEFAULT_OPTS="--jobs=4 --autounmask --with-bdeps=y --quiet-build --nospinner"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs collision-protect config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch parallel-install preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="/var/distfiles-falcon http://mirrors.eu.kernel.org/gentoo/ http://mirrors.kernel.org/gentoo/ http://distfiles.gentoo.org "
LANG="en_GB.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j2"
PKGDIR="/var/packages"
PORTAGE_COMPRESS="xz"
PORTAGE_COMPRESS_FLAGS="-9"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="--exclude ChangeLog* --exclude /metadata/cache/ --stats --delay-updates"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/haskell /var/lib/layman/progress /var/lib/layman/java-overlay /var/lib/layman/glc /var/lib/layman/hasufell /var/lib/layman/roslin /usr/local/portage /usr/local/portage-cross-musl"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X a52 aac acl acpi alsa amd64 apng audio audiofile avresample avx bash-completion bdf berkdb bluray bzip2 cairo caps cb cdda cdparanoia cdr cjk cli corefonts cracklib crypt cups curl cxx ddate declarative detex device-mapper dga dia djvu dmapi dri dts dvd dvdr dvi2tty dvipdfm ebook egl emboss encode exif fam ffmpeg fftw firefox fits flac fontconfig fortran g3dvl gallium gbm gcrypt gdbm gif gimp git glib glibc-omitfp gmp gnuplot gnutls gold gpm graphics graphviz gs gstreamer gtk gtk3 highlight hscolour iconv icu id3tag idn imagemagick imlib inotify iproute2 ipv6 jbig jpeg jpeg2k jpg json kde kde4 kpathsea latex lcms libffi libssh2 libv4l luatex lvm lvm2 lzma lzo mad man metric mikmod mkv mms mmx mng modules mp3 mp4 mpeg mpg123 mudflap multilib multimedia musepack ncurses netlink nptl nut ocr odbc offensive ogg opengl openmp openvg optimization optimized-qmake opus pam pango pch pcre pdf pgf phonon png postscript ppds private-headers pstricks pth publishers pulseaudio python3 qt3support qt4 raw readline samba sbsms scanner science sdl session smp sna sndfile speex spell sqlite sse sse2 sse3 sse4 sse4_1 sse4_2 ssh ssl ssse3 svg t1lib tcpd tesseract theora threads tiff tls truetype udev unicode usb v4l v4l2 vaapi video vorbis vpx webp wmf wxwidgets x264 xanim xattr xcb xcomposite xetex xfs xft xinerama xml xmlpatterns xorg xosd xpm xrandr xv xvid xvmc xz zlib zsh-completion" ABI_X86="32 64" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" 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" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CURL_SSL="gnutls" DRACUT_MODULES="btrfs caps cifs crypt crypt-gpg lvm nfs ssh-client syslog" ELIBC="glibc" 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 ubx" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="mouse keyboard evdev synaptics wacom" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en gb us en_US en_GB eng jbo no nb nn no_NO nb_NO nn_NO nor" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3 php5-4" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2 python3_3" QEMU_SOFTMMU_TARGETS="x86_64 i386" RUBY_TARGETS="ruby18" SANE_BACKENDS="plustek" USERLAND="GNU" VIDEO_CARDS="intel i915 i965" 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 3.2 3.3"
Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND

=================================================================
                        Package Settings
=================================================================

app-emulation/wine-1.5.28 was built with the following:
USE="X cups custom-cflags fontconfig gecko gstreamer jpeg lcms mono mp3 ncurses odbc openal opengl osmesa png prelink pulseaudio samba scanner ssl threads truetype v4l xcomposite xinerama xml -alsa -capi -gphoto2 -gsm -ldap -nls -opencl -oss -perl (-selinux) -test -udisks" ABI_X86="32 64 -x32"

$ emerge -pqv '=app-emulation/wine-1.5.28'
[ebuild   R   ] app-emulation/wine-1.5.28  USE="X cups custom-cflags fontconfig gecko gstreamer jpeg lcms mono mp3 ncurses odbc openal opengl osmesa png prelink pulseaudio samba scanner ssl threads truetype v4l xcomposite xinerama xml -alsa -capi -gphoto2 -gsm -ldap -nls -opencl -oss -perl (-selinux) {-test} -udisks" ABI_X86="32 64 (-x32)"
Comment 1 eroen 2013-04-14 13:35:43 UTC
Created attachment 345548 [details]
build.log for wine-1.5.28 with gcc-4.8.0
Comment 2 Vladimir Romanov (RETIRED) gentoo-dev 2013-04-14 16:43:35 UTC
This is an old bug, and it can be (temporarily) resolved by changing this line at loader/Makefile.in:

wine-preloader wine64-preloader: preloader.o Makefile.in
	$(CC) -o $@ -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 preloader.o $(LIBPORT) $(LDFLAGS)

One need to delete "-nodefaultlibs"
Comment 3 Vladimir Romanov (RETIRED) gentoo-dev 2013-04-14 16:50:02 UTC
Bug begins his way from LLVM-GCC4.5 at Debian (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637182). Then it was redirected to Wine Bugtracker (bugs.winehq.org/show_bug.cgi?id=28050), then - to LLVM (http://llvm.org/bugs/show_bug.cgi?id=11172). LLVM fixes it, but GCC has not.
Comment 4 Vladimir Romanov (RETIRED) gentoo-dev 2013-04-14 17:13:49 UTC
This error is from this gcc bug: https://bugs.gentoo.org/show_bug.cgi?id=461954

Steps:

1) Wine has no memset function in preloader.c at all! It has wld_memset, which is not calling any library functions
2) But. According to the bug above - GCC 4.8 is smart enough to determine, that this function is just memset!
3) So... it changes it to memset.
4) But... There is no memset included in preloader.c. Oops! Error!
Comment 5 Vladimir Romanov (RETIRED) gentoo-dev 2013-04-14 17:16:37 UTC
Oops. This GCC Bug - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53081
Comment 6 Alexandre Rostovtsev (RETIRED) gentoo-dev 2013-04-28 03:15:23 UTC
FYI, all of wine (not just the preloader) is broken due to gcc-4.8.0's memcpy "optimization": http://bugs.winehq.org/show_bug.cgi?id=33307
Comment 7 Richard Grenville 2013-04-29 01:41:28 UTC
Just a confirmation: I applied the upstream patch < http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=198321 > to sys-devel/gcc-4.8.0 and compiled wine with "-O2 -pipe -march=native", and seemingly the problem is gone. I tested with my old WINEPREFIX and a new one, with wine and wine64, with notepad and some other apps, with WINEDEBUG=heap and without, nothing visible wrong so far. (Except a few weird "err:module:DelayLoadFailureHook failed to delay load user32.dll.CreateDialogParamW" and "err:module:attach_process_dlls "gdi32.dll" failed to initialize, aborting", but I remember these errors show up with my wine built with gcc-4.7.2 as well and caused no visible issue as far as I could see.) The patch may be all too risky to get merged right now, but could be useful if you really don't want to leave two gcc versions on one system.
Comment 8 Ryan Hill (RETIRED) gentoo-dev 2013-04-29 02:59:24 UTC
It ain't risky if it's committed upstream.
Comment 9 Ryan Hill (RETIRED) gentoo-dev 2013-05-07 04:35:02 UTC
Fixed in 4.8.0 p1.3.