GNOME Bugzilla – Bug 605088
crash when there's a transcoding error
Last modified: 2018-05-24 14:54:22 UTC
When drag and dropping a track to my ipod, I got a rhythmbox crash. I think it's because it can't write to the iPod for some reason. Here is the (partial) backtrace:
+ Trace 219706
What happens is that rb-encoder-gst.c:copy_track fails, so we go in the if (error) { } block (around line 1064 in that file). From this block, and "error" signal is emitted by the RbEncoder instance. This signal is caught in rb-removable-media-manager.c:error_cb which then cancels the encoding with rb_encoder_cancel. The gst backend emits a RbEncoder::completed signal from its rb_encoder_gst_cancel implemenation, which is caught by rb-removable-media-manager.c:completed_cb. And this callback does a g_object_unref (G_OBJECT (encoder)) which drops the last ref which was held on the encoder object. So when we go back from the rb_encoder_gst_emit_error call in the error handling block mentioned above, the RbGstEncoder object has been destroyed and bad things happen when we do try to use it after that in that same block. Maybe the whole if (enc->priv->pipeline == NULL) { rb_encoder_gst_emit_completed (enc); } else { /* this will unref the pipeline and call emit_completed */ rb_encoder_gst_cancel (encoder); } block can be dropped, but it seems we wouldn't call rb_encoder_gst_emit_completed (enc) when the pipeline is NULL
*** Bug 590145 has been marked as a duplicate of this bug. ***
-- GitLab Migration Automatic Message -- This bug has been migrated to GNOME's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/rhythmbox/issues/854.