[gst-devel] Possible gstreamer errors: volume, dispose, loop detected - oh my!

Ryan Kelln ryankelln at gmail.com
Fri Sep 12 20:43:00 CEST 2008


Hi Gstreamer devs,
(sorry to mods, I tried posting this without subscribing first, you can
delete/disapprove the post waiting for approval)

I'm using gstreamer through gstreamer-java inside of processing. I'm
getting some odd errors and warnings and eventually a crash (perhaps a
null pointer). I'm hoping you might have a bit of insight or guidance
for how to avoid these problems or what I could do to fix them. Thanks.

Environment:
Ubuntu 8.04
gstreamer-team ppa  (https://edge.launchpad.net/~gstreamer-team/+archive)
Sun Java 1.06_07
Processing 148
gstreamer-java 0.8

The errors happen in a variety of orders, here is an example of each:

** (GSVideo:9501): CRITICAL **: volume_transform_ip: assertion
`this->process != NULL' failed

(GSVideo:9501): GStreamer-CRITICAL **:
Trying to dispose element test, but it is not in the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.

(GSVideo:9501): GStreamer-WARNING **: loop detected in the graph of bin
GStreamer Audio Data Extractor: mysoundfile.wav!!

Then eventually Java will crash with a SIGSEGV fault in a native thread
which I'm assuming is gstreamer. Looks like it is accessing a null pointer.


Description of what I'm doing:
Custom software that is playing back multiple audio files at once. It
loads approx. 11 sound files (all wavs or aif errors and crash remain
the same) and starts and stops the files quite often. It also checks the
current volume and changes the volume each update (i.e. constantly
adjusting the volume). In addition I'm using the audiopanorama plug-in
to do constant panning.

Occasionally I will get the "loop detected" warning on one or two of the
sound files, but which sound file it is seems to change and it doesn't
happen every run. The error appears to occur when the sound is first
played, not when the object is created. The program continues to
function after receiving this warning although the sound file doesn't play.

I get the "volume_transform_ip" error quite often (every 5 minutes?) but
the program doesn't immediately crash.

I get the "dispose element test" error only on a multi-core processor
(AMD Phenom) but not on an equivalent machine with just a single core.
Again, this doesn't cause an immediate crash. As far as I know I'm not
make any elements named "test", and I'm not disposing of anything until
the program ends but I am starting and stopping the audio streams.

Things I've tried:
I've grepped the source for these and found the loop detected error in
gstbin.c (gst_bin_sort_iterator_next() )and the "dispose element not
NULL" in gstelement.c (gst_element_dispose() ) but I can't locate the
"volume_transform_ip" error.

I've tired running the program with sounds disabled and it runs without
errors or crashes (for hours). If I only update the volumes of the
sounds every other update (or every 5, etc) it seems to help, although
its hard to tell if the errors occur that much slower or even more
infrequently. If I don't adjust the volume at all it seems to run fine
(survived 10+ mins without errors, still running tests).

Some possible problem areas:
When is it safe to set and check the volume (especially in regards to
starting and stopping sounds)? Is it safe to set and check the volume in
the same update... multiple times?

I'm not sure if the errors are in gstreamer or just my use of it? I've
got to deliver this project really soon so workarounds might be the best
option if the error is gstreamers. If you're sure that gstreamer is at
fault I'd love some tips on how to provide more info (I'm not sure how
I'd debug gstreamer through all these other layers) and write up a bug
report.

Thanks very much,
Ryan




More information about the gstreamer-devel mailing list