Bug 92460

Summary: Wayland crash when called from gstreamer
Product: Wayland Reporter: Catalin <catalin.olteanu>
Component: waylandAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED NOTOURBUG QA Contact:
Severity: major    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Working time

Description Catalin 2015-10-14 12:36:26 UTC
Created attachment 118870 [details]
Working time

Hi,
I need some help on debugging the following crash. This is happening during playing a video(reusing the pipeline). Interesting that, the crash in happening when opening the second video(first is played without issues).

Attached to this bug are the traces at working time and bellow are the traces when crash is happened.

Thank you,
Catalin

Catchpoint 1 (signal SIGSEGV), get_next_argument (signature=0x1 <error: Cannot access memory at address 0x1>, details=details@entry=0x7ef0ba38) at src/connection.c:413
413	in src/connection.c
(gdb) 
(gdb) bt full
#0  get_next_argument (signature=0x1 <error: Cannot access memory at address 0x1>, details=details@entry=0x7ef0ba38) at src/connection.c:413
No locals.
#1  0x744051a8 in wl_argument_from_va_list (signature=<optimized out>, args=args@entry=0x7ef0ba68, count=count@entry=20, ap=..., ap@entry=...) at src/connection.c:476
        i = 0
        sig_iter = <optimized out>
        arg = {
          type = 112 'p', 
          nullable = 0
        }
#2  0x74403b68 in wl_proxy_marshal_constructor (proxy=0x73a1b5a0, opcode=opcode@entry=1, interface=0x74408660 <wl_registry_interface>) at src/wayland-client.c:625
        args = {{
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 22964292, 
            u = 22964292, 
            f = 22964292, 
            s = 0x15e6844 "\001", 
            o = 0x15e6844, 
            n = 22964292, 
            a = 0x15e6844, 
            h = 22964292
          }, {
            i = 2129705660, 
            u = 2129705660, 
            f = 2129705660, 
            s = 0x7ef0babc "\210/\\\001\002", 
            o = 0x7ef0babc, 
            n = 2129705660, 
            a = 0x7ef0babc, 
            h = 2129705660
          }, {
            i = 1994331484, 
            u = 1994331484, 
            f = 1994331484, 
            s = 0x76df155c <g_object_newv+500> "", 
            o = 0x76df155c <g_object_newv+500>, 
            n = 1994331484, 
            a = 0x76df155c <g_object_newv+500>, 
            h = 1994331484
          }, {
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 1938866096, 
            u = 1938866096, 
            f = 1938866096, 
            s = 0x7390bfb0 "@\277\220s", 
            o = 0x7390bfb0, 
            n = 1938866096, 
            a = 0x7390bfb0, 
            h = 1938866096
          }, {
            i = 1992127716, 
            u = 1992127716, 
            f = 1992127716, 
            s = 0x76bd74e4 "", 
            o = 0x76bd74e4, 
            n = 1992127716, 
            a = 0x76bd74e4, 
            h = 1992127716
          }, {
            i = 12, 
            u = 12, 
            f = 12, 
            s = 0xc <error: Cannot access memory at address 0xc>, 
            o = 0xc, 
            n = 12, 
            a = 0xc, 
            h = 12
          }, {
            i = 1984800976, 
            u = 1984800976, 
            f = 1984800976, 
            s = 0x764da8d0 "\b\220Mv", 
            o = 0x764da8d0, 
            n = 1984800976, 
            a = 0x764da8d0, 
            h = 1984800976
          }, {
            i = 1950458404, 
            u = 1950458404, 
            f = 1950458404, 
            s = 0x7441a224 "\314\020\001", 
            o = 0x7441a224, 
            n = 1950458404, 
            a = 0x7441a224, 
            h = 1950458404
          }, {
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 42192, 
            u = 42192, 
            f = 42192, 
            s = 0xa4d0 "adata_into_database", 
            o = 0xa4d0, 
            n = 42192, 
            a = 0xa4d0, 
            h = 42192
          }, {
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 628, 
            u = 628, 
            f = 628, 
            s = 0x274 <error: Cannot access memory at address 0x274>, 
            o = 0x274, 
            n = 628, 
            a = 0x274, 
            h = 628
          }, {
            i = 1991329792, 
            u = 1991329792, 
            f = 1991329792, 
            s = 0x76b14800 <malloc+116> "", 
            o = 0x76b14800 <malloc+116>, 
            n = 1991329792, 
            a = 0x76b14800 <malloc+116>, 
            h = 1991329792
          }, {
            i = 0, 
            u = 0, 
            f = 0, 
            s = 0x0, 
            o = 0x0, 
            n = 0, 
            a = 0x0, 
            h = 0
          }, {
            i = 22818696, 
            u = 22818696, 
            f = 22818696, 
            s = 0x15c2f88 "\260\277\220s\001", 
            o = 0x15c2f88, 
            n = 22818696, 
            a = 0x15c2f88, 
            h = 22818696
          }}
        ap = {
          __ap = 0x7ef0bad4
        }
#3  0x7440fb80 in wl_display_get_registry (wl_display=<optimized out>) at /home/uidj9537/DevKits/10.06.rayl-std-10-07/tmp/staging/armv7a-mv-linux/usr/include/wayland-client-protocol.h:189
        registry = <optimized out>
#4  gst_wl_display_new_existing (display=<optimized out>, take_ownership=take_ownership@entry=0, error=0x0, error@entry=0x7ef0bb2c) at wldisplay.c:226
        self = 0x15c2f88
        err = 0x0
        i = <optimized out>
        __func__ = "gst_wl_display_new_existing"
#5  0x7440c674 in gst_wayland_sink_set_display_from_context (sink=sink@entry=0x7240a9c0, context=context@entry=0x7241a290) at gstwaylandsink.c:245
        display = <optimized out>
        error = 0x0
        __FUNCTION__ = "gst_wayland_sink_set_display_from_context"
#6  0x7440dedc in gst_wayland_sink_set_context (element=element@entry=0x7240a9c0, context=context@entry=0x7241a290) at gstwaylandsink.c:400
        sink = 0x7240a9c0
        __FUNCTION__ = "gst_wayland_sink_set_context"
#7  0x766910b4 in gst_element_set_context (element=0x7240a9c0, context=0x7241a290) at gstelement.c:3048
        oclass = <optimized out>
        __func__ = "gst_element_set_context"
        __PRETTY_FUNCTION__ = "gst_element_set_context"
#8  0x744a8a64 in activate_sink_bus_handler (bus=bus@entry=0x7240f6f8, msg=msg@entry=0x6edd9a18, playbin=playbin@entry=0x15e6838) at gstplaybin2.c:4224
        tmp = <optimized out>
        tmp_type = <optimized out>
        context_type = 0x15e72c0 "GstWaylandDisplayHandleContextType"
        l = 0x73907650
#9  0x76677588 in gst_bus_post (bus=bus@entry=0x7240f6f8, message=message@entry=0x6edd9a18) at gstbus.c:324
        reply = GST_BUS_PASS
        handler = 0x744a88c8 <activate_sink_bus_handler>
        emit_sync_message = 0
        handler_data = 0x15e6838
        __func__ = "gst_bus_post"
        __PRETTY_FUNCTION__ = "gst_bus_post"
#10 0x7668bc00 in gst_element_post_message_default (element=0x7240a9c0, message=0x6edd9a18) at gstelement.c:1688
        bus = 0x7240f6f8
        result = 0
        __func__ = "gst_element_post_message_default"
        __PRETTY_FUNCTION__ = "gst_element_post_message_default"
#11 0x7668f254 in gst_element_post_message (element=element@entry=0x7240a9c0, message=message@entry=0x6edd9a18) at gstelement.c:1728
        klass = 0x7390b028
#12 0x7440c8ac in gst_wayland_sink_find_display (sink=sink@entry=0x7240a9c0) at gstwaylandsink.c:281
        query = <optimized out>
        msg = 0x6edd9a18
        context = 0x0
        error = 0x0
        ret = 1
        __FUNCTION__ = "gst_wayland_sink_find_display"
#13 0x7440df1c in gst_wayland_sink_change_state (element=0x7240a9c0, transition=GST_STATE_CHANGE_NULL_TO_READY) at gstwaylandsink.c:322
        sink = 0x7240a9c0
        ret = GST_STATE_CHANGE_SUCCESS
#14 0x766901f4 in gst_element_change_state (element=element@entry=0x7240a9c0, transition=transition@entry=GST_STATE_CHANGE_NULL_TO_READY) at gstelement.c:2602
        oclass = <optimized out>
        ret = GST_STATE_CHANGE_SUCCESS
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#15 0x766908ac in gst_element_set_state_func (element=0x7240a9c0, state=<optimized out>) at gstelement.c:2558
        current = <optimized out>
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_NULL_TO_READY
        old_ret = <optimized out>
        __func__ = "gst_element_set_state_func"
        __PRETTY_FUNCTION__ = "gst_element_set_state_func"
#16 0x7668ff10 in gst_element_set_state (element=element@entry=0x7240a9c0, state=state@entry=GST_STATE_READY) at gstelement.c:2459
        oclass = 0x7390b028
        result = GST_STATE_CHANGE_FAILURE
        __func__ = "gst_element_set_state"
#17 0x744a8858 in activate_sink (playbin=playbin@entry=0x15e6838, sink=0x7240a9c0, activated=0x7ef0bda8, activated@entry=0x7ef0bda0) at gstplaybin2.c:4278
        state = <optimized out>
        bus = 0x7240f6f8
        sret = <optimized out>
        ret = 0
#18 0x744a9e30 in activate_group (target=22964280, group=0x15e6af0, playbin=0x15e6838) at gstplaybin2.c:5028
        flags = <optimized out>
        audio_sink_activated = 1
        text_sink_activated = 0
        uridecodebin = 0x0
        suburidecodebin = 0x0
        video_sink_activated = 0
#19 setup_next_source (playbin=playbin@entry=0x15e6838, target=22964280, target@entry=GST_STATE_READY) at gstplaybin2.c:5414
        new_group = <optimized out>
        old_group = <optimized out>
        __PRETTY_FUNCTION__ = "setup_next_source"
#20 0x744ab024 in gst_play_bin_change_state (element=0x15e6838, transition=GST_STATE_CHANGE_READY_TO_PAUSED) at gstplaybin2.c:5502
        ret = <optimized out>
        playbin = 0x15e6838
        do_save = 0
        __PRETTY_FUNCTION__ = "gst_play_bin_change_state"
#21 0x766901f4 in gst_element_change_state (element=element@entry=0x15e6838, transition=<optimized out>) at gstelement.c:2602
        oclass = <optimized out>
        ret = GST_STATE_CHANGE_SUCCESS
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#22 0x76690c48 in gst_element_continue_state (element=element@entry=0x15e6838, ret=ret@entry=GST_STATE_CHANGE_SUCCESS) at gstelement.c:2312
        old_ret = <optimized out>
        old_state = <optimized out>
        old_next = <optimized out>
        current = <optimized out>
        next = <optimized out>
        pending = <optimized out>
        transition = <optimized out>
        __PRETTY_FUNCTION__ = "gst_element_continue_state"
#23 0x76690364 in gst_element_change_state (element=element@entry=0x15e6838, transition=transition@entry=GST_STATE_CHANGE_NULL_TO_READY) at gstelement.c:2639
        oclass = <optimized out>
        ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#24 0x766908ac in gst_element_set_state_func (element=0x15e6838, state=<optimized out>) at gstelement.c:2558
        current = <optimized out>
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_NULL_TO_READY
        old_ret = <optimized out>
        __func__ = "gst_element_set_state_func"
        __PRETTY_FUNCTION__ = "gst_element_set_state_func"
#25 0x7668ff10 in gst_element_set_state (element=element@entry=0x15e6838, state=state@entry=GST_STATE_PLAYING) at gstelement.c:2459
        oclass = 0x73afa3a8
        result = GST_STATE_CHANGE_FAILURE
        __func__ = "gst_element_set_state"
#26 0x76c99478 in set_gst_player_state (pipeline=0x15e6838, newstate=GST_STATE_PLAYING) at src/libme_gst.c:220
        rval = <optimized out>
        newstate = GST_STATE_PLAYING
        pipeline = 0x15e6838
        rval = GST_STATE_CHANGE_FAILURE
#27 0x76c9aa50 in libmeSetPlaybackState (handle=0x76ca6318 <av_engine>, state=<optimized out>, speed=<optimized out>) at src/libme_gst.c:1899
        ret = <optimized out>
        current_mms_state = MMS_PLAYBACK_STOPPED
        current_pos = 0
        current_len = 0
        engine = 0x76ca6318 <av_engine>
        __FUNCTION__ = "libmeSetPlaybackState"
#28 0x0000e208 in play_control (state=state@entry=MMS_PLAYBACK_PLAYING, speed=speed@entry=1000) at pb_engine/media_player_gst.c:342
        __FUNCTION__ = "play_control"
        __func__ = "play_control"
        ret_val = <optimized out>
#29 0x00014408 in media_playback_object_play_track (track=<optimized out>, position=0, auto_play=1, error=0x7ef0c42c, request_type=<optimized out>, obj=<optimized out>) at media_player_dbus.c:1170
        path = "/media/F769-ED9A/MediaBatch/03 720x480 - MPEG-4 ASP.mp4", '\000' <repeats 968 times>
        err = MMS_G_ERROR_NONE
        requested_track_id = 2622179505
#30 0x0000f508 in dbus_glib_marshal_media_playback_object_BOOLEAN__INT_BOXED_INT_BOOLEAN_POINTER (closure=<optimized out>, return_value=0x7ef0c4c8, n_param_values=<optimized out>, param_values=0x1987f00, invocation_hint=0x0, marshal_data=0x14464 <media_playback_object_play_track>) at ./inc/plugin-playback-dbus-server.h:100
        callback = 0x14464 <media_playback_object_play_track>
        cc = <optimized out>
        data1 = 0x15c23d0
        data2 = <optimized out>
        v_return = <optimized out>
        __FUNCTION__ = "dbus_glib_marshal_media_playback_object_BOOLEAN__INT_BOXED_INT_BOOLEAN_POINTER"
#31 0x76e5bffc in ?? () from /usr/lib/libdbus-glib-1.so.2
No symbol table info available.
#32 0x76e319c0 in ?? () from /usr/lib/libdbus-1.so.3
No symbol table info available.
#33 0x76e27a08 in dbus_connection_dispatch () from /usr/lib/libdbus-1.so.3
No symbol table info available.
#34 0x76e59920 in ?? () from /usr/lib/libdbus-glib-1.so.2
No symbol table info available.
#35 0x76d20bec in g_main_dispatch (context=0x74300f48) at gmain.c:3122
        dispatch = 0x76e59908
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x0
        callback = 0x0
        cb_funcs = <optimized out>
        cb_data = 0x76d20bec <g_main_context_dispatch+448>
        need_destroy = <optimized out>
        source = 0x15c88a0
        current = 0x15ad8a0
        i = 0
#36 g_main_context_dispatch (context=context@entry=0x74300f48) at gmain.c:3737
No locals.
#37 0x76d20e04 in g_main_context_iterate (context=0x74300f48, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3808
        max_priority = 0
        timeout = 0
        some_ready = 1
        nfds = 2
        allocated_nfds = <optimized out>
        fds = <optimized out>
#38 0x76d2109c in g_main_loop_run (loop=0x15c8998) at gmain.c:4002
No locals.
#39 0x0000c9dc in main (argc=2129708876, argv=<optimized out>) at media_player_main.c:854
        dev_prefix = 0x0
        log_id = "msc0"
        opt = <optimized out>
        len = <optimized out>
        wait_for_mount_flag = <optimized out>
        verbose = <optimized out>
        launch_partition = <optimized out>
        eng_thread = 1938814048
        long_options = {{
            name = 0x1ce4c "dev_node", 
            has_arg = 1, 
            flag = 0x0, 
            val = 100
          }, {
            name = 0x1ce55 "sys_node", 
            has_arg = 1, 
            flag = 0x0, 
            val = 113
          }, {
            name = 0x1ce62 "serial", 
            has_arg = 1, 
            flag = 0x0, 
            val = 115
          }, {
            name = 0x1ce5e "sys_serial", 
            has_arg = 1, 
            flag = 0x0, 
            val = 97
          }, {
            name = 0x1ce69 "product", 
            has_arg = 1, 
            flag = 0x0, 
            val = 112
          }, {
            name = 0x1ce71 "vendor", 
            has_arg = 1, 
            flag = 0x0, 
            val = 111
          }, {
            name = 0x1ce78 "label", 
            has_arg = 1, 
            flag = 0x0, 
            val = 108
          }, {
            name = 0x1ce7e "fs_type", 
            has_arg = 1, 
            flag = 0x0, 
            val = 102
          }, {
            name = 0x1ce86 "mount_point", 
            has_arg = 1, 
            flag = 0x0, 
            val = 109
          }, {
            name = 0x1ce92 "partition", 
            has_arg = 1, 
            flag = 0x0, 
            val = 110
          }, {
            name = 0x1ce9c "uuid", 
            has_arg = 1, 
            flag = 0x0, 
            val = 117
          }, {
            name = 0x1cea1 "verbose", 
            has_arg = 0, 
            flag = 0x0, 
            val = 118
          }, {
            name = 0x1cea9 "help", 
            has_arg = 0, 
            flag = 0x0, 
            val = 104
          }, {
            name = 0x0, 
            has_arg = 0, 
            flag = 0x0, 
            val = 0
          }}
        __FUNCTION__ = "main"
(gdb)
Comment 1 Daniel Stone 2015-10-15 08:38:10 UTC
This is a waylandsink issue: I'm pretty sure that the issue is that the wl_display is destroyed when it should not be, hence why it fails the second time.

Which version of GStreamer are you using? If you're able to try a quite current version, could you please give that a go? If not, or if it is a current version, could you please file a bug on gnome.org against GStreamer - if you could please CC George Kiagiadakis and myself too, that'd be great. Thanks, and sorry for the confusion.
Comment 2 Catalin 2015-10-15 09:02:56 UTC
We use Gstreamer 1.4.5 version. Because of glib dependency, I'm not able to modify the working version to latest. All I'm able to do is to merge some specific code lines or apply a patch.

I'll fallow your advice.

Thank you !

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.