Re: The Links/Links2/ELinks browsers are unusable on Debian GNU/Hurd

Fabienne Ducroquet <[email protected]> Tue, 18 Dec 2007 20:46:03 +0100
Newsgroups gmane.linux.debian.ports.hurd,gmane.comp.web.links,gmane.comp.web.links.list
Organization ENS
Message-ID <[email protected]>
On Sat, 15 Dec 2007 22:36:21 +0200, Kalle Olavi Niemitalo <[email protected]>
wrote:
> This suggests ELinks has failed to disable echoing at the terminal.
> Please verify this by looking up the tty that ELinks is using and
> checking the modes with a command like this:
>
>   stty -F /dev/pts/1 -a
>
> ELinks should have enabled and disabled tty modes as follows:
> -icrnl -ixon -icanon -iexten -echo isig tostop.  And also the
> following, which may already be the default: -ignbrk -brkint
> -parmrk -istrip -inlcr -igncr opost -echonl cs8 min=3D1 time=3D0.

   If I run ELinks on an xterm and then check the modes of that
terminal I get:
speed 38400 baud; rows 28; columns 84;
intr =3D ^C; quit =3D <undef>; erase =3D ^?; kill =3D ^U; eof =3D ^D; eol=
 =3D <undef>;
eol2 =3D <undef>; start =3D ^Q; stop =3D ^S; susp =3D ^Z; dsusp =3D ^Y; r=
prnt =3D ^R;
werase =3D ^W; lnext =3D ^V; flush =3D ^O; status =3D ^E; min =3D 1; time=
 =3D 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -i=
xoff
-iuclc -ixany imaxbel
opost -olcuc onlcr
isig icanon iexten echo echoe echok -echonl -noflsh -tostop -echoprt echo=
ctl
echoke
  They are not correctly set then ...

> If ELinks fails to set the modes, put a breakpoint at
> src/terminal/kbd.c (setraw) and see whether execution gets there
> and whether the tcsetattr call succeeds and has the intended
> effect.

   ... but the tcetattr call succeeds: when the breakpoint at setraw is
reached, the output of stty -F /dev/ttyp1 -a is the same as above, but
after the execution of the line 242:
if (tcetattr(fd, TCSANOW, &t)) return -1;
it is:
speed 38400 baud; rows 28; columns 84;
intr =3D ^C; quit =3D <undef>; erase =3D ^?; kill =3D ^U; eof =3D ^D; eol=
 =3D <undef>;
eol2 =3D <undef>; start =3D ^Q; stop =3D ^S; susp =3D ^Z; dsusp =3D ^Y; r=
prnt =3D ^R;
werase =3D ^W; lnext =3D ^V; flush =3D ^O; status =3D ^E; min =3D 1; time=
 =3D 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon =
-ixoff
-iuclc -ixany imaxbel
opost -olcuc onlcr
isig -icanon -iexten -echo echoe echok -echonl -noflsh tostop -echoprt ec=
hoctl
echoke

    I've found that the function free_itrm is called later and it unsets
these modes.  It is called by select_loop line 305 while i =3D 7 and n =3D=
 1.

> ELinks catches SIGINT and translates it to an event internally.
> It's odd though that it doesn't handle the event immediately.

    Indeed, I don't know if it catches it.

> Please show the value of *ditrm, especially ditrm->blocked.

   Just before the execution of free_itrm:
$2 =3D {in =3D {std =3D 0, sock =3D 1, ctl =3D 0, queue =3D {data =3D 0x8=
187e10 "", len =3D 0}},=20
  out =3D {std =3D 1, sock =3D 7, queue =3D {data =3D 0x8187e80 "", len =3D=
 0}}, timer =3D 0x0,=20
  t =3D {c_iflag =3D 8454, c_oflag =3D 3, c_cflag =3D 2816, c_lflag =3D 1=
487,=20
    c_cc =3D "\004=FF=FF\177\027\025\022\b\003=FF\032\031\021\023\026\017=
\001\000\005\b",=20
    __ispeed =3D 38400, __ospeed =3D 38400}, mouse_h =3D 0x0,=20
  orig_title =3D 0x8192720 "xterm", blocked =3D 0, altscreen =3D 1, touch=
ed_title =3D 1,=20
  remote =3D 0}
and after the execution of free_itrm ditrm=3D=3DNULL.

> Does execution ever reach in_kbd?

No.

> It doesn't hang here, on Linux 2.6.  Instead, in
> connect_to_af_unix, connect fails with ECONNREFUSED,
> and ELinks retries that a few times and gives up.

    That does not seem to work with Hurd/GNU-Mach, but that reminds me
that sometimes when I start ELinks I have the error:
ERROR at interlink.c:329: The call to connect() failed: 1073741873
(Cannot assign requested address)
but I haven't found how to reproduce that.

--=20
Fabienne


--=20
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]=
.org