Sorry for the confusion on the first mail
I’m working on a newer toolchain so forget the "select" output (hmm, I cant
even reproduce this output but i did compile with so many different
options/toolchains)

but let concentrate on the real problem and that is the output on cursor and
backspace

1e test is:"typing exit"

strace -o logfile1 ./hush
/hdd/newscript # cat logfile1
execve("./hush", ["./hush"], [/* 5 vars */]) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1caa000
getcwd("/hdd/newscript", 192)           = 15
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
fcntl64(0, F_DUPFD, 255)                = 255
geteuid()                               = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cbc000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cd3000
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0x1559a48, [WINCH], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
ioctl(0, TIOCGWINSZ, {ws_row=24, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "/hdd/newscript # ", 17)       = 17
read(0, "e", 1)                         = 1
write(1, "e", 1)                        = 1
read(0, "x", 1)                         = 1
write(1, "x", 1)                        = 1
read(0, "i", 1)                         = 1
write(1, "i", 1)                        = 1
read(0, "t", 1)                         = 1
write(1, "t", 1)                        = 1
read(0, "\n", 1)                        = 1
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x1559a48, [WINCH],
SA_RESTART|0x4000000}, 8) = 0
_exit(0)                                = ?
/hdd/newscript #


2e test is:"typing abcd{backspace}e{enter}exit{enter}"

strace -o logfile2 ./hush
/hdd/newscript # cat logfile2
execve("./hush", ["./hush"], [/* 5 vars */]) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cbc000
getcwd("/hdd/newscript", 192)           = 15
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
fcntl64(0, F_DUPFD, 255)                = 255
geteuid()                               = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cc0000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cca000
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0x1559a48, [WINCH], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
ioctl(0, TIOCGWINSZ, {ws_row=39, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "/hdd/newscript # ", 17)       = 17
read(0, "a", 1)                         = 1
write(1, "a", 1)                        = 1
read(0, "b", 1)                         = 1
write(1, "b", 1)                        = 1
read(0, "c", 1)                         = 1
write(1, "c", 1)                        = 1
read(0, "d", 1)                         = 1
write(1, "d", 1)                        = 1
read(0, "\177", 1)                      = 1
write(1, " \276\377\217\275\336\337\177\320\363\237\345BL  \276\377"..., 29)
= 29
read(0, "e", 1)                         = 1
write(1, "e", 1)                        = 1
read(0, "\n", 1)                        = 1
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x1559a48, [WINCH],
SA_RESTART|0x4000000}, 8) = 0
vfork()                                 = 97
--- SIGCHLD (Child exited) @ 0 (0) ---
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 1], WUNTRACED, NULL) = 97
wait4(-1, 0x1564dd0, WNOHANG|WUNTRACED, NULL) = -1 ECHILD (No child
processes)
geteuid()                               = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0x1559a48, [WINCH], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
ioctl(0, TIOCGWINSZ, {ws_row=39, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "/hdd/newscript # ", 17)       = 17
read(0, "e", 1)                         = 1
write(1, "e", 1)                        = 1
read(0, "x", 1)                         = 1
write(1, "x", 1)                        = 1
read(0, "i", 1)                         = 1
write(1, "i", 1)                        = 1
read(0, "t", 1)                         = 1
write(1, "t", 1)                        = 1
read(0, "\n", 1)                        = 1
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x1559a48, [WINCH],
SA_RESTART|0x4000000}, 8) = 0
_exit(1)                                = ?
/hdd/newscript #

3e test is:"typing ab{cursor left}c{cursor right}d{enter}exit{enter}"
strace -o logfile3 ./hush

/hdd/newscript # cat logfile3
execve("./hush", ["./hush"], [/* 5 vars */]) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cbc000
getcwd("/hdd/newscript", 192)           = 15
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
fcntl64(0, F_DUPFD, 255)                = 255
geteuid()                               = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cc0000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cd3000
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0x1559a48, [WINCH], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
ioctl(0, TIOCGWINSZ, {ws_row=50, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "/hdd/newscript # ", 17)       = 17
read(0, "a", 1)                         = 1
write(1, "a", 1)                        = 1
read(0, "b", 1)                         = 1
write(1, "b", 1)                        = 1
read(0, "\33", 1)                       = 1
read(0, "[", 1)                         = 1
read(0, "D", 1)                         = 1
write(1, " \276\377\217\275\336\337\177\320\363\237\345BL", 14) = 14
read(0, "c", 1)                         = 1
write(1, "cb \276\377\217\275\336\337\177\320\363\237\345BL", 16) = 16
read(0, "\33", 1)                       = 1
read(0, "[", 1)                         = 1
read(0, "C", 1)                         = 1
write(1, "b", 1)                        = 1
read(0, "d", 1)                         = 1
write(1, "d", 1)                        = 1
read(0, "\n", 1)                        = 1
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x1559a48, [WINCH],
SA_RESTART|0x4000000}, 8) = 0
vfork()                                 = 101
--- SIGCHLD (Child exited) @ 0 (0) ---
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 1], WUNTRACED, NULL) = 101
wait4(-1, 0x1564dd0, WNOHANG|WUNTRACED, NULL) = -1 ECHILD (No child
processes)
geteuid()                               = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0x1559a48, [WINCH], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
ioctl(0, TIOCGWINSZ, {ws_row=50, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "/hdd/newscript # ", 17)       = 17
read(0, "e", 1)                         = 1
write(1, "e", 1)                        = 1
read(0, "x", 1)                         = 1
write(1, "x", 1)                        = 1
read(0, "i", 1)                         = 1
write(1, "i", 1)                        = 1
read(0, "t", 1)                         = 1
write(1, "t", 1)                        = 1
read(0, "\n", 1)                        = 1
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x1559a48, [WINCH],
SA_RESTART|0x4000000}, 8) = 0
_exit(1)                                = ?
/hdd/newscript #


if i do a quick test then i see garbage on the keys:
{backspace}
{delete}
{cursor left}

but i dont see garbage on the keys:
{insert}
{cursor right}
{cursor up}
{cursor down}
{page up}
{page down}


i also notice a other strange thing
4e test is:"typing
ab{backspace}{backspace}{backspace}{backspace}{enter}exit{enter}"

the "strage" thing is that i only see the garbage on the first 2 backspaces
so that means its not the backspace what is the problem
its the "echo back to the console"



strace -o logfile4 ./hush

/hdd/newscript # cat logfile4
execve("./hush", ["./hush"], [/* 5 vars */]) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1ccf000
getcwd("/hdd/newscript", 192)           = 15
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
fcntl64(0, F_DUPFD, 255)                = 255
geteuid()                               = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1cd1000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
0x1d0b000
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0x1559a48, [WINCH], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
ioctl(0, TIOCGWINSZ, {ws_row=24, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "/hdd/newscript # ", 17)       = 17
read(0, "a", 1)                         = 1
write(1, "a", 1)                        = 1
read(0, "b", 1)                         = 1
write(1, "b", 1)                        = 1
read(0, "\177", 1)                      = 1
write(1, " \276\377\217\275\336\337\177\320\363\237\345BL  \276\377"..., 29)
= 29
read(0, "\177", 1)                      = 1
write(1, " \276\377\217\275\336\337\177\320\363\237\345BL  \276\377"..., 29)
= 29
read(0, "\177", 1)                      = 1
read(0, "\177", 1)                      = 1
read(0, "\n", 1)                        = 1
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x1559a48, [WINCH],
SA_RESTART|0x4000000}, 8) = 0
geteuid()                               = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
rt_sigaction(SIGWINCH, {0x1559a48, [WINCH], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
ioctl(0, TIOCGWINSZ, {ws_row=24, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "/hdd/newscript # ", 17)       = 17
read(0, "e", 1)                         = 1
write(1, "e", 1)                        = 1
read(0, "x", 1)                         = 1
write(1, "x", 1)                        = 1
read(0, "i", 1)                         = 1
write(1, "i", 1)                        = 1
read(0, "t", 1)                         = 1
write(1, "t", 1)                        = 1
read(0, "\n", 1)                        = 1
write(1, "\n", 1)                       = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x1559a48, [WINCH],
SA_RESTART|0x4000000}, 8) = 0
_exit(0)                                = ?
/hdd/newscript #

just let me know how to provide more info on this
I’m glad I don’t have the knowledge on C (only did work on machinecode) but
it has to be a very small bug inside the lineedit.c (wild guess)




> -----Oorspronkelijk bericht-----
> Van: Denys Vlasenko [mailto:[EMAIL PROTECTED]
> Verzonden: vrijdag 15 februari 2008 20:05
> Aan: Martinb_ARM_NOMMU_KISSDVD
> CC: [email protected]
> Onderwerp: Re: Command line editing give a wrong result for me on hush
> shell 1.9.1
>
>
> On Friday 15 February 2008 18:55, Martinb_ARM_NOMMU_KISSDVD wrote:
> > i did:
> >
> > /hdd/newscript # strace -o logfile2 ./hush
> >
> > if i cat the logfile2 i get:
> >
> >
> > /hdd/newscript # cat logfile2
> > execve("./hush", ["./hush"], [/* 5 vars */]) = 0
> > ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
> > ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
> ...
> > ioctl(0, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
> > rt_sigaction(SIGWINCH, {0x15e2998, [WINCH], SA_RESTART|0x4000000},
> > {SIG_DFL}, 8) = 0
> > ioctl(0, TIOCGWINSZ, {ws_row=24, ws_col=80, ws_xpixel=0,
> ws_ypixel=0}) = 0
> > write(1, "/hdd/newscript # ", 17)       = 17
> > read(0, "e", 1)                         = 1
> > write(1, "e", 1)                        = 1
> > read(0, "x", 1)                         = 1
> > write(1, "x", 1)                        = 1
> > read(0, "i", 1)                         = 1
> > write(1, "i", 1)                        = 1
> > read(0, "t", 1)                         = 1
> > write(1, "t", 1)                        = 1
> > read(0, "\n", 1)                        = 1
> > write(1, "\n", 1)                       = 1
> > ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
> > ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
> > rt_sigaction(SIGWINCH, {SIG_DFL}, {0x15e2998, [WINCH],
> > SA_RESTART|0x4000000}, 8) = 0
> > _exit(0)                                = ?
> >
> > thanks god i have no idea what this mean
> > its possible that strace is not 100% ok (i did build this myself with a
> > verry old toolchain)
>
> Looks like strace works just fine.
>
> Take a closer look at the log. Your input (letters "exit")
> was read using read() syscalls. There is no select() syscall as you
> have shown me in the previous mail.
>
> *This is strange.*
>
> In itself it is not a problem, but it most likely means that these
> are two different programs! This is not the same program, otherwise why
> it behaves differently? I mean - select() calls cannot "just appear"
> in strace output, they have to be coded at C language level.
>
> Can you run strace again, but instead of "exit" type key sequences
> which produce bad behavior. I will need full strace log again.
> Just showing the tail of it will not be as good.
>
> Thanks for your time debugging this.
> --
> vda

_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to