[Bug 735569] New: Crash due to no protection of waths readsrc.

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Aug 28 00:20:46 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=735569
  GStreamer | gst-plugins-base | unspecified

           Summary: Crash  due to no protection of waths readsrc.
    Classification: Platform
           Product: GStreamer
           Version: unspecified
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: goran.jonsson at axis.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=284662)
 View: https://bugzilla.gnome.org/attachment.cgi?id=284662
 Review: https://bugzilla.gnome.org/review?bug=735569&attachment=284662

patch for gst-plugins-base

This happends due to it is possible to manipulate watchs readsrc from different
threads.

This is happening when running with multiple client threads in rtsp server.
More specific from handle_tunnel when calling 
gst_rtsp_watch_reset (opriv->watch);
( Observe that opriv is from another client saved in hash_table )
( Observe same watch Thread4 #4 watch=0x58ced8  Thread12 #11 watch=0x58ced8) 

Thread 4 (Thread 21887):
#0  0x77792764 in raise (sig=5) at
../nptl/sysdeps/unix/sysv/linux/pt-raise.c:46
#1  0x778079f4 in g_logv (log_domain=0x77881e90 "GLib",
log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>)
    at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmessages.c:974
#2  0x77807bc4 in g_log (log_domain=<optimized out>, log_level=<optimized out>,
format=<optimized out>) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmessages.c:1010
#3  0x77807c04 in g_return_if_fail_warning (log_domain=<optimized out>,
pretty_function=<optimized out>, expression=<optimized out>)
    at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmessages.c:1019
#4  0x77f926a8 in gst_rtsp_watch_reset (watch=0x58ced8) at
/home/goranjn/FLASHDIR/560aftersemester/libs/gst-plugins-base/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c:3402
#5  0x77b08734 in handle_tunnel (client=0x64b278) at
/home/goranjn/FLASHDIR/560aftersemester/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-client.c:3042
#6  0x77b08a9c in tunnel_post (watch=<optimized out>, user_data=0x64b278) at
/home/goranjn/FLASHDIR/560aftersemester/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-client.c:3094
#7  0x77f935a8 in gst_rtsp_source_dispatch_read (stream=<optimized out>,
watch=0x600d00)
    at
/home/goranjn/FLASHDIR/560aftersemester/libs/gst-plugins-base/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c:3120
#8  0x777fe244 in g_main_dispatch (context=0x55acd8) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3063
#9  g_main_context_dispatch (context=0x55acd8) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3639
#10 0x777fe698 in g_main_context_iterate (context=0x55acd8, block=1,
dispatch=1, self=<optimized out>) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3710
#11 0x777fed44 in g_main_loop_run (loop=0x533740) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3904
#12 0x77ae89d4 in do_loop (thread=0x7290e288) at
/home/goranjn/FLASHDIR/560aftersemester/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-thread-pool.c:329
#13 0x7782e12c in g_thread_pool_thread_proxy (data=<optimized out>) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gthreadpool.c:309
#14 0x7782d4f8 in g_thread_proxy (data=0x5d7120) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gthread.c:798
#15 0x777875b8 in start_thread (arg=0x6c8894b0) at pthread_create.c:310
#16 0x774b0cfc in __thread_start () from
target/mipsisa32r2el-axis-linux-gnu/lib/libc.so.6



Thread 12 (Thread 21856):
#0  g_mutex_get_impl (mutex=0x5a3550) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gthread-posix.c:123
#1  0x77851e3c in g_mutex_lock (mutex=<optimized out>) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gthread-posix.c:210
#2  0x777fa3b0 in g_source_destroy_internal (source=0x57dba0, context=0x5a3550,
have_lock=0) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:1185
#3  0x778f8e68 in closure_invoke_notifiers (closure=closure at entry=0x533798,
notify_type=<optimized out>) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/gobject/gclosure.c:264
#4  0x778f9d5c in g_closure_invalidate (closure=0x533798) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/gobject/gclosure.c:562
#5  0x778f9c60 in g_closure_unref (closure=0x533798) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/gobject/gclosure.c:593
#6  0x777fa25c in g_source_destroy_internal (source=0x57dba0, context=0x5a3550,
have_lock=1) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:1204
#7  0x777fa42c in g_child_source_remove_internal (child_source=0x57dba0,
context=0x5a3550) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:1446
#8  0x777fa2a8 in g_source_destroy_internal (source=0x579b38, context=0x5a3550,
have_lock=1) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:1222
---Type <return> to continue, or q <return> to quit---
#9  0x777fa42c in g_child_source_remove_internal (child_source=0x579b38,
context=0x5a3550) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:1446
#10 0x777fb808 in g_source_remove_child_source (source=<optimized out>,
child_source=0x579b38) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:1479
#11 0x77f93378 in gst_rtsp_source_dispatch_read (stream=<optimized out>,
watch=0x58ced8)
    at
/home/goranjn/FLASHDIR/560aftersemester/libs/gst-plugins-base/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c:3056
#12 0x777fe244 in g_main_dispatch (context=0x5a3550) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3063
#13 g_main_context_dispatch (context=0x5a3550) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3639
#14 0x777fe698 in g_main_context_iterate (context=0x5a3550, block=1,
dispatch=1, self=<optimized out>) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3710
#15 0x777fed44 in g_main_loop_run (loop=0x57daf8) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gmain.c:3904
#16 0x77ae89d4 in do_loop (thread=0x7290e250) at
/home/goranjn/FLASHDIR/560aftersemester/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-thread-pool.c:329
#17 0x7782e12c in g_thread_pool_thread_proxy (data=<optimized out>) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gthreadpool.c:309
#18 0x7782d4f8 in g_thread_proxy (data=0x60ea00) at
/home/goranjn/FLASHDIR/560aftersemester/libs/glib/glib/glib/gthread.c:798
#19 0x777875b8 in start_thread (arg=0x6e8894b0) at pthread_create.c:310
#20 0x774b0cfc in __thread_start () from
target/mipsisa32r2el-axis-linux-gnu/lib/libc.so.6

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list