Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-plugins-bad gst-plugins-bad
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 982
    • Issues 982
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 125
    • Merge requests 125
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GStreamer
  • gst-plugins-badgst-plugins-bad
  • Issues
  • #1036
Closed
Open
Created Jul 29, 2019 by Philippe Normand@philn🥑Maintainer

player: Deadlock in uri-loaded signal when no signal dispatcher is supplied to GstPlayer

I'm actually not entirely sure it's a bug, one could argue it's an application-side issue, but here it goes. Attaching a test-case.

(gdb) t a a bt

Thread 2 (Thread 0x7ffff7414700 (LWP 20949)):
#0  0x00007ffff7ab2f59 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff7c3a62c in g_mutex_lock_slowpath (mutex=mutex@entry=0x5555557c6088) at ../../../glib/gthread-posix.c:1320
#2  0x00007ffff7c3ae82 in g_mutex_lock (mutex=mutex@entry=0x5555557c6088) at ../../../glib/gthread-posix.c:1344
#3  0x00007ffff7f71f8e in gst_player_pause (self=0x5555557c6000 [GstPlayer]) at gstplayer.c:3190
#4  0x000055555555520d in uri_loaded_cb (player=0x5555557c6000 [GstPlayer], uri=0x7ffff001d0d0 "file:///home/phil/Videos/Agent 327.mp4", user_data=0x0) at /home/phil/player-deadlock.c:8
#8  0x00007ffff7cef97f in <emit signal ??? on instance 0x5555557c6000 [GstPlayer]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447
    #5  0x00007ffff7cd2c8d in g_closure_invoke (closure=0x5555557c8b90, return_value=0x0, n_param_values=2, param_values=0x7ffff7413aa0, invocation_hint=0x7ffff7413a20) at ../../../gobject/gclosure.c:810
    #6  0x00007ffff7ce6365 in signal_emit_unlocked_R (node=node@entry=0x55555558a300, detail=detail@entry=0, instance=instance@entry=0x5555557c6000, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffff7413aa0) at ../../../gobject/gsignal.c:3635
    #7  0x00007ffff7cef2be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffff7413c70) at ../../../gobject/gsignal.c:3391
#9  0x00007ffff7f7900d in gst_player_signal_dispatcher_dispatch (self=<optimized out>, player=<optimized out>, emitter=0x7ffff7f6f3b0 <uri_loaded_dispatch>, data=0x7ffff0002040, destroy=0x7ffff7f6f200 <uri_loaded_signal_data_free>) at gstplayer-signal-dispatcher.c:46
#10 0x00007ffff7f76924 in gst_player_set_uri_internal (user_data=0x5555557c6000) at gstplayer.c:599
#11 0x00007ffff7bf0dd8 in g_main_dispatch (context=0x5555557c5c10) at ../../../glib/gmain.c:3182
#12 0x00007ffff7bf0dd8 in g_main_context_dispatch (context=context@entry=0x5555557c5c10) at ../../../glib/gmain.c:3847
#13 0x00007ffff7bf11c8 in g_main_context_iterate (context=0x5555557c5c10, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920
#14 0x00007ffff7bf14c2 in g_main_loop_run (loop=0x5555557c3fd0) at ../../../glib/gmain.c:4116
#15 0x00007ffff7f76378 in gst_player_main (data=0x5555557c6000) at gstplayer.c:2970
#16 0x00007ffff7c19415 in g_thread_proxy (data=0x55555568d540) at ../../../glib/gthread.c:784
#17 0x00007ffff7b87fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#18 0x00007ffff7ab84cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7ffff7415b80 (LWP 20885)):
#0  0x00007ffff7aad819 in __GI___poll (fds=0x5555557c8ce0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff7bf1136 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x5555557c8ce0, timeout=<optimized out>, context=0x555555565730) at ../../../glib/gmain.c:4221
#2  0x00007ffff7bf1136 in g_main_context_iterate (context=0x555555565730, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3915
#3  0x00007ffff7bf14c2 in g_main_loop_run (loop=0x555555566930) at ../../../glib/gmain.c:4116
#4  0x00005555555552bd in main (argc=2, argv=0x7fffffffe558) at /home/phil/player-deadlock.c:22
Edited Jul 29, 2019 by Philippe Normand
Assignee
Assign to
Time tracking