Pine compiles using the toolchain from the hardened-dev overlay on an amd64 system with pie enabled (gcc-4.4.2-r1 + binutils-2.20 + glibc-2.11), however it crashes on signal 11 shortly after startup, after/when it attempts to access ~/mail. The crash does not occur if you compile with x86_64-pc-linux-gnu-4.4.2-hardenednopie. Reproducible: Always Steps to Reproduce: 1. Use gcc-config to make sure x86_64-pc-linux-gnu-4.4.2 is the default compiler 2. emerge pine 3. pine Actual Results: The first time you run pine, you get the one-time greeting message, and then it crashes just as it is about to give the top level menu. On subsequent runs, the one-time greeting is skipped (as expected), and pine crashes again just as it is about to give you the top level menu. Expected Results: You should see the menu items. This problem was discovered with the hardened-dev overlay toolchain, but also occurs on stock hardened gentoo with gcc-4.3.4, binutils-2.18-r3, glibc-2.9_p20081201-r2 on amd64 arch. Same workaround, using hardenednopie fixes the problem.
amd64 system with hardened-dev overlay Portage 2.1.6.13 (hardened/linux/amd64/10.0/no-multilib, gcc-4.4.2, glibc-2.11-r0, 2.6.28-hardened-r9 x86_64) ================================================================= System uname: Linux-2.6.28-hardened-r9-x86_64-Intel-R-_Core-TM-2_Quad_CPU_Q8400_@_2.66GHz-with-gentoo-1.12.13 Timestamp of tree: Sun, 15 Nov 2009 08:00:01 +0000 app-shells/bash: 4.0_p28 dev-lang/python: 2.6.2-r1 sys-apps/baselayout: 1.12.13 sys-apps/sandbox: 1.6-r2 sys-devel/autoconf: 2.63-r1 sys-devel/automake: 1.10.2 sys-devel/binutils: 2.20 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.6a virtual/os-headers: 2.6.27-r2 ACCEPT_KEYWORDS="amd64" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d" CXXFLAGS="-O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch" GENTOO_MIRRORS="ftp://192.168.100.9/pub/gentoo" LDFLAGS="-Wl,-O1" LINGUAS="en" MAKEOPTS="-j5" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage/layman/hardened-development" SYNC="rsync://192.168.100.7/portage" USE="acl amd64 apache2 berkdb bzip2 cli cracklib crypt cups dri gdbm gpm hardened iconv ipv6 justify mbox mmx modules mudflap mysql ncurses nls nptl nptlonly openmp pam pcre perl pic png pppd python readline reflection session spl sse sse2 ssl sysfs tcpd tordns unicode urandom xml xorg zlib" 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" 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="actions alias asis auth_basic auth_digest authn_alias authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cern_meta charset_lite dav dav_fs dav_lock dbd deflate dir disk_cache dumpio env expires ext_filter file_cache filter headers ident imagemap include info log_config log_forensic logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http rewrite setenvif speling status unique_id userdir usertrack version vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga neomagic nv r128 radeon savage sis tdfx trident vesa vga via vmware voodoo" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
amd64 system with stock hardened gentoo Portage 2.1.6.13 (hardened/linux/amd64/10.0, gcc-4.3.4-hardenednopie, glibc-2.9_p20081201-r2, 2.6.28-hardened-r9 x86_64) ================================================================= System uname: Linux-2.6.28-hardened-r9-x86_64-Intel-R-_Core-TM-_i7_CPU_920_@_2.67GHz-with-gentoo-1.12.13 Timestamp of tree: Sat, 14 Nov 2009 08:00:01 +0000 app-shells/bash: 4.0_p28 dev-lang/python: 2.6.2-r1 sys-apps/baselayout: 1.12.13 sys-apps/sandbox: 1.6-r2 sys-devel/autoconf: 2.13, 2.63-r1 sys-devel/automake: 1.10.2 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.6a virtual/os-headers: 2.6.27-r2 ACCEPT_KEYWORDS="amd64" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d" CXXFLAGS="-O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch" GENTOO_MIRRORS="ftp://192.168.100.9/pub/gentoo" LDFLAGS="-Wl,-O1" MAKEOPTS="-j3" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" SYNC="rsync://192.168.100.7/portage" USE="acl amd64 berkdb bzip2 cli cracklib crypt cups dri gdbm gpm hardened iconv justify mmx modules mudflap multilib ncurses nls nptl nptlonly openmp pam pcre perl pic pppd python readline reflection session spl sse sse2 ssl sysfs tcpd urandom xorg zlib" 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" 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="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 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" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga neomagic nv r128 radeon savage sis tdfx trident vesa vga via vmware voodoo" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
Created attachment 210320 [details] Last part of strace pine This is the last few lines of strace. Notice the first two lines show that ~/mail was accessed. The problem occurs after this. kern.log report Nov 15 23:27:04 localhost kernel: grsec: From 192.168.3.7: signal 11 sent to /usr/bin/pine[pine:24380] uid/euid:1000/1000 gid/egid:1000/1000, parent /usr/bin/strace[strace:24379] uid/euid:1000/1000 gid/egid:1000/1000 I should also add that these systems use PaX/grsec hardened kernels.
(In reply to comment #0) > Pine compiles using the toolchain from the hardened-dev overlay on an amd64 > system with pie enabled (gcc-4.4.2-r1 + binutils-2.20 + glibc-2.11), however it > crashes on signal 11 shortly after startup, after/when it attempts to access > ~/mail. What would be useful is a backtrace of a session of Pine run under gdb. Having said this, there is another program, called "Alpine" which does exactly what Pine does. Would it make sense that you move to Alpine, or is there a reason why you still need to use Pine? Thanks
Unfortunately gdb can't handle PIE. See for example http://sourceware.org/ml/gdb/2009-08/msg00039.html If I try to do a backtrace, I get, on two subsequent runs, Program received signal SIGSEGV, Segmentation fault. 0x000007d109e41cb6 in ?? () [ListFldrs] (gdb) bt #0 0x000007d109e41cb6 in ?? () #1 0x0000000000000000 in ?? () Program received signal SIGSEGV, Segmentation fault. 0x0000057997810cb6 in ?? () [ListFldrs] (gdb) bt #0 0x0000057997810cb6 in ?? () #1 0x0000000000000000 in ?? () The symbols have *not* been stripped. Given that 1) the problem only happens when PIE is enabled, 2) debugging with PIE is difficult, 3) there is alpine which, despite the fact that it is masked, compiles and runs fine in the above environment, 4) not much activity seems to be happening upstream with pine, I think this is a bug we can just work around.
No longer interested in pursuing this one. Pine is dead upstream and succeeded by alpine according to http://www.washington.edu/pine/. I'm closing this one.