tinyzimmer / go-gst

Gstreamer bindings and utilities for golang
GNU Lesser General Public License v2.1
130 stars 37 forks source link

crashes and suspicious error messages when using message's stringer #25

Open Philippe-Torrelli-Ale opened 2 years ago

Philippe-Torrelli-Ale commented 2 years ago

Hi, I'm using the code found in the readme.md for the watcher of the pipeline bus, and when the watcher receives a message of type gst.MessageTag message, memory goes wrong, and "warning" are outputted to the console: [audiosink] TAG - taglist, language-code=(string)en, bitrate=(uint)64000; [audiosink] TAG - taglist, language-code=(string)en, bitrate=(uint)64000; [audiosink] TAG - taglist, language-code=(string)en, bitrate=(uint)64000; (gobot-newapi.exe:24688): GStreamer-CRITICAL **: 15:57:15.482: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed

(gobot-newapi.exe:24688): GStreamer-CRITICAL **: 15:57:15.483: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed


(i just create a simple pipeline connected to an appsink pipelineStr := "filesrc location=./Dweebs.movie.mp4 ! decodebin ! audioconvert ! volume volume=0.01 ! audio/x-raw,channels=2 ! opusenc ! appsink name=audiosink" gst.NewPipelineFromString(pipelineStr)

add a callback to the sink that does the pullSample, and the same AddWatch.. as you do in your example...

if I insist, the program eventually crashes. Tried with other pipelines, and noticed the same behavior.

Just excluding the gst.MessageTag from the switch in the watcher, (ie the stringer is not called on those messages) I have no issue.

I could try to do a clean sample for that, if that's not clear enough, but you should reproduce easily.