- From: Yovav Meydad <yovavm@contact.com>
- Date: Tue, 23 May 2000 20:30:25 +0200
- To: <peter.kocks@baygate.com>
- Cc: <www-lib@w3.org>, "'Francois Nicot'" <fnicot@silicom.fr>
Hi,
I have the similar problem in my app which uses libwww. I built it on
Windows but without WWW_WIN_ASYNC so it should use the same code as built on
Unix.
In my application, I perform the following :
CRequester::PostToServer(...)
{
// Create request, set attributes etc...
// POST the source to the dest
BOOL status = HTPostAnchor(pParentAnchor, pDstAnchor, pRequest);
// Go into the event loop ...
if (status == YES)
status = HTEventList_newLoop();
}
The problem I will describe does not happen on Win2000 & Win98, but it
happen all the time when running my application on WinNT.
Then, when going into the loop, the select statement in HTEventList_loop
(HTEvtLst.c) returns -1, with a Winsock error of WSAEINVAL since the
FDArrays are empty (!?)
This of course causes the EventLoop to exit immediately without performing
any read/write to/from the socket.
Peter,
Is that the same problem you have faced ?
I have tried using your fix but it did not solve my problem ?
All others,
Did anyone see this before ?
Can anyone give my an idea what is wrong here ?
Are there some configuration / initialization points I am missing ?
Any help would be appreciated,
Yovav
~~~~~~~~~~~~~~~
Yovav Meydad
Software Engineer
Contact Networks
www.contact.com
~~~~~~~~~~~~~~~
-----Original Message-----
From: www-lib-request@w3.org [mailto:www-lib-request@w3.org]On Behalf Of
Francois Nicot
Sent: Tuesday, May 23, 2000 6:53 PM
To: peter.kocks@baygate.com
Cc: www-lib@w3.org
Subject: Re: Bug fix to HTHost.c
Peter Kocks wrote:
> Hi all,
>
> I'm new to this list and have both a
> bug to report and a solution.
>
> I can reproducibly crash a custom webbot program
> that uses libwww. The program crashes under a
> couple of circumstances (gdb stack traces are
> attached at the bottom of this message), but
> both are related to two lines of code in HTHost.c
>
> In HTHost.c, starting at line 1099 (current cvs)
> HTChannel_delete(host->channel, status);
> host->channel = NULL;
>
> The second line (host->channel = NULL) is both
> unnecessary and causes libwww crash under certain
> conditions. For example, any subsequent code that
> calls HTChannel_socket(host->channel)) will return
> a socket number of "-1". This will cause a
> segfault if something is keyed on socket
> number. E.g. HTEventList_unregister().
>
> I'm not sure what the procedure is, but I'd
> like the line host->channel = NULL deleted from
> the code base because it is causing some
> of my programs to crash.
>
> Thanks in advance
>
> Peter Kocks
>
> Stack traces follow.
>
> -----------------------------------------------------
>
> Program received signal SIGSEGV, Segmentation fault.
> 0xdff47971 in HTEventList_unregister (s=-1, type=HTEvent_READ)
> at HTEvtLst.c:457
> 457 while (cur && (pres = (SockEvents *) HTList_nextObject(cur)))
{
> (gdb) where
> #0 0xdff47971 in HTEventList_unregister (s=-1, type=HTEvent_READ)
> at HTEvtLst.c:457
> #1 0xdfeaca8c in HTEvent_unregister (s=-1, type=HTEvent_READ) at
> HTEvent.c:52
> #2 0xdfeaf391 in HTHost_recoverPipe (host=0x8074958) at HTHost.c:841
> #3 0xdfeb38fb in HTNet_delete (net=0x80834b0, status=200) at HTNet.c:912
> #4 0xdff162ee in HTTPCleanup (req=0x8083310, status=200) at HTTP.c:168
> #5 0xdff183ea in HTTPEvent (soc=9, pVoid=0x80827a0, type=HTEvent_READ)
> at HTTP.c:1290
> #6 0xdfeae58e in HostEvent (soc=9, pVoid=0xffffffff, type=HTEvent_READ)
> at HTHost.c:196
> #7 0xdff475e1 in EventOrder_executeAndDelete () at HTEvtLst.c:321
> #8 0xdff48045 in HTEventList_loop (theRequest=0x8072b50) at
HTEvtLst.c:762
> #9 0x805222c in main (argc=17, argv=0x8047b5c) at RobotMain.c:593
>
> --------------------------------------------------------------------------
--
>
> #0 redirection_handler (request=0x8072c30, response=0x8077060, param=0x0,
> status=302) at HTRobot.c:992
> #1 0xdfab2b3a in HTNetCall_executeAfter (list=0x8073210,
request=0x8072c30,
> status=302) at HTNet.c:314
> #2 0xdfab2db5 in HTNet_executeAfterAll (request=0x8072c30, status=302)
> at HTNet.c:420
> #3 0xdfab3a8b in HTNet_delete (net=0x8073f48, status=302) at HTNet.c:920
> #4 0xdfb16332 in HTTPCleanup (req=0x8072c30, status=302) at HTTP.c:168
> #5 0xdfb18452 in HTTPEvent (soc=-1, pVoid=0x8070db0, type=HTEvent_READ)
> at HTTP.c:1294
> #6 0xdfb17b7d in HTLoadHTTP (soc=-1, request=0x8072c30) at HTTP.c:967
> #7 0xdfab384c in HTNet_newClient (request=0x8072c30) at HTNet.c:808
> #8 0xdfab7450 in HTLoad (me=0x8072c30, recursive=-8 'ø') at
HTReqMan.c:1685
> #9 0xdfb443e5 in launch_request (request=0x8072c30, recursive=0 '\000')
> at HTAccess.c:77
> #10 0xdfb44742 in HTLoadAnchorToChunk (anchor=0x8072ba0,
request=0x8072c30)
> at HTAccess.c:243
> #11 0x8050d73 in get_robots_txt (
> uri=0x8072970 "http://www.seattletimes.com/robots.txt") at
> HTRobot.c:1548
> #12 0x8052063 in main (argc=17, argv=0x8047bc0) at RobotMain.c:527
Peter,
I am happy you have found a work around to fix that bug that spoils my days.
but, could anyone from w3.org confirm that it is ok .
When is the next official libwww release that might include this patch ?
thanks.
Francois Nicot
Received on Tuesday, 23 May 2000 13:33:16 UTC