On Wednesday, August 17, 2016 8:12:10 PM EDT termtech wrote:
> On Wednesday, August 17, 2016 9:45:09 PM EDT Michael Oswald wrote:
> > Hello,
> > I had a first look into the source code and also some small fixes for
> > issues reported by valgrind.
> > 
> > In three cases a delete was used when a delete [] should have been:
> > midiseq.cpp L 183:
> > 
> > should be:
> >      delete [] _clockAveragerStages;
> > 
> > wavepreview.cpp L 28 + 29:
> > 
> > should be:
> >     delete [] tmpbuffer;
> >     delete [] srcbuffer;
> 
> Fixed in git master.
> Thanks. ++credit in the ChangeLog.
> 
> > Then a few questions:
> > 
> > in lv2host.cpp:
> > 
> > from lines 2289:
> >        if(_nPname != 0)
> >        {
> >        
> >           _portName = lilv_node_as_string(_nPname);
> >           lilv_node_free(_nPname);
> >        
> >        }
> > 
> > and then:
> > 
> > line 2335:
> >           cPorts->push_back(LV2ControlPort(_port, i, 0.0f, _portName,
> > 
> > _portSym, _cType, isCVPort));
> > 
> > 
> > The thing is, valgrind reports reading from memory locations which have
> > been freed. In this case it concerns the _portName variable which is
> > just a const char* pointer.
> > Unfortunately, since the _nPname node is freed, the pointer points into
> > garbage since no copy is returned, which could potentially lead to a
> > crash. This is also for other variables kept, but pointing into a now
> > deleted node.
> > 
> > So most probably the node should be freed later on in the code. It
> > probably works most of the time when there are less allocations in
> > between, but in multi-threaded, multi-core you never know.
> 
> [@ Andrew] if you are watching, I hope this wasn't the type of thing
>  you meant when you said you had to hack LV2? I recall you said
>  something like that about memory problems.
> 
> Darn, I had hoped that by replacing the older built-in LV2 versions
>  with updated 'stock' or system version (user's configure choice)
>  that all would be well.
> 
> [@ Michael ] I made changes there recently, replacing Andrew's
>  LV2 version with a more recent 'stock' version.
> 
> I'll have to compare with old releases since I wiped out the old version.
> I wonder if this is what Andrew fixed.

False alarm, sorry for the noise.
Should have read the issue more closely.

Fix applied to git master.

In LV2Synth ctor, free _nPname later.

Try it out, let me know if any more valgrind trouble.

Thanks.
Tim.


------------------------------------------------------------------------------
_______________________________________________
Lmuse-developer mailing list
Lmuse-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lmuse-developer

Reply via email to