View Issue Details

IDProjectCategoryView StatusLast Update
0006772ardourbugspublic2020-04-19 20:17
Reporterrwman Assigned Tox42  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
PlatformlinuxOSopenSUSEOS Version13.2
Product Version4.6 
Summary0006772: crash when clicked "plugin analysis" on any linux-vst plugin
DescriptionArdour version: 4.4, 4.6 or Nightly Ardour-4.6.334-dbg (64-bit)

Steps to reproduce:
* create new session
* add lxvst plugin to master bus (or create any track for that)
* right-click on plugin, choose "edit with generic controls"
* in the plugin configuration dialog click "plugin analysis" to uncollapse graph.

Ardour crashed: segmentation fault
Traceback: http://susepaste.org/49940315

I only tried 64-bit versions of Ardour. The issue said to be non-existent on 32-bit Ardour (in my original report: https://sourceforge.net/p/zynaddsubfx)/bugs/126/
TagsNo tags attached.

Activities

x42

2016-02-15 22:29

administrator   ~0017944

This is a Problem with the Plugin in question not being able to cope with variable buffersizes.

When analysis is active, Ardour runs it alternatively at current buffesize and 8192 samples (for analysis). Ardour tells the plugin so (in VST's case "effSetBlockSize").

This plugin is not alone there are a couple of others which crash under the same condition.

rwman

2016-02-15 22:31

reporter   ~0017945

So this bug should be addressed by plugin developers?

x42

2016-02-15 23:27

administrator   ~0017946

I don't know yet. needs more investigation.

elgoun

2016-02-18 01:44

reporter   ~0017966

Last edited: 2016-02-18 13:14

Found why.

In VSTPlugin::connect_and_run, the output buffer passed to _plugin->processReplacing is from scratch buffers (its size is the engine bufsize) and should be from bufs passed in parameters.
When we ask plugin analyse, connect_and_run is called with nframes==4096,
consequently the output buffer is too tiny.

Furthermore, this issue is present in LV2Plugin and LadspaPlugin too but hidden by the fact that "valid" set by out_map.get() is always(often?) true;

See:

vst_plugin.cc: L568,L595
lv2_plugin.cc: L2096
ladspa_plugin.cc: L595

Problem can exists for inputs buffers too if valid==false

I submited a pull request to mimic the behavior of ladspa and lv2 about connecting outputs ports to scratch buffer or bufs passed in parameters.

x42

2016-02-21 20:51

administrator   ~0017987

LADSPA and LV2 do support in-place processing. Input and Output buffers are identical.

VST cannot do that. It's probably a mistake to allow plugin analysis of VSTs (it was disabled for a long time and probably slipped in by accident in the GUI)

x42

2016-06-26 14:29

administrator   ~0018259

Is this still an issue with recent git 5.0-pre ?
Plugin pin connections and buffers were completely overhauled in late 4.7-xxx.

x42

2020-04-06 18:55

administrator   ~0021218

Various fixes for VST as well as plugin-analysis have been made since the original report. And analysis is known to work for many VST plugins.

system

2020-04-19 20:17

developer   ~0023584

Issue has been closed automatically, by Trigger Close Plugin.
Feel free to re-open with additional information if you think the issue is not resolved.

Issue History

Date Modified Username Field Change
2016-02-15 21:59 rwman New Issue
2016-02-15 22:29 x42 Note Added: 0017944
2016-02-15 22:31 rwman Note Added: 0017945
2016-02-15 23:27 x42 Note Added: 0017946
2016-02-18 01:44 elgoun Note Added: 0017966
2016-02-18 02:26 elgoun Note Edited: 0017966
2016-02-18 13:14 elgoun Note Edited: 0017966
2016-02-18 13:15 elgoun Status new => confirmed
2016-02-21 20:51 x42 Note Added: 0017987
2016-06-26 14:29 x42 Note Added: 0018259
2016-06-26 14:29 x42 Assigned To => x42
2016-06-26 14:29 x42 Status confirmed => feedback
2020-04-06 18:55 x42 Status feedback => resolved
2020-04-06 18:55 x42 Resolution open => fixed
2020-04-06 18:55 x42 Note Added: 0021218
2020-04-19 20:17 system Note Added: 0023584
2020-04-19 20:17 system Status resolved => closed