- From: Kimberly Doring <kimberly@biotools.com>
- Date: Mon, 27 Jul 1998 12:15:35 -0700
- To: www-lib@w3.org
- Message-ID: <35BCD1D7.BAED0AEF@biotools.com>
Hi! I've encountered a strange segmentation fault when trying to FTP multiple files using the HTLoadToFile function. It appears to occur immediately after loading a "large" file (i.e. in this particular case, a 16MB file). The 16MB file loads successfully, but if I try to load another file immediately after this one, I get a segmentation fault. In my code, I try to get 4 different files: pir1upd.5703 pir2upd.5702 pir3upd.5703 pir4upd.5703 I can successfully retrieve pir1upd.5703 and pir2upd.5703 (16MB file), but receive a segmentation fault when retrieving pir3upd.5703. Here is my code: #include "WWWLib.h" #include "WWWMIME.h" #include "WWWNews.h" #include "WWWHTTP.h" #include "WWWFTP.h" #include "WWWFile.h" #include "WWWGophe.h" #include "WWWInit.h" #define FILENAME_SIZE 128 #define STDERR_FILE "/home/internal/log/FTPstderr" #define SAVE_PATH "/home/internal/dbupdates" #define PIR "ftp://nbrf.georgetown.edu/pir/updates" int main (int argc, char ** argv) { HTRequest * request; int i = 1, status = 0; char pirbuff[FILENAME_SIZE]; char pirsavebuff[FILENAME_SIZE]; memset(pirbuff, 0, FILENAME_SIZE); memset(pirsavebuff, 0, FILENAME_SIZE); /* freopen(STDERR_FILE, "w+", stderr); */ HTProfile_newPreemptiveClient("TestApp", "1.0"); for (i = 1; i < 5; i++) { sprintf(pirbuff, "%s/pir%dupd.5703", PIR, i); sprintf(pirsavebuff, "%s/pir%dupd.5703", SAVE_PATH, i); /* now get the file */ fprintf(stderr, "Getting file %s\nSave to %s\n", pirbuff, pirsavebuff); request = HTRequest_new(); HTLoadToFile(pirbuff, request, pirsavebuff); HTRequest_delete(request); } HTProfile_delete(); return 0; } My code was compiled using the following compile directives (using GNU make): FTPtest.o: FTPtest.c gcc -DHAVE_CONFIG_H -I. -I/usr/local/include/w3c-libwww -g -O2 -c FTPtest.c FTPtest: FTPtest.o /usr/local/lib/libwww.a gcc -g -O2 -o FTPtest FTPtest.o /usr/local/lib/libwww.a -lm -ldl Here is a trace from gdb: Getting file ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703 Save to /home/internal/dbupdates/pir3upd.5703 Program received signal SIGSEGV, Segmentation fault. 0x8071659 in SendCommand (request=0x8095388, ctrl=0x809d768, token=0x8081073 "REIN", pars=0x0) at HTFTP.c:386 HTFTP.c:386: No such file or directory. (gdb) where #0 0x8071659 in SendCommand (request=0x8095388, ctrl=0x809d768, token=0x8081073 "REIN", pars=0x0) at HTFTP.c:386 #1 0x8071d4d in HTFTPLogin (request=0x8095388, cnet=0x80a59d0, ctrl=0x809d768) at HTFTP.c:708 #2 0x8073266 in FTPEvent (soc=-1, pVoid=0x809d768, type=HTEvent_BEGIN) at HTFTP.c:1520 #3 0x8072ea3 in HTLoadFTP (soc=-1, request=0x8095388) at HTFTP.c:1379 #4 0x8054944 in HTNet_newClient (request=0x8095388) at HTNet.c:732 #5 0x804caf4 in HTLoad (me=0x8095388, recursive=0 '\000') at HTReqMan.c:1575 #6 0x804984f in launch_request (request=0x8095388, recursive=0 '\000') at HTAccess.c:75 #7 0x8049883 in HTLoadAbsolute ( url=0xbffffd38 "ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703", request=0x8095388) at HTAccess.c:88 #8 0x80499c3 in HTLoadToFile (url=0xbffffd38 "ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703", request=0x8095388, filename=0xbffffcb8 "/home/internal/dbupdates/pir3upc.5703") at HTAccess.c:164 #9 0x80497e4 in main (argc=1, argv=0xbffffdd4) at FTPtest.c:27 Here is a trace from libwww (starting just after pir2upd.5703 successfully loaded): Load End.... OK: `ftp://nbrf.georgetown.edu/pir/updates/pir2upd.5703' Memory Free. 0x80a5a20 Request..... Delete 0x8089ee8 Response.... Delete 0x80a5b80 Memory Free. 0x80a5b80 Memory Free. 0x8089ee8 Getting file ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703 Save to /home/internal/dbupdates/pir3upd.5703 Request..... Created 0x8089ee8 Memory Free. 0x809d988 Memory Free. 0x80a5a20 Memory Free. 0x809d620 Memory Free. 0x809d660 HTSimplify.. `ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703' into ............ `ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703' Find Parent. 0x808b4e0 with hash 555 and address `ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703\ ' created HTAccess.... Accessing document ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703 Memory Free. 0x808b570 Net Before.. calling 0x806e658 (request 0x8089ee8, context (nil)) Check rules. for `ftp://nbrf.georgetown.edu/pir/updates/pir3upd.5703' Memory Free. 0x808b570 Net Before.. calling 0x806e5b0 (request 0x8089ee8, context (nil)) Memory Free. 0x8095358 Memory Free. 0x808b570 Memory Free. 0x809d780 Memory Free. 0x80a5a58 Net Object.. 0x809d780 created with hash 4 Net Object.. starting request 0x8089ee8 (retry=1) with net object 0x809d780 FTP......... Looking for `ftp://nbrf.georgetown.edu/pir/upd Please note that I can also change the order of these files - i.e. I can try to get pir2upd.5703 first, second, or third, but whatever I try to retrieve immediately after this file results in a core dump. If I make pir2upd.5703 the last file to load, the program works successfully. This problem has happened with other files I have tried to load as well. Sorry for such a long explanation, but any help/comments would be greatly appreciated! Kimberly
Received on Monday, 27 July 1998 14:16:06 UTC