Hi again,
As of lsh 2.1, I get this:
--8<---------------cut here---------------start------------->8--- $ lshg -G fencepost.gnu.org Passphrase for key `xxx@yyy': Aborted --8<---------------cut here---------------end--------------->8---
A look at the strace output suggests an assertion failure in one of the child processes:
--8<---------------cut here---------------start------------->8--- write(2, "lshg: sys.c:109: sys_on_fd: Assertion `((void *)0) == sys->files[fd][ev].f && "multiple handlers registered for a file event"' failed.\n", 135) = 135 --8<---------------cut here---------------end--------------->8---
Any ideas?
Thanks, Ludo’.
ludo@gnu.org (Ludovic Courtès) writes:
--8<---------------cut here---------------start------------->8--- $ lshg -G fencepost.gnu.org Passphrase for key `xxx@yyy': Aborted --8<---------------cut here---------------end--------------->8---
A look at the strace output suggests an assertion failure in one of the child processes:
--8<---------------cut here---------------start------------->8--- write(2, "lshg: sys.c:109: sys_on_fd: Assertion `((void *)0) == sys->files[fd][ev].f && "multiple handlers registered for a file event"' failed.\n", 135) = 135 --8<---------------cut here---------------end--------------->8---
Any ideas?
It looks like lshg sets the close-on-exec flag on the stdio file descriptors, before execing lsh. Which maybe is why you don't get to see that assertion failure message.
Can you try the following patch? To be applied to the branch "lsh-2.0.4".
Regards, /Niels
diff --git a/src/client.c b/src/client.c index c5dd3e5..d580e68 100644 --- a/src/client.c +++ b/src/client.c @@ -974,7 +974,7 @@ make_client_session(struct client_options *options) in = open("/dev/null", O_RDONLY); else { - in = STDIN_FILENO; + in = dup(STDIN_FILENO); in_type = IO_STDIO; is_tty = isatty(STDIN_FILENO); @@ -1023,7 +1023,7 @@ make_client_session(struct client_options *options) else { out_type = IO_STDIO; - out = STDOUT_FILENO; + out = dup(STDOUT_FILENO); } if (out < 0) { @@ -1040,7 +1040,7 @@ make_client_session(struct client_options *options) else { err_type = IO_STDERR; - err = STDERR_FILENO; + err = dup(STDERR_FILENO); } if (err < 0) {
nisse@lysator.liu.se (Niels Möller) skribis:
ludo@gnu.org (Ludovic Courtès) writes:
--8<---------------cut here---------------start------------->8--- $ lshg -G fencepost.gnu.org Passphrase for key `xxx@yyy': Aborted --8<---------------cut here---------------end--------------->8---
A look at the strace output suggests an assertion failure in one of the child processes:
--8<---------------cut here---------------start------------->8--- write(2, "lshg: sys.c:109: sys_on_fd: Assertion `((void *)0) == sys->files[fd][ev].f && "multiple handlers registered for a file event"' failed.\n", 135) = 135 --8<---------------cut here---------------end--------------->8---
Any ideas?
It looks like lshg sets the close-on-exec flag on the stdio file descriptors, before execing lsh. Which maybe is why you don't get to see that assertion failure message.
Can you try the following patch? To be applied to the branch "lsh-2.0.4".
I fail to bootstrap from that branch:
--8<---------------cut here---------------start------------->8--- $ autoreconf -vfi autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force autoreconf: configure.ac: tracing autoreconf: configure.ac: adding subdirectory src/argp to autoreconf autoreconf: Entering directory `src/argp' autoreconf: configure.ac: not using Libtool autoreconf: running: /nix/store/ysqgpw7bn4ry6gj3y37a5nrskckkw0i2-autoconf-2.69/bin/autoconf --force autoreconf: running: /nix/store/ysqgpw7bn4ry6gj3y37a5nrskckkw0i2-autoconf-2.69/bin/autoheader --force autoreconf: running: automake --add-missing --copy --force-missing Makefile.am:24: error: required file './vsnprintf.c' not found autoreconf: automake failed with exit status: 1
$ git describe lsh_2.1_release_20130626 --8<---------------cut here---------------end--------------->8---
What am I missing?
Thanks, Ludo’.
ludo@gnu.org (Ludovic Courtès) writes:
I fail to bootstrap from that branch:
--8<---------------cut here---------------start------------->8--- $ autoreconf -vfi
Use ./.bootstrap, not autoreconf. (And similarly on the master branch).
Regards, /Niels
nisse@lysator.liu.se (Niels Möller) skribis:
ludo@gnu.org (Ludovic Courtès) writes:
I fail to bootstrap from that branch:
--8<---------------cut here---------------start------------->8--- $ autoreconf -vfi
Use ./.bootstrap, not autoreconf. (And similarly on the master branch).
OK.
At the risk of looking stupid, I’m now stuck with:
--8<---------------cut here---------------start------------->8--- gcc -DHAVE_CONFIG_H -I. -g -O2 -ggdb3 -Wno-pointer-sign -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -MT names.o -MD -MP -MF .deps/names.Tpo -c -o names.o names.c In file included from names.c:23:0: certificate.h:34:24: fatal error: spki-types.h: No such file or directory #include "spki-types.h" ^ compilation terminated. Makefile:413: recipe for target 'names.o' failed --8<---------------cut here---------------end--------------->8---
What did I miss?
Thanks, Ludo’.
ludo@gnu.org (Ludovic Courtès) writes:
At the risk of looking stupid, I'm now stuck with:
Sorry, I think I forgot one step. The right sequence is
./.bootstrap ./configure make bootstrap make
This is documented in the top-level README, but maybe a bit hard to find. The make bootstrap target should create spki-types.h and a bunch of other automatically generated files.
Regards, /Niels
nisse@lysator.liu.se (Niels Möller) skribis:
ludo@gnu.org (Ludovic Courtès) writes:
At the risk of looking stupid, I'm now stuck with:
Sorry, I think I forgot one step. The right sequence is
./.bootstrap ./configure make bootstrap make
This is documented in the top-level README, but maybe a bit hard to find. The make bootstrap target should create spki-types.h and a bunch of other automatically generated files.
Indeed, thanks. Sorry for overlooking that!
Ludo’.
nisse@lysator.liu.se (Niels Möller) skribis:
ludo@gnu.org (Ludovic Courtès) writes:
--8<---------------cut here---------------start------------->8--- $ lshg -G fencepost.gnu.org Passphrase for key `xxx@yyy': Aborted --8<---------------cut here---------------end--------------->8---
A look at the strace output suggests an assertion failure in one of the child processes:
--8<---------------cut here---------------start------------->8--- write(2, "lshg: sys.c:109: sys_on_fd: Assertion `((void *)0) == sys->files[fd][ev].f && "multiple handlers registered for a file event"' failed.\n", 135) = 135 --8<---------------cut here---------------end--------------->8---
Any ideas?
It looks like lshg sets the close-on-exec flag on the stdio file descriptors, before execing lsh. Which maybe is why you don't get to see that assertion failure message.
Can you try the following patch? To be applied to the branch "lsh-2.0.4".
I confirm solves the problem, thanks!
Ludo’.