On Sat, Mar 20, 2010 at 02:56:11PM +0100, Martin Kersten wrote:
> Stefan Manegold wrote:
> > On Sat, Mar 20, 2010 at 12:53:12PM +0000, Martin Kersten wrote:
> >> Update of /cvsroot/monetdb/MonetDB5/src/modules/kernel
> >> In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10537
> >>
> >> Modified Files:
> >>       Tag: Feb2010
> >>    batcast.mx 
> >> Log Message:
> >> Backport of possible dangerous double frees. No roll forward needed.
> > 
> > While your revised code looks indeed more efficient to me (as it allows
> > ATOMfromstr() --- well, at least strFromStr(); I cannot tell about other
> > "extern" (varsized) atoms --- to reuse a allocated temporary buffer),
> > I wonder whether/why the original experienced double frees?
> The implicit contract in gdk_atoms is to use v+len, i.e. pass a pre-alloced
> buffer and realloc upon need.
> Just freeing v without resetting it to NULL is bound to give problems
> with larger values becoming stored.
> 
> Setting v=NULL would have been the other option.

v was declared as
        ptr v = NULL;
with in the look body, and hence should have been initialized with each
iteration, shouldn't it?

Stefan

> > Called with v==NULL,
> > ATOMfromstr() --- again, I refer only to strFromStr(); FromStr functions for
> > other "extern" (varsized) atoms might behave differently; IMHO, we don't
> > have any "contract" or "policies" for FromStr() implementations --- would
> > allocate a buffer for the result,
> > ATOMput() copies the value from the buffer to the BAT heap,
> > and then the buffer is (was) freed.
> > 
> > Looks very sound to me.
> > 
> > What am I missing?
> > 
> > I would be thankful for any enlightment.
> > 
> > Stefan
> > 
> >> Index: batcast.mx
> >> ===================================================================
> >> RCS file: /cvsroot/monetdb/MonetDB5/src/modules/kernel/batcast.mx,v
> >> retrieving revision 1.31.2.7
> >> retrieving revision 1.31.2.8
> >> diff -u -d -r1.31.2.7 -r1.31.2.8
> >> --- batcast.mx     18 Feb 2010 01:04:05 -0000      1.31.2.7
> >> +++ batcast.mx     20 Mar 2010 12:53:10 -0000      1.31.2.8
> >> @@ -248,6 +248,8 @@
> >>    BAT *b,*bn;
> >>    BATiter bi;
> >>    BUN p, q, r = 0;
> >> +  ptr v = NULL; 
> >> +  int len = 0;
> >>  
> >>    @:getBATdescriptor(bid, b, "batca...@1")@
> >>    @:voidresultBAT(ty...@1,"batca...@1")@
> >> @@ -255,15 +257,12 @@
> >>  
> >>    BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
> >>    BATloop(b, p, q) {
> >> -          ptr v = NULL; 
> >> -          int len = 0;
> >> -
> >>            ATOMfromstr(ty...@1, &v, &len, (char *) BUNtvar(bi, p));
> >>            ATOMput(ty...@1, bn->T->vheap, Tloc(bn, r), v);
> >> -          if (ATOMextern(ty...@1))
> >> -                  GDKfree(v);
> >>            r++;
> >>    }
> >> +  if (ATOMextern(ty...@1))
> >> +          GDKfree(v);
> >>    BATsetcount(bn, BATcount(b));
> >>  bunins_failed:
> >>    BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
> >>
> >>
> >> ------------------------------------------------------------------------------
> >> Download Intel® Parallel Studio Eval
> >> Try the new software tools for yourself. Speed compiling, find bugs
> >> proactively, and fine-tune applications for parallel performance.
> >> See why Intel Parallel Studio got high marks during beta.
> >> http://p.sf.net/sfu/intel-sw-dev
> >> _______________________________________________
> >> Monetdb-checkins mailing list
> >> monetdb-check...@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins
> >>
> > 
> 
> 
> ------------------------------------------------------------------------------
> Download Intel® Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> Monetdb-checkins mailing list
> monetdb-check...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins
> 

-- 
| Dr. Stefan Manegold | mailto:stefan.maneg...@cwi.nl |
| CWI,  P.O.Box 94079 | http://www.cwi.nl/~manegold/  |
| 1090 GB Amsterdam   | Tel.: +31 (20) 592-4212       |
| The Netherlands     | Fax : +31 (20) 592-4199       |

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Monetdb-developers mailing list
Monetdb-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/monetdb-developers

Reply via email to