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

pluknet pluknet at gmail.com
Fri Oct 23 12:34:03 UTC 2009


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).

-- 
wbr,
pluknet


More information about the freebsd-hackers mailing list