On Sunday 03 April 2011 19:19, Tomasz Czapiewski wrote: > On Sun, 3 Apr 2011, Denys Vlasenko wrote: > > >> 2011/4/2 Tomasz Czapiewski <[email protected]>: > >>> Hi, > >>> I have replaced BusyBox 1.2.1 with 1.18.1 yestarday on one embedded > >>> machine > >>> and I've encountered problems using FISH connection from Midnight > >>> Commander > >>> on PC to Dropbear SSH server on embedded machine. > >>> > >>> All the file and dir names (including '.' and '..') are ending with: > >>> '\"\ \ ' - quotation mark (interted commas) and two spaces. > >>> > >>> Unfortunately I don't know how MC executes 'ls' command (which arguments). > >>> I couldn't get the problematic output with 'ls' or 'ls -al' or other > >>> arguments so can't track where's the problem myself. > >>> > >>> BusyBox 1.18.1 (before upgrade, on 1.2.1 everything was fine) > >>> Midnight Commander 4.7.0.6 > > > >> On Saturday 02 April 2011 21:59, Tomasz Czapiewski wrote: > >> On Sat, 2 Apr 2011, Sergey Naumov wrote: > >> > >>> It seems that it is problem of new mc. I have similar problems with mc > >>> from Debian 6.0.0 and openssh. mc from debian 5.0.0 works fine with my > >>> busybox-based system. > >>> > >>> Sergey Naumov. > >> > >> Thanks for info, but I haven't upgraded MC in last few moths (it's default > >> one in Kubuntu 10.10) and it worked without any problems with older > >> BusyBox. I can only assume that there were any used by MC parameters which > >> older BusyBox was missing and MC haven't used them. Is there already known > >> workaround for this problem? > >> > >> Here's the strace log from current connection (cut the key exchange and > >> password verification at the beginning): > >> http://www.mediafire.com/?zydc5kkqtb66o2c > > > > $ grep 'execve.*ls' LOG-dropbear-fish-shell.log > > 860 execve("/bin/ls", ["ls", "-1", "/"], [/* 10 vars */] <unfinished ...> > > 861 execve("/bin/ls", ["ls", "-Q", "/"], [/* 10 vars */]) = 0 > > 862 execve("/bin/ls", ["ls", "-Qlan", "/"], [/* 10 vars */] <unfinished > > ...> > > 865 execve("/bin/ls", ["ls", "-Qlan", "/"], [/* 10 vars */] <unfinished > > ...> > > 869 execve("/bin/ls", ["ls", "-1", "//bin"], [/* 10 vars */] <unfinished > > ...> > > 870 execve("/bin/ls", ["ls", "-Q", "//bin"], [/* 10 vars */]) = 0 > > 871 execve("/bin/ls", ["ls", "-Qlan", "//bin"], [/* 10 vars */] > > <unfinished ...> > > 874 execve("/bin/ls", ["ls", "-Qlan", "//bin"], [/* 10 vars */] > > <unfinished ...> > > 878 execve("/bin/ls", ["ls", "-1", "//mnt"], [/* 10 vars */] <unfinished > > ...> > > 879 execve("/bin/ls", ["ls", "-Q", "//mnt"], [/* 10 vars */] <unfinished > > ...> > > 880 execve("/bin/ls", ["ls", "-Qlan", "//mnt"], [/* 10 vars */] > > <unfinished ...> > > 883 execve("/bin/ls", ["ls", "-Qlan", "//mnt"], [/* 10 vars */]) = 0 > > 887 execve("/bin/ls", ["ls", "-1", "/tmp"], [/* 10 vars */] <unfinished > > ...> > > 888 execve("/bin/ls", ["ls", "-Q", "/tmp"], [/* 10 vars */]) = 0 > > 889 execve("/bin/ls", ["ls", "-Qlan", "/tmp"], [/* 10 vars */] > > <unfinished ...> > > 892 execve("/bin/ls", ["ls", "-Qlan", "/tmp"], [/* 10 vars */] > > <unfinished ...> > > 897 execve("/bin/ls", ["ls", "-1", "/tmp/.stagecraft\" "], [/* 10 vars > > */] <unfinished ...> > > > > It uses -Q. > > busybox 1.2.1 didn't have -Q at all. Probably mc was detecting that > > and used some other method. Now it uses -Q (because it is supported, but > > isn't > > happy with results. > > > > Let's check how it ended up using '.stagecraft" ' > > > > $ grep 'stagecraft' LOG-dropbear-fish-shell.log > > 889 lstat64("/tmp/.stagecraft", {st_mode=S_IFDIR|0777, st_size=0, ...}) = > > 0 > > 891 write(1, "Pdrwxrwxrwx 0.0\nS0\ndJan 1 00:00\n:\".stagecraft\" \n\n", > > 50) = 50 > > 892 lstat64("/tmp/.stagecraft", {st_mode=S_IFDIR|0777, st_size=0, ...}) = > > 0 > > 855 write(7, "#LIST /tmp/.stagecraft\\\"\\ \\ \nif `perl -v > /dev/null > > 2>&1` ; then\nperl -e '\nuse strict;\nuse POSIX;\n"..., 2216) = 2216 > > 858 <... read resumed> "#LIST /tmp/.stagecraft\\\"\\ \\ \nif `perl -v > > > /dev/null 2>&1` ; then\nperl -e '\nuse strict;\nuse POSIX;\n"..., 1023) = > > 1023 > > 858 read(0, "osedir(DIR);\n} else {\nprintf(\"### 500\\n\");\n}\nexit > > 0\n' /tmp/.stagecraft\\\"\\ \\ ||\n echo '### 500'\n"..., 1023) = 1023 > > 897 execve("/bin/ls", ["ls", "-1", "/tmp/.stagecraft\" "], [/* 10 vars > > */] <unfinished ...> > > 897 lstat64("/tmp/.stagecraft\" ", 0x7fa51a38) = -1 ENOENT (No such file > > or directory) > > 897 write(2, "ls: /tmp/.stagecraft\" : No such file or directory\n", 51) > > = 51 > > > > The second line above is fishy. Let's see where it comes from: > > > > 891 read(0, "d", 1) = 1 > > 891 read(0, "r", 1) = 1 > > 891 read(0, "w", 1) = 1 > > 891 read(0, "x", 1) = 1 > > 891 read(0, "r", 1) = 1 > > 891 read(0, "w", 1) = 1 > > 891 read(0, "x", 1) = 1 > > 891 read(0, "r", 1) = 1 > > 891 read(0, "w", 1) = 1 > > 891 read(0, "x", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "3", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "0", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "0", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "0", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "J", 1) = 1 > > 891 read(0, "a", 1) = 1 > > 891 read(0, "n", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "1", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "0", 1) = 1 > > 891 read(0, "0", 1) = 1 > > 891 read(0, ":", 1) = 1 > > 891 read(0, "0", 1) = 1 > > 891 read(0, "0", 1) = 1 > > 891 read(0, " ", 1) = 1 > > 891 read(0, "\"", 1) = 1 > > 891 read(0, ".", 1) = 1 > > 891 read(0, "s", 1) = 1 > > 891 read(0, "t", 1) = 1 > > 891 read(0, "a", 1) = 1 > > 891 read(0, "g", 1) = 1 > > 891 read(0, "e", 1) = 1 > > 891 read(0, "c", 1) = 1 > > 891 read(0, "r", 1) = 1 > > 891 read(0, "a", 1) = 1 > > 891 read(0, "f", 1) = 1 > > 891 read(0, "t", 1) = 1 > > 891 read(0, "\"", 1) = 1 > > 891 read(0, "\n", 1) = 1 > > 891 waitpid(-1, 0x7f898c50, WNOHANG) = -1 ECHILD (No child processes) > > 891 waitpid(-1, 0x7f898c50, WNOHANG) = -1 ECHILD (No child processes) > > 891 waitpid(-1, 0x7f898c50, WNOHANG) = -1 ECHILD (No child processes) > > 891 waitpid(-1, 0x7f898c50, WNOHANG) = -1 ECHILD (No child processes) > > 891 fcntl64(1, F_GETFL) = 0x1 (flags O_WRONLY) > > 891 write(1, "Pdrwxrwxrwx 0.0\nS0\ndJan 1 00:00\n:\".stagecraft\" \n\n", > > 50) = 50 > > > > I don't see what process 891 is (I see neither fork or clone which created > > it, > > nor any execve's in it), but this is clearly where bug originates: > > this process reads ls output (byte-by-byte), and then > > translates it in some other format. This translation is buggy: > > it took input in the form ".stagecraft" (quotes included) > > and converted it to ".stagecraft"<space><space> > > which looks wrong to me. > > > > Aha. Looks like we have some docs: > > > > http://cvs.savannah.gnu.org/viewvc/mc/mc/vfs/README.fish?view=markup > > > > According to it, process 891 must be shell running "while read..." > > part of the shell construct similar to: > > > > ls -Qlan /tmp | grep '^[^cbt]' | ( while read p x u g s m d y n; do echo > > "P$p $u.$g > > S$s > > d$m $d $y > > :$n > > "; done ) > > > > > > > > > > Questions for further debugging: > > > > What is your shell?
So, what is your shell? > > Can you run this: > > > > ls -Qlan /tmp | grep '^[^cbt]' | ( while read p x u g s m d y n; do echo > > "P$p $u.$g > > S$s > > d$m $d $y > > :$n > > "; done ) >LOG > > > > and post resulting LOG file? > > Looks ok to me: > http://pastebin.com/hGhZUgrV Can you send it as an attachment? Trailing spaces can be mangled by pastebin.com -- vda _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
