[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lynx-dev] Re: lynx randomly hanging at "HTTP/1.1 200 OK"
From: |
Thomas Dickey |
Subject: |
Re: [Lynx-dev] Re: lynx randomly hanging at "HTTP/1.1 200 OK" |
Date: |
Mon, 2 Jan 2006 18:47:04 -0500 |
User-agent: |
Mutt/1.3.27i |
On Mon, Jan 02, 2006 at 09:09:57PM -0200, Frédéric L. W. Meunier wrote:
> On 1/2/06, Thomas Dickey wrote:
> > If you type "finish", gdb will try to finish the current function.
> > If it's stuck in a loop, it won't come back - and you can control/C
> > back to gdb's prompt. Doing that twice would normally get back to
> > HTCompressed.
>
> If I type it, it returns:
>
> Run till exit from #0 0xb7d01ea3 in random_r () from /lib/tls/libc.so.6
> 0xb7d01d57 in random () from /lib/tls/libc.so.6
> (gdb)
perhaps gdb is being uncooperative (I've noticed that sometimes it reports
that it's in a function when it's in a lower level). That could be
this chunk:
while (names_used < MAX_TEMPNAME) {
counter = (unsigned) (((float) MAX_TEMPNAME * lynx_rand()) /
LYNX_RAND_MAX + 1);
counter %= SIZE_TEMPNAME; /* just in case... */
/*
* Avoid reusing a temporary name, since there are places in the code
* which can refer to a temporary filename even after it has been
* closed and removed from the filesystem.
*/
offset = counter / BITS_PER_CHAR;
mask = 1 << (counter % BITS_PER_CHAR);
if ((used_tempname[offset] & mask) == 0) {
names_used++;
used_tempname[offset] |= mask;
break;
}
}
and "random()" would be the "lynx_rand()" call. Typing "finish" again
should make it try to finish fmt_tempname().
If it stays in _that_ loop, there's something wrong with our assumptions
about reusing filenames. More likely there's a problem in the caller -
but let's see.
--
Thomas E. Dickey
http://invisible-island.net
ftp://invisible-island.net