help needed to fix contrib/ee crash/exit when receiving SIGWINCH

Alexander Best alexbestms at math.uni-muenster.de
Fri Oct 23 13:26:21 UTC 2009


pluknet schrieb am 2009-10-23:
> 2009/10/23 Alexander Best <alexbestms at math.uni-muenster.de>:
> > Gary Jennejohn schrieb am 2009-10-23:
> >> On Fri, 23 Oct 2009 12:58:43 +0400
> >> pluknet <pluknet at gmail.com> wrote:

> >> > 2009/10/23 Antony Mawer <lists at mawer.org>:
> >> > > On Fri, Oct 23, 2009 at 1:35 PM, Alexander Best
> >> > > <alexbestms at math.uni-muenster.de> wrote:
> >> > >> hi everyone,

> >> > >> together with hugh mahon (the author of ee) i've been trying
> >> > >> to
> >> > >> fix a nasty
> >> > >> bug in ee. for some reason ee exits (not crashes) and leaves
> >> > >> the
> >> > >> console
> >> > >> corrupted when receiving SIGWINCH (`killall -SIGWINCH ee`
> >> > >> should
> >> > >> exit all
> >> > >> running ee instances).

> >> > > I noticed this the other day when working on a new 8.0-RC1
> >> > > system...
> >> > > in my case I was using putty (Windows ssh client) to access
> >> > > the
> >> > > system
> >> > > and maximised the window I had ee running in, and noticed ee
> >> > > just
> >> > > dumped me straight to the prompt.

> >> > > I am wondering if this has anything to do with the new tty
> >> > > subsystem
> >> > > in 8.0, as this wasn't a problem I've experienced before under
> >> > > 7.x...


> >> > No, that's a regression appeared in (FreeBSD'ish? version of) ee
> >> > 1.5.0.


> >> SIGWINCH is handled in new_curse.c, but it's not being
> >> compiled/linked.

> >> ---
> >> Gary Jennejohn

> > i think that file is only used on systems which have
> > termio.h/sgtty.h and ee
> > doesn't get linked against ncurses. on those systems (linux e.g.)
> > new_curse.c
> > is used to handle certain things which ncurses takes care under
> > freebsd.

> > this is under freebsd:

> > `make`:
> > Neither termio.h or sgtty.h are on this system!
> > Relying on local curses implementation.
> > Generating make.local
> > make -f make.local
> > cc ee.c -o ee -ggdb -DDIAG -DHAS_UNISTD -DHAS_STDARG -DHAS_STDLIB
> > -DHAS_CTYPE
> > -DHAS_SYS_IOCTL -DHAS_SYS_WAIT   -DSLCT_HDR
> > -DTERMCAP="\"/usr/share/misc/termcap\"" -lcursesw

> > `ldd ee`:
> > libncursesw.so.8 => /lib/libncursesw.so.8 (0x2809b000)
> > libc.so.7 => /lib/libc.so.7 (0x280e9000)


> [Probably already mentioned.]

> btw, ee compiled under fbsd with new_curse.c
> (and not linked with curses/cursesw) goes fine with SIGWINCH.

> --- Makefile.old        2009-10-23 16:13:45.000000000 +0400
> +++ Makefile    2009-10-23 16:30:03.000000000 +0400
> @@ -3,15 +3,14 @@
>  .PATH: ${.CURDIR}/../../contrib/ee

>  CFLAGS+= -DHAS_NCURSES -DHAS_UNISTD -DHAS_STDARG -DHAS_STDLIB \
> -        -DHAS_SYS_WAIT
> +        -DHAS_SYS_WAIT -DCAP -DNCURSE

>  PROG=  ee
> +SRCS=  ee.c new_curse.c
>  LINKS= ${BINDIR}/ee ${BINDIR}/ree ${BINDIR}/ee ${BINDIR}/edit
>  MLINKS=        ee.1 ree.1 ee.1 edit.1
> -DPADD= ${LIBNCURSES}
> -LDADD= -lncurses

> -WARNS?=        2
> +WARNS?=        0

>  NLS=   en_US.US-ASCII fr_FR.ISO8859-1 de_DE.ISO8859-1
>  pl_PL.ISO8859-2 \
>         uk_UA.KOI8-U ru_RU.KOI8-R hu_HU.ISO8859-2

> $ ldd ./ee
> ./ee:
>         libc.so.6 => /lib/libc.so.6 (0x2808a000)

> (yes, it's FreeBSD 6.x).

won't work under CURRENT i'm afraid:

Warning: Object directory not changed from original /usr/src/usr.bin/ee
cc  -O2 -fno-strict-aliasing -pipe -march=native -DHAS_NCURSES -DHAS_UNISTD
-DHAS_STDARG -DHAS_STDLIB  -DHAS_SYS_WAIT -DCAP -DNCURSE -std=gnu99
-fstack-protector -Wno-pointer-sign -c
/usr/src/usr.bin/ee/../../contrib/ee/ee.c
In file included from /usr/src/usr.bin/ee/../../contrib/ee/ee.c:68:
/usr/src/usr.bin/ee/../../contrib/ee/new_curse.h:47:19: error: sgtty.h: No
such file or directory
*** Error code 1

Stop in /usr/src/usr.bin/ee.

here's the entry in ObsoleteFiles.inc:

# 20080725: sgtty.h removed
OLD_FILES+=usr/include/sgtty.h

alex


More information about the freebsd-hackers mailing list