On Tue, 23 Nov 1999, Emil Nilimaa wrote: > [snip] I'm guessing that we're dealing with a memory/buffer overflow, but I can't be certain of that right off. Anyway, there's only one way to find out: check the code. > int rec_count = 0, i; > FBFILE *plr_index; > char index_name[40], line[256], bits[64]; > char arg2[80]; > > sprintf(index_name, "%s", PLR_INDEX_FILE); I don't suppose PLR_INDEX_FILE is more than 39 characters long? > if(!(plr_index = fbopen(index_name, FB_READ))) { > top_of_p_table = -1; > log("No player index file! First new char will be IMP!"); > return; > } Ensure that fbopen() doesn't attempt to copy the filename to a buffer too small. > /* count the number of players in the index */ > while(fbgetline(plr_index, line)) In gdb, switch to the frame where this call is made (e.g., "frame 0" to switch to #0 in the backtrace, "frame 1" to switch to #1, etc.) and "print *plr_index". Also do, "print line". > int fbgetline(FBFILE *fbfl, char *line) > { Switch to the frame where we're in this function (it's the line with the crash, yes?) and try: print *fbfl print line print r print fbfl->buf print fbfl->size print w Look for anything that seems wrong. For instance, when printing the contents of a character array, junk characters *before* a '\0'; for a pointer, a NULL address (0x0); if fbfl->size is considerably longer than fbfl->buf, etc. Of course, the interactive debugging process is considerably easier to do, so if none of this really helps you, I would suggest looking into GDB documentation (Ceramic Mouse has some, I believe). If you think you've tracked down the problem, but don't know how to fix it, well, try fixing it first (keep backups :). That's also your second and third and fourth task. Around the fifth or sixth time, ask and maybe someone will help. :) -dak +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST