Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 651720 - =app-shells/hstr-2.0 with =sys-libs/ncurses-6.1: hh: segmentation fault in termattrs_sp at .../work/ncurses-6.1/ncurses/tty/lib_vidattr.c:375
Summary: =app-shells/hstr-2.0 with =sys-libs/ncurses-6.1: hh: segmentation fault in te...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Patrice Clement
URL: https://github.com/vifm/vifm/commit/4...
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks: ncurses-6.1
  Show dependency tree
 
Reported: 2018-03-27 14:37 UTC by Vincent de Phily
Modified: 2019-05-07 21:27 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vincent de Phily 2018-03-27 14:37:21 UTC
The `hh` command consistently segfaults when started with ncurses 6.1. Tried recompiling both ncurses and hstr.

hstr works fine with ncurses 6.0


# emerge --info
Portage 2.3.24 (python 3.5.4-final-0, default/linux/amd64/17.0/hardened, gcc-6.4.0, glibc-2.25-r10, 4.15.12-gentoo x86_64)
=================================================================
System uname: Linux-4.15.12-gentoo-x86_64-Intel-R-_Core-TM-_i7-4800MQ_CPU_@_2.70GHz-with-gentoo-2.4.1
KiB Mem:     8126784 total,    583512 free
KiB Swap:    4095996 total,   4032524 free
Timestamp of repository gentoo: Tue, 27 Mar 2018 14:00:01 +0000
Head commit of repository gentoo: dfe0b3060c6b82f617fb5f818ed2e181dae7d2ed
sh bash 4.4_p12
ld GNU ld (Gentoo 2.29.1 p3) 2.29.1
app-shells/bash:          4.4_p12::gentoo
dev-java/java-config:     2.2.0-r4::gentoo
dev-lang/perl:            5.24.3::gentoo
dev-lang/python:          2.7.14-r1::gentoo, 3.5.4-r1::gentoo, 3.6.3-r1::gentoo
dev-util/cmake:           3.9.6::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.4.1-r2::gentoo
sys-apps/openrc:          0.34.11::gentoo
sys-apps/sandbox:         2.13::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69-r4::gentoo
sys-devel/automake:       1.15.1-r2::gentoo
sys-devel/binutils:       2.29.1-r1::gentoo
sys-devel/gcc:            6.4.0-r1::gentoo
sys-devel/gcc-config:     1.8-r1::gentoo
sys-devel/libtool:        2.4.6-r3::gentoo
sys-devel/make:           4.2.1::gentoo
sys-kernel/linux-headers: 4.15::gentoo (virtual/os-headers)
sys-libs/glibc:           2.25-r10::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-extra-opts: 
    sync-rsync-verify-metamanifest: no

moltonel
    location: /home/work/c/ebuilds
    masters: gentoo
    priority: 0

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA AdobeFlash-11.x google-chrome"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-Os -march=native -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /opt/zookeeper-bin/conf /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php7.1/ext-active/ /etc/php/cgi-php7.1/ext-active/ /etc/php/cli-php7.1/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-Os -march=native -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--quiet-build"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs clean-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch preserve-libs protect-owned sandbox sfperms strict strict-keepdir unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="                            http://ftp.heanet.ie/pub/gentoo/ ftp://ftp.free.fr/mirrors/ftp.gentoo.org/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS=""
MAKEOPTS="-s -j5 -l6"
PKGDIR="/usr/portage/packages"
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 --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X aac acl activities akonadi alsa amd64 apache2 apng avahi bash-completion brightness-control btrfs bzip2 cdda cddb crash-reporter crypt cups cxx dbus declarative dvd ebook egl elogind emacs encode epub erlang exif ffmpeg flac fontconfig go gstreamer gudev hardened iconv icu ipv6 jit jpeg jpeg2k json kde kdepim kwallet lto lzma marble mng mp3 mpeg mplayer mtp multilib mysql ncurses nls nptl ogg openexr opengl openmp openssl opus otr pam pcre pdf pgo pie plasma pm-utils png policykit postgres printsupport prison pulseaudio python qrcode qt5 readline rust samba scanner script sddm seccomp semantic-desktop shapefile silk spatialite speex sql sqlite ssl ssp startup-notification svg sysstat system-cairo system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-llvm system-sqlite taglib theora threads tiff truetype udisks unicode upnp usb v4l video vnc vorbis wayland webkit wifi x264 xattr xcb xcomposite xmp xtpax xvid 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" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="pc" INPUT_DEVICES="evdev keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6 php7-0" POSTGRES_TARGETS="postgres9_5 postgres10" PYTHON_SINGLE_TARGET="python3_5" PYTHON_TARGETS="python3_5" QEMU_USER_TARGETS="x86_64" RUBY_TARGETS="ruby22 ruby23" USERLAND="GNU" VIDEO_CARDS="intel 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"
Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2018-03-28 06:43:06 UTC
Could you run a gdb backtrace on `hh`?
Which terminal emulator did you use?
Comment 2 Vincent de Phily 2018-03-29 15:28:58 UTC
I've tried kde-apps/konsole-17.12.3, kde-misc/yakuake (uses the konsole component underneath, AFAIK), x11-terms/xterm-327, xfce4-terminal-0.8.6. and x11-terms/cool-retro-term-1.0.1. I've also tried different TERM={xterm,xterm-256colors,konsole} values. None of these seem to make a difference.

I've rebuilt ncurses and hstr with USE=debug to get the following (using x11-terms/xterm):


$ gdb $(which hh)
GNU gdb (Gentoo 8.0.1 p1) 8.0.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/hh...Reading symbols from /usr/lib64/debug//usr/bin/hstr.debug...done.
done.
(gdb) run 
Starting program: /usr/bin/hh 

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7437285 in termattrs_sp (sp=sp@entry=0x5555559e0290) at /var/tmp/portage/sys-libs/ncurses-6.1-r2/work/ncurses-6.1/ncurses/tty/lib_vidattr.c:375
375     /var/tmp/portage/sys-libs/ncurses-6.1-r2/work/ncurses-6.1/ncurses/tty/lib_vidattr.c: No such file or directory.
(gdb) bt full
#0  0x00007ffff7437285 in termattrs_sp (sp=sp@entry=0x5555559e0290) at /var/tmp/portage/sys-libs/ncurses-6.1-r2/work/ncurses-6.1/ncurses/tty/lib_vidattr.c:375
        attrs = 0
#1  0x00007ffff743454a in _nc_setupscreen_sp (spp=spp@entry=0x7fffffffd568, slines=<optimized out>, scolumns=<optimized out>, output=output@entry=0x7ffff7411580 <_IO_2_1_stdout_>, filtered=<optimized out>, slk_format=slk_format@entry=0)
    at /var/tmp/portage/sys-libs/ncurses-6.1-r2/work/ncurses-6.1/ncurses/base/lib_set_term.c:507
        null_TTY = {c_iflag = 0, c_oflag = 0, c_cflag = 0, c_lflag = 0, c_line = 0 '\000', c_cc = '\000' <repeats 31 times>, c_ispeed = 0, c_ospeed = 0}
        env = <optimized out>
        bottom_stolen = 0
        sp = 0x5555559e0290
#2  0x00007ffff742fcd2 in newterm_sp (sp=<optimized out>, name=name@entry=0x7fffffffe985 "xterm", ofp=ofp@entry=0x7ffff7411580 <_IO_2_1_stdout_>, ifp=ifp@entry=0x7ffff7410840 <_IO_2_1_stdin_>) at /var/tmp/portage/sys-libs/ncurses-6.1-r2/work/ncurses-6.1/ncurses/base/lib_newterm.c:222
        slk_format = 0
        filter_mode = <optimized out>
        errret = 1
        result = 0x0
        current = 0x0
        its_term = 0x0
        _ofp = 0x7ffff7411580 <_IO_2_1_stdout_>
        _ifp = 0x7ffff7410840 <_IO_2_1_stdin_>
        new_term = 0x0
#3  0x00007ffff742fff1 in newterm (name=name@entry=0x7fffffffe985 "xterm", ofp=0x7ffff7411580 <_IO_2_1_stdout_>, ifp=0x7ffff7410840 <_IO_2_1_stdin_>) at /var/tmp/portage/sys-libs/ncurses-6.1-r2/work/ncurses-6.1/ncurses/base/lib_newterm.c:355
        rc = <optimized out>
#4  0x00007ffff742c2ae in initscr () at /var/tmp/portage/sys-libs/ncurses-6.1-r2/work/ncurses-6.1/ncurses/base/lib_initscr.c:89
        name = 0x7fffffffe985 "xterm"
        result = <optimized out>
#5  0x00005555555566c5 in hstr_curses_start () at hstr_curses.c:26
No locals.
#6  0x000055555555ab44 in loop_to_select (hstr=0x555555761f10) at hstr.c:995
        done = <optimized out>
        skip = <optimized out>
        executeResult = <optimized out>
        lowercase = <optimized out>
        printDefaultLabel = <optimized out>
        fixCommand = <optimized out>
        editCommand = <optimized out>
        basex = <optimized out>
        x = <optimized out>
        c = 0
        cc = <optimized out>
        cursorX = <optimized out>
        cursorY = <optimized out>
        maxHistoryItems = <optimized out>
        deletedOccurences = <optimized out>
        width = <optimized out>
        selectionCursorPosition = <optimized out>
        previousSelectionCursorPosition = <optimized out>
        result = <optimized out>
        msg = <optimized out>
        delete = <optimized out>
        pattern = "\360\363\244UUU", '\000' <repeats 26 times>, " D\254UUU\000\000\220a\242UUU\000\000\000\000\000\000\000\000\000\000ж\247UUU\000\000\300\253\245UUU\000\000\000\000\000\000\000\000\000\000P{\244UUU\000\000\000\000\000\000\000\000\000\000P\240\247UUU", '\000' <repeats 34 times>, " ۨUUU\000\000\360\226\245UUU", '\000' <repeats 74 times>...
#7  0x000055555555b8a0 in hstr_main (hstr=0x555555761f10) at hstr.c:1397
No locals.
#8  0x000055555555600c in main (argc=1, argv=0x7fffffffda28) at hstr.c:1464
No locals.
(gdb)
Comment 3 Chema Alonso Josa (RETIRED) gentoo-dev 2018-04-08 14:10:40 UTC
vifm upstream bug filed probably related to this problem:

https://github.com/vifm/vifm/issues/325
Comment 4 Alex Bennee 2018-04-18 12:19:25 UTC
It seems this is related to tinfo. Rebuilding ncurses/hstr with -tinfo has stopped it crashing for me.
Comment 5 Vincent de Phily 2018-06-05 08:47:36 UTC
Still present with 1.25. The workaround of using ncurses-6.0 instead of ncurses-6.1 isn't available anymore.

On the other hand, `USE=-tinfo emerge ncurses;emerge @preserved-rebuild` works for me too.

The benefits of USE=tinfo are probably minimal, since most programs will need the two libs anyway ? So maybe USE=tinfo should be removed, or at least default to off ?
Comment 6 SpanKY gentoo-dev 2018-06-25 22:50:17 UTC
looks like upstream fixed it by forcing tinfow usage.  our hstr ebuild should do the same in hstr-1.23-tinfo.patch, and probably add a RDEPEND on ncurses[unicode] since that's the only way to get the wide versions of the library.
Comment 7 Larry the Git Cow gentoo-dev 2019-05-07 21:27:50 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c4007cf22d100c3fa2ce942480671d49b39cd80a

commit c4007cf22d100c3fa2ce942480671d49b39cd80a
Author:     Patrice Clement <monsieurp@gentoo.org>
AuthorDate: 2019-04-30 13:26:21 +0000
Commit:     Patrice Clement <monsieurp@gentoo.org>
CommitDate: 2019-05-07 21:27:06 +0000

    app-shells/hstr: force tinfow use.
    
    Courtesy of vapier@gentoo.org.
    
    Closes: https://bugs.gentoo.org/651720
    Closes: https://github.com/gentoo/gentoo/pull/11867
    Signed-off-by: Patrice Clement <monsieurp@gentoo.org>
    Package-Manager: Portage-2.3.62, Repoman-2.3.11

 app-shells/hstr/files/hstr-1.23-tinfo.patch | 2 +-
 app-shells/hstr/hstr-2.0.ebuild             | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)