After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 641246 - No checks for availabily of GNonLin at runtime
No checks for availabily of GNonLin at runtime
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-editing-services
git master
Other Linux
: Normal major
: 0.10.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-02-02 14:53 UTC by Vincent Penquerc'h
Modified: 2011-02-08 15:45 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
ges: Check that the gnonlin elements are present at initialization time (2.84 KB, patch)
2011-02-07 12:20 UTC, Vincent Penquerc'h
rejected Details | Review
ges: Check that the gnonlin elements are present at initialization time (2.60 KB, patch)
2011-02-08 11:51 UTC, Vincent Penquerc'h
committed Details | Review

Description Vincent Penquerc'h 2011-02-02 14:53:30 UTC
The following command wedges the pipeline after throwing a few errors.
I also tried with a mkv file and a mp4 file, with same resulsts.
I have to press control C to stop the program.
No screenshots are generated at all.
I'm not 100% sure this command line is correct, I've not found any manpage or documentation apart from the --help screen.
Latest git from git.freedesktop.org as of now.

$ ./tools/ges-launch-0.10  -m 5 ~/Streams/fry.ogv  0 0
save_path: (null)
load_path: (null)

(lt-ges-launch-0.10:27458): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(lt-ges-launch-0.10:27458): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(lt-ges-launch-0.10:27458): GStreamer-CRITICAL **: gst_bin_add: assertion `GST_IS_ELEMENT (element)' failed

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed

(lt-ges-launch-0.10:27458): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(lt-ges-launch-0.10:27458): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(lt-ges-launch-0.10:27458): GStreamer-CRITICAL **: gst_bin_add: assertion `GST_IS_ELEMENT (element)' failed

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed
Adding file:///home/v/Streams/fry.ogv inpoint:0:00:00.000000000 duration:0:00:00.000000000
thumbnailing every 5.000000 seconds

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed

(lt-ges-launch-0.10:27458): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed
^C
Comment 1 Edward Hervey 2011-02-02 15:18:08 UTC
Works fine here.

You can figure out where it crashes initially with :
> ulimit -c unlimited
> G_DEBUG=fatal_warnings ./tool.....
Comment 2 Vincent Penquerc'h 2011-02-02 15:31:07 UTC


  • #0 raise
    from /lib64/libc.so.6
  • #1 abort
    from /lib64/libc.so.6
  • #2 g_logv
    from /usr/lib64/libglib-2.0.so.0
  • #3 g_log
    from /usr/lib64/libglib-2.0.so.0
  • #4 g_type_check_instance
    from /usr/lib64/libgobject-2.0.so.0
  • #5 g_signal_connect_data
    from /usr/lib64/libgobject-2.0.so.0
  • #6 ges_track_init
    at ges-track.c line 180
  • #7 g_type_create_instance
    from /usr/lib64/libgobject-2.0.so.0
  • #8 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #9 g_object_newv
    from /usr/lib64/libgobject-2.0.so.0
  • #10 g_object_new_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #11 g_object_new
    from /usr/lib64/libgobject-2.0.so.0
  • #12 ges_track_new
    at ges-track.c line 206
  • #13 create_timeline
    at ges-launch.c line 158
  • #14 create_pipeline
    at ges-launch.c line 279
  • #15 main
    at ges-launch.c line 459
  • #6 ges_track_init
    at ges-track.c line 180
175       self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
176           GES_TYPE_TRACK, GESTrackPrivate);
177
178       self->priv->composition = gst_element_factory_make ("gnlcomposition", NULL);
179
180       g_signal_connect (self->priv->composition, "pad-added",
181           (GCallback) pad_added_cb, self);
182       g_signal_connect (self->priv->composition, "pad-removed",
183           (GCallback) pad_removed_cb, self);
184
Comment 3 Edward Hervey 2011-02-02 15:40:25 UTC
You're missing gnonlin.

Maybe ges_init() should check whether the gnonlin elements are available, and if not error out.

Renaming the bug title accordingly.
Comment 4 Vincent Penquerc'h 2011-02-02 15:43:01 UTC
Right, with gnonlin installed, it now works. Sorry I did not realize before :)
Comment 5 Vincent Penquerc'h 2011-02-07 12:20:57 UTC
Created attachment 180288 [details] [review]
ges: Check that the gnonlin elements are present at initialization time

This avoids hanging with no obvious cause later when they're not.
Comment 6 Vincent Penquerc'h 2011-02-07 12:21:45 UTC
Note that I made the required version 0.0.0, you may want to update those in case you know older versions are not suitable.
Comment 7 Edward Hervey 2011-02-08 11:04:24 UTC
Review of attachment 180288 [details] [review]:

Apart from the useless "multi-element-check", looks good.

::: ges/ges.c
@@ +43,3 @@
+    "gnloperation"
+  };
+  for (i = 0; i < G_N_ELEMENTS (plugins); i++) {

No need to check for all elements. Just checking for gnlcomposition will suffice.

::: ges/ges.h
@@ +64,3 @@
 G_BEGIN_DECLS
 
+gboolean ges_init (void);

Even though I don't like switching the API ... this shouldn't cause any problems (since noone was checking the return value previously)
Comment 8 Vincent Penquerc'h 2011-02-08 11:51:53 UTC
Created attachment 180381 [details] [review]
ges: Check that the gnonlin elements are present at initialization time

This avoids hanging with no obvious cause later when they're not.
Comment 9 Edward Hervey 2011-02-08 15:44:15 UTC
Commited with min gnl required version of 0.10.16

commit 857142a15d3a351ee4a0d621a55bd812ee26576c
Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Date:   Mon Feb 7 12:19:18 2011 +0000

    ges: Check that the gnonlin elements are present at initialization time
    
    This avoids hanging with no obvious cause later when they're not.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=641246