From owner-freebsd-questions@FreeBSD.ORG Fri Sep 19 20:14:09 2008 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1EA2B1065673 for ; Fri, 19 Sep 2008 20:14:09 +0000 (UTC) (envelope-from trashy_bumper@yahoo.com) Received: from web110506.mail.gq1.yahoo.com (web110506.mail.gq1.yahoo.com [67.195.8.254]) by mx1.freebsd.org (Postfix) with SMTP id EBD068FC14 for ; Fri, 19 Sep 2008 20:14:08 +0000 (UTC) (envelope-from trashy_bumper@yahoo.com) Received: (qmail 3936 invoked by uid 60001); 19 Sep 2008 20:14:08 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Mailer:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type:Message-ID; b=qVHGQzndlBe8AqhQcESY6TxhYsvuQwVWtcTkQUGW6sQxulO7qaCoVCWivhN5aLUxTxUCMcsPloWByXxh9okIIrk3S13WPe8ZYJwG68QzbECAji1d9xnAneGWTRMwFwt2j8JG8ooZ6y4JHCyP/ToC/8WEagPuMQf5Sg8NbN44kn0=; X-YMail-OSG: lxT8Td8VM1mt3iu.fIAQkIbBbCICpQ7rRiTv_VV3V_SUbgREV0YewTwC5W.TaUYtF_W9_XyQvglceAUHzoHw0TXV6C1QQvxwzl0gJHI4TG.iHKuFstdeWc.Ho1cD.0EvdeSsxsaqgPogHBvZTfy_B5Puwl5tUexEtf6DGwK7OfqA0ZJZHjbo Received: from [81.95.185.78] by web110506.mail.gq1.yahoo.com via HTTP; Fri, 19 Sep 2008 13:14:08 PDT X-Mailer: YahooMailWebService/0.7.218.2 Date: Fri, 19 Sep 2008 13:14:08 -0700 (PDT) From: Nash Nipples To: freebsd-questions@freebsd.org In-Reply-To: <37804.54110.qm@web57007.mail.re3.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Message-ID: <606875.3915.qm@web110506.mail.gq1.yahoo.com> Subject: Re: Segmentation fault when free X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: trashy_bumper@yahoo.com List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 20:14:09 -0000 --- On Fri, 9/19/08, Unga wrote: > From: Unga > Subject: Segmentation fault when free > To: freebsd-questions@freebsd.org > Date: Friday, September 19, 2008, 9:17 AM > Hi all > > I'm running FreeBSD 7 on i386. I have a C program > compiled with gcc 4.2.1 20070719. > > Logically my program is: > > char *a; > char *b; > char *c; > > while (cond) > { > a = f1(); /* malloc() and send a string */ > b = f2(); /* malloc() and send a string */ > > c = (char *) malloc(strlen(a) + strlen(b) + 1); > c[0] = '\0'; > > strcat(c, a); > strcat(c, b); > > free(a); > free(b); > } > > When it executes free(b), my program exits with > Segmentation fault: 11. The free(a) executes well. > > The problem is with free(b). Even swap free(b) first and > free(a) next, it still crashes at free(b). > > If I comment out free() lines, further down the program, > first few characters of one string get dropped when executes > a completely unrelated line. > > How could I bit more narrow down the problem? > > Many thanks in advance. > > Kind regards > Unga > > im affraid i didnt implement your request correctly but the program below did not crash my server under root in 60 seconds #include #include #include char *a; char *b; char *c; char *abd = "Hi, im a string 1\0"; char *bbd = "Hey, im a string 2\0"; char *f1(void){ char *ab; ab = malloc(strlen (abd)); memcpy(ab, abd, strlen(abd)); printf("f1(): %s\n", ab); return ab; } char *f2(void){ char *bb; bb = malloc(strlen (bbd)); memcpy(bb, bbd, strlen(bbd)); printf("f1(): %s\n", bb); return bb; } int main(void) { while (1) { a = f1(); /* malloc() and send a string */ b = f2(); /* malloc() and send a string */ c = (char *) malloc(strlen(a) + strlen(b) + 1); c[0] = '\0'; strcat(c, a); strcat(c, b); free(a); free(b); } }