All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Honeywell <davidh@pianodisc.com>
To: alsa-devel@lists.sourceforge.net
Subject: LADSPA plugin segfault patch
Date: Fri, 13 Jun 2003 14:52:10 -0700	[thread overview]
Message-ID: <3EEA478A.8020606@pianodisc.com> (raw)

I have been experimenting with LADSPA plugins available from 
http://plugin.org.uk/ and other sources.  I found that many of the 
plugins caused a segfault during pcm playback, while some did not.  I 
traced the problem to LADSPA plugins which do not have an activate() 
function.  Apparently this function can be present, or set to NULL.

I found that whenever activate() or deactivate() are called in 
pcm_ladspa.c, a sanity check is performed before calling the function. 
EXCEPT in one instance.  When I added the sanity check to that instance, 
the segfaults disappeared and all of the plugins that I tried worked. 
Here is a patch for alsa-lib/src/pcm/pcm_ladspa.c:


--- pcm_ladspa.orig	2003-06-13 13:34:58.000000000 -0700
+++ pcm_ladspa.c	2003-06-13 13:32:02.000000000 -0700
@@ -412,7 +412,8 @@
  				return -EINVAL;
  			}
  			list_add_tail(&instance->list, &plugin->instances);
-			plugin->desc->activate(instance->handle);
+			if (plugin->desc->activate)
+			  plugin->desc->activate(instance->handle);
  			if (plugin->policy == SND_PCM_LADSPA_POLICY_DUPLICATE) {
  				err = snd_pcm_ladspa_connect_plugin_duplicate(plugin, 
&plugin->input, instance, idx);
  				if (err < 0) {


For anyone that's interested, my asound.conf looks like this:

pcm.pitch
{
    type ladspa
    slave.pcm "plughw:0,0"
    path "/usr/local/lib/ladspa"
    plugins
    [
       {
          label amPitchshift
          input
          {
             controls [ 1.059463 3 ]
          }
       }
    ]
}

There's one other problem that I haven't been able to solve yet.  When I 
use the latest ALSA library, I get error messages that complain about 
the version whenever I try to play pcm through the plugin:

ALSA lib dlmisc.c:107:(snd_dlsym_verify) unable to verify version for 
symbol ladspa_descriptor

Compiling --with-versioned= yes or no makes no difference in this case.
The only way I have been able to get around this problem is to use an 
old ALSA library (I'm currently using 0.9.0rc6).  I have tried many 
versions of the library.  The problem seems to have started with CVS 
version 1.11 of pcm_ladspa.c.  Version 1.10 uses dlopen(), dlclose(), 
and dlsym(), while version 1.11 uses snd_dlopen(), snd_dlclose(), and 
snd_dlsym().  This appears to be the only difference between the two 
versions.  Any help on this issue would be greatly appreciated, as I'd 
like to use the most up-to-date library.



-------------------------------------------------------
This SF.NET email is sponsored by: eBay
Great deals on office technology -- on eBay now! Click here:
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5

             reply	other threads:[~2003-06-13 21:52 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-13 21:52 David Honeywell [this message]
2003-06-14  7:33 ` LADSPA plugin segfault patch Jaroslav Kysela
2003-06-25 18:02   ` David Honeywell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3EEA478A.8020606@pianodisc.com \
    --to=davidh@pianodisc.com \
    --cc=alsa-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.