bug-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Windows CVS 1.12.12.1 Latest + Patch - "version" Command Hangs But :


From: Conrad T. Pino
Subject: RE: Windows CVS 1.12.12.1 Latest + Patch - "version" Command Hangs But :pserver: Not Busy
Date: Sat, 24 Sep 2005 14:18:08 -0700

> From: Derek Price
>
> connecting your debugger would tell you something about the hang?

I think I've found something.  The value of "need" sure is *BIG*!!

The test command "status" of a single fully named file.  The hang
is within a "recv" function call in function "socket_buffer_input"
in "src/socket-client.c" file.

Here is the stack trace, code extract and variables of the hang:

NTDLL! 77f88f13()
MSAFD! 74fd160d()
WS2_32! 750313fa()
WSOCK32! 750510a4()
socket_buffer_input(void * 0x003533e8, char * 0x0035400b, unsigned int 
4294967286, unsigned int 4085, unsigned int * 0x0012fdb0)
line 132 + 21 bytes
buf_read_short_line(buffer * 0x00353420, char * * 0x0012fe0c, unsigned int * 
0x0012fe08, unsigned int 4294967295) line 921 + 27
bytes
buf_read_line(buffer * 0x00353420, char * * 0x0012fe0c, unsigned int * 
0x0012fe08) line 809 + 19 bytes
read_line_via(buffer * 0x00353420, buffer * 0x00353390, char * * 0x0012fe30) 
line 400 + 17 bytes
auth_server(cvsroot_s * 0x00352740, buffer * 0x00353390, buffer * 0x00353420, 
int 0, int 0, hostent * 0x0031a020) line 3731 + 17
bytes
connect_to_pserver(cvsroot_s * 0x00352740, buffer * * 0x0056aad0 
global_to_server, buffer * * 0x0056aab8 global_from_server, int 0,
int 0) line 3607 + 29 bytes
open_connection_to_server(cvsroot_s * 0x00352740, buffer * * 0x0056aad0 
global_to_server, buffer * * 0x0056aab8 global_from_server)
line 3897 + 21 bytes
start_server() line 3992 + 22 bytes
cvsstatus(int 1, char * * 0x00350f18) line 77
main(int 2, char * * 0x00350f14) line 1088 + 14 bytes
mainCRTStartup() line 206 + 25 bytes
KERNEL32! 7c598989()
====================================================
static int
socket_buffer_input( void *closure, char *data, size_t need, size_t size, 
size_t *got )
{
    struct socket_buffer *sb = (struct socket_buffer *) closure;
    int nbytes;

    /* I believe that the recv function gives us exactly the semantics
       we want.  If there is a message, it returns immediately with
       whatever it could get.  If there is no message, it waits until
       one comes in.  In other words, it is not like read, which in
       blocking mode normally waits until all the requested data is
       available.  */

    *got = 0;

    do
    {

        /* Note that for certain (broken?) networking stacks, like
           VMS's UCX (not sure what version, problem reported with
           recv() in 1997), and (according to windows-NT/config.h)
           Windows NT 3.51, we must call recv or send with a
           moderately sized buffer (say, less than 200K or something),
           or else there may be network errors (somewhat hard to
           produce, e.g. WAN not LAN or some such).  buf_read_data
           makes sure that we only recv() BUFFER_DATA_SIZE bytes at
           a time.  */

        nbytes = recv (sb->socket, data, size, 0);
====================================================
+       data    0x0035400b
"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
        *got    11
        nbytes  11
        sb->socket      792
        size    4085
        need    4294967286
====================================================





reply via email to

[Prev in Thread] Current Thread [Next in Thread]