Web lists-archives.com

Re: Segfault using `watch -c` with ANSI escapes in output




On Tue, Apr 18, 2017 at 01:36:34PM +0100, Adam Dinwoodie wrote:
> I'm seeing a segfault from using `watch -c` with commands that output
> ANSI colour sequences, which is a bit sad given the whole point of the
> `-c` is to get the ANSI colour sequences to be displayed.
> 
> Simple test case:
> 
>     $ echo -e '\e[0;32mGreen\e[0;0m' >escapes
> 
>     $ cat escapes  # Text is green in my terminal
>     Green
> 
>     $ xxd escapes
>     00000000: 1b5b 303b 3332 6d47 7265 656e 1b5b 303b  .[0;32mGreen.[0;
>     00000010: 306d 0a                                  0m.
> 
>     $ watch -c cat escapes
>     Segmentation fault (core dumped)
> 
>     $ cat watch.exe.stackdump
>     Exception: STATUS_ACCESS_VIOLATION at rip=001004029B0
>     rax=0000000058F5FF8D rbx=0000000600001200 rcx=0000000600000060
>     rdx=0000000000000000 rsi=0000000000000000 rdi=0000000000000004
>     r8 =00000000FFFFCA2C r9 =000000018013C800 r10=0000000100000000
>     r11=000000010040299A r12=0000000000000004 r13=00000000FFFFCAF0
>     r14=0000000600000E50 r15=00000001801F82C0
>     rbp=0000000000000000 rsp=00000000FFFFCA60
>     program=C:\cygwin64\bin\watch.exe, pid 12100, thread main
>     cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
>     Stack trace:
>     Frame        Function    Args
>     00000000000  001004029B0 (00000000000, 00000000000, 00000000030,
> 30001010000FF00)
>     000FFFFCCC0  00180047812 (00000000000, 00000000000, 00000000000,
> 00000000000)
>     00000000000  001800455E3 (00000000000, 00000000000, 00000000000,
> 00000000000)
>     000FFFFFFF0  00180045694 (00000000000, 00000000000, 00000000000,
> 00000000000)
>     End of stack trace
> 
> This works as expected when using `watch` without the `-c` option, and
> when using `watch -c` with output that doesn't include any ANSI colour
> sequences.
> 
> Output from `cygcheck -srv` is attached, and `cygcheck -f
> /usr/bin/watch.exe` returns `procps-ng-3.3.11-1`.


Where does "watch" come from? It's not on my cygwin installation:

> 16:12:50$ type watch
> -bash: type: watch: not found

and when I enter "watch" in the installer Search window, all it shows me is

> xfce-mailwatch-plugin: Xfce mail watcher panel plugin
and
> xfce-mailwatch-plugin-debuginfo: Debug info for xfce4-mailwatch-plugin

Cheers ... Duncan.

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple