Date: Mon, 23 Feb 1998 04:12:05 +0700 (ICT) From: Sunthiti Patchararungruang <stt@TCP> To: hackers@FreeBSD.ORG Subject: Re: Signal 11 problem Message-ID: <Pine.BSF.3.96.980223040539.19496C-100000@pluto.cpe.ku.ac.th> In-Reply-To: <199802221942.LAA08014@dingo.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 22 Feb 1998, Mike Smith wrote: > > Dear Everybody, > > > > I have written a C program which has a function that need 10 > > arguments. I cannot run this program because the signal-11 occured when I > > call this function. However, when I reduce the number of arguments the > > program can be executed without error. I tried to change eliminated > > arguments to check which one causes the error but the program still > > completely operate. Therefore, I conclude that the problem come from stack > > management in FreeBSD. What should I do? > > Debug your program. Oddly enough, there are lots of people using > FreeBSD, and innumerable functions taking more than 10 arguments. > > Your conclusion is bogus; did you really believe that in all these > years, nobody had ever tried this before? > > You should start by applying the debugger (gdb) to your program and the > core file produced when it crashes. If you build your program with the > '-g' flag you will be able to determine the source line on which the > fault occurs. (This may not be the location of the bug itself, of > course.) > Sorry about my useless example. Here is the real problem. I cut it from wu-ftpd 2.4. All variables are proved to be correct. I use FreeBSD2.2.5. sprintf(msg, "%.24s %d %s %d %s %c %s %c %c %s ftp %d %s\n", ctime(&curtime), xfertime, remotehost, byte_count, namebuf, (type == TYPE_A) ? 'a' : 'b', opt_string(options), 'o', anonymous ? 'a' : 'r', anonymous ? guestpw : pw->pw_name, authenticated, authenticated ? authuser : "*" ); However, if I rewrite it as the following, the program now operates correctly. sprintf(tmsg, "%.24s %d %s %d\n", ctime(&curtime), xfertime, remotehost, byte_count ); strcat (tmsg, namebuf); sprintf(msg, "%s %c %s %c %c %s ftp %d %s\n", tmsg, (type == TYPE_A) ? 'a' : 'b', opt_string(options), 'o', anonymous ? 'a' : 'r', anonymous ? guestpw : pw->pw_name, authenticated, authenticated ? authuser : "*" ); Best Regards, Sunthiti Patchararungruang To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980223040539.19496C-100000>