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 755194 - GESClip: Crash related to <binding>
GESClip: Crash related to <binding>
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-editing-services
1.5.2
Other All
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-09-18 00:42 UTC by Kyrylo V. Polezhaiev
Modified: 2015-10-12 22:26 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
crash backtrace (3.58 KB, text/plain)
2015-09-18 00:42 UTC, Kyrylo V. Polezhaiev
Details
Ya gesclip crash (3.76 KB, text/plain)
2015-09-18 01:05 UTC, Kyrylo V. Polezhaiev
Details

Description Kyrylo V. Polezhaiev 2015-09-18 00:42:56 UTC
Created attachment 311591 [details]
crash backtrace

SIGSEGV when extracting timeline from project (before "loaded" signal).
Will provide additional info and way to reproduce soon.
Comment 1 Kyrylo V. Polezhaiev 2015-09-18 00:47:43 UTC
http://cgit.freedesktop.org/gstreamer/gst-editing-services/tree/ges/ges-clip.c#n185

container->children == 0
tmp points to some wrong address
Comment 2 Kyrylo V. Polezhaiev 2015-09-18 00:48:15 UTC
>> SIGSEGV when extracting timeline from project (before "loaded" signal).
I lied.
Comment 3 Kyrylo V. Polezhaiev 2015-09-18 00:49:03 UTC
Sorry, night here.

>> I lied.
I didn't.
Comment 4 Kyrylo V. Polezhaiev 2015-09-18 01:05:27 UTC
Created attachment 311592 [details]
Ya gesclip crash

In case I pause program in ges_container_remove crash moves to ges_timeline_trim_object_simple
Comment 5 Kyrylo V. Polezhaiev 2015-09-18 01:12:08 UTC
Second kind of crash is random and caused by bad memory, ignore it.
Looks like _destroy_auto_transition_cb causes clip to get rid of it's children.
Comment 6 Kyrylo V. Polezhaiev 2015-09-18 01:21:50 UTC
Sorry, it's night here. I feel stupid, I feel race for children between _set_duration and ges_container_remove, but I see no calls from different threads.
Comment 7 Thibault Saunier 2015-09-18 07:38:10 UTC
(In reply to Kyrylo V. Polezhaiev from comment #1)
> http://cgit.freedesktop.org/gstreamer/gst-editing-services/tree/ges/ges-clip.
> c#n185
> 
> container->children == 0
> tmp points to some wrong address

if container->children == NULL, we won't enter that loop.

(In reply to Kyrylo V. Polezhaiev from comment #0)
> Will provide additional info and way to reproduce soon.

Could you please ? :)
Comment 8 Kyrylo V. Polezhaiev 2015-09-18 08:15:26 UTC
>> if container->children == NULL, we won't enter that loop
You don't say! :)
Maybe someone sorts the list same time (after we enter)?
Comment 9 Kyrylo V. Polezhaiev 2015-09-18 08:20:44 UTC
Or removes an element (NULL case)
Comment 10 Thibault Saunier 2015-09-18 08:22:35 UTC
(In reply to Kyrylo V. Polezhaiev from comment #8)
> >> if container->children == NULL, we won't enter that loop
> You don't say! :)
> Maybe someone sorts the list same time (after we enter)?

Unless you are wrongly concidering GES in MT, that can't happen :)
Comment 11 Kyrylo V. Polezhaiev 2015-09-18 08:57:12 UTC
Something wrong with my logic. I spy for container->children update and when I execute pause / unpause program in debugger, step by step, everything works fine. But every call to either crashing function or to code changing children list is done in main thread via invocation. So this isn't race because we only have one thread operating with that list.
Comment 12 Thibault Saunier 2015-09-18 09:05:07 UTC
Also what version of GES do you use?

From you backtrace the segfault happens in 

  #0  0x00007ffff795c34a in ges_timeline_trim_object_simple (timeline=0x674ff0, element=0x675720, layers=0x0, edge=GES_EDGE_END, position=36000000000, napping=1) at ges-timeline.c:1495

But that line can not really segfault: http://cgit.freedesktop.org/gstreamer/gst-editing-services/tree/ges/ges-timeline.c#n1495 :)
Comment 13 Kyrylo V. Polezhaiev 2015-09-18 13:27:01 UTC
Sorry, I put incorrect version in description: my server uses GES 1.5.2:

http://cgit.freedesktop.org/gstreamer/gst-editing-services/tree/ges/ges-timeline.c?id=1.5.2#n1495
Comment 14 Thibault Saunier 2015-09-18 13:38:11 UTC
OK, how can I reproduce?
Comment 15 Kyrylo V. Polezhaiev 2015-09-18 14:24:18 UTC
Have no crash anymore after switch to 1.5.90.
Should I dig deeper or can we abandon this?
Problem is that I can not just give you .xges for ges-launch. It's hard to give you minimum stuff to reproduce an error.
Comment 16 Thibault Saunier 2015-09-18 14:31:18 UTC
If it works on master, I would say it is obselete?

Otherwise you should be able to give me .xges + media files no?
Comment 17 Kyrylo V. Polezhaiev 2015-09-18 14:45:30 UTC
Do we have some fix for something like this between 1.5.2 and 1.5.90?

>> Otherwise you should be able to give me .xges + media files no?
Sure.
Comment 18 Thibault Saunier 2015-09-18 14:48:11 UTC
Possibly, tbh I do not remember :)
Comment 19 Kyrylo V. Polezhaiev 2015-09-26 21:36:29 UTC
I have the same problem with 1.5.90 :-( now.

>> Unless you are wrongly concidering GES in MT, that can't happen :)
GES isn't MT enough? I should call every function from main loop?
Comment 20 Kyrylo V. Polezhaiev 2015-09-26 22:05:37 UTC
And I do. Only from signal handlers / bus messages.
Comment 21 Thibault Saunier 2015-09-27 08:41:28 UTC
Please try with 1.6 and provide a testcase.