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
next 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.