I recently upgraded libpng from 1.2.16 to 1.2.18. Now when I use the web browser links-2.1_pre26 in graphical mode (under X), it reports this error and closes as soon as certain pages load: Error when loading compiled-in font: png_do_rgb_to_gray found nongray pixel libpng error: png_do_rgb_to_gray found nongray pixel Aborted As far as I can tell, this happens on pages with images. I get the problem on google.com but not www.dattalo.com, which is text-only. I remerged links, but that didn't fix it. As soon as I downgraded to libpng-1.2.16 again, the problem disappeared. Reproducible: Always Steps to Reproduce: 1. links -g google.com Actual Results: links window opens while page loads, then disappears before page displays. The error message above is left on terminal window. Expected Results: loaded the web page, stayed open Portage 2.1.2.7 (default-linux/x86/2006.1/desktop, gcc-4.1.2, glibc-2.5-r3, 2.6.18-gentoo-r6 i686) ================================================================= System uname: 2.6.18-gentoo-r6 i686 Celeron (Mendocino) Gentoo Base System release 1.12.9 Timestamp of tree: Thu, 07 Jun 2007 17:59:01 +0000 distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] ccache version 2.4 [enabled] dev-lang/python: 2.3.5-r3, 2.4.4-r4 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.4-r7 sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.61 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10 sys-devel/binutils: 2.16.1-r3 sys-devel/gcc-config: 1.3.16 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.17-r2 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-march=i686 -O2" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/X11/xkb" CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/revdep-rebuild /etc/terminfo" CXXFLAGS="-march=i686 -O2" DISTDIR="/usr/portage/distfiles" FEATURES="ccache distcc distlocks metadata-transfer sandbox sfperms strict" GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo" LINGUAS="en" MAKEOPTS="-j3" 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 --filter=H_**/files/digest-*" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="X alsa bash-completion berkdb bitmap-fonts bzip2 cairo cdr cli cracklib crypt dbus dri dvd dvdr emboss encode fam fortran gdbm gif gpm gstreamer gtk hal iconv isdnlog jpeg ldap libg++ mad midi mp3 mpeg mudflap ncurses nls nptl nptlonly ogg opengl openmp pam pcre perl png ppds pppd python quicktime readline reflection sdl session spell spl ssl tcpd truetype truetype-fonts type1-fonts unicode win32codecs x86 xml xorg xv zlib" ALSA_CARDS="emu10k1" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" USERLAND="GNU" VIDEO_CARDS="mach64 vesa vga" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
The bug is reproducable. A quick workaround is to downgrade to libpng 1.2.16. A solution is to upgrade to libpng >=1.2.19beta19 More info: Links uses png images for the fonts. It converts them to grayscale using libpng's png_do_rgb_to_gray functionality. This can return a warning or an error, if the programmer wants it to. This is set by a function png_set_rgb_to_gray_fixed(png, error_action, r, g) where error_action=1 indicates to ignore all nongray pixels. In libpng 1.2.17beta2 they changed the evaluation of this error_action, causing it to always give an error, which causes links to abort, if it tries to display a character that was not encoded in a grayscale png-file. E.g. & #9660 ; is used on Google. Took me some time to find that out. The good news: This bug in libpng has already been found and removed in version 1.2.19beta19 [June 28, 2007]. We should mark everything in between to be buggy.
post the diff and i'll add it to 1.2.18-r1
Created attachment 124398 [details, diff] Patch fixing the GRAY_WARN handler Made from the diffs between libpng-1.2.18 and libpng-1.2.19beta19, but stripped to contain only the error handler for the GRAY_WARN and GRAY_ERR flags.
Alright, that's the patch. Worked fine for me here.
(In reply to comment #4) > Alright, that's the patch. Worked fine for me here. > I tested this patch, works fine.
thanks Steffen, 1.2.18-r1 now in the tree with that patch