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 779984 - rtspsrc: SIGSEGV while setting up pipeline with Sanyo VCC-HD2500P
rtspsrc: SIGSEGV while setting up pipeline with Sanyo VCC-HD2500P
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.10.4
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-03-13 14:32 UTC by Krisjanis Balodis
Modified: 2018-05-06 13:42 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Krisjanis Balodis 2017-03-13 14:32:21 UTC
Pipline:
gst-launch-1.0 rtspsrc location=rtspt://xx:554/VideoInput/1/h264/1 ! decodebin ! autovideosink

Terminal output:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtspt://192.168.1.201:554/VideoInput/1/h264/1
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Caught SIGSEGV
Spinning.  Please run 'gdb gst-launch-1.0 16348' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

Relevant output from gdb:

Thread 4 (Thread 0x7f54cd23c700 (LWP 20197))

  • #0 nanosleep
    at ../sysdeps/unix/syscall-template.S line 84
  • #1 g_usleep
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #2 fault_spin
    at gst-launch.c line 113
  • #3 fault_handler_sighandler
    at gst-launch.c line 94
  • #4 <signal handler called>
  • #5 __strcmp_sse2_unaligned
    at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S line 32
  • #6 g_str_equal
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #7 gst_rtspsrc_setup_streams
    at gstrtspsrc.c line 6290
  • #8 gst_rtspsrc_open_from_sdp
    at gstrtspsrc.c line 6625
  • #9 gst_rtspsrc_open
    at gstrtspsrc.c line 6837
  • #10 gst_rtspsrc_thread
    at gstrtspsrc.c line 7610
  • #11 gst_task_func
    at gsttask.c line 334
  • #12 ??
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #13 ??
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #14 start_thread
    at pthread_create.c line 333
  • #15 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Comment 1 Nicolas Dufresne (ndufresne) 2017-03-13 18:35:52 UTC
Are you sure this is 1.10.4 ? I don't see a call to  g_str_equal at gstrtspsrc.c line 6290. I believe it should be line 6346 ? Can you enable debug symbol for glib, so we can see the parameters passed to g_str_equal ? This call is not NULL safe, we might be in need of a check. We'd also need to find out why it's NULL in the first place.
Comment 2 Krisjanis Balodis 2017-03-14 13:44:57 UTC
I installed glib dbg package and ran the gdb again. The results unfortunately are the following: 

Thread 3 (Thread 0x7f14391a3700 (LWP 26325))

  • #0 nanosleep
    at ../sysdeps/unix/syscall-template.S line 84
  • #1 g_usleep
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gtimer.c line 259
  • #2 fault_handler_sighandler
    at gst-launch.c line 113
  • #3 fault_handler_sighandler
    at gst-launch.c line 94
  • #4 <signal handler called>
  • #5 __strcmp_sse2_unaligned
    at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S line 32
  • #6 g_str_equal
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/ghash.c line 1846
  • #7 gst_rtspsrc_setup_streams
    at gstrtspsrc.c line 6346
  • #8 gst_rtspsrc_open
    at gstrtspsrc.c line 6681
  • #9 gst_rtspsrc_open
    at gstrtspsrc.c line 6909
  • #10 gst_rtspsrc_thread
    at gstrtspsrc.c line 7698
  • #11 gst_task_func
    at gsttask.c line 334
  • #12 g_thread_pool_thread_proxy
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthreadpool.c line 307
  • #13 g_thread_proxy
    at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread.c line 780
  • #14 start_thread
    at pthread_create.c line 333
  • #15 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

It seems I have to recompile and install glib with optimization flags disabled. I can take a shot at that if it is really necessary, but for now I can provide simple debug logs. I added the following snippet: 
          if (stream->conninfo.location == NULL)
            printf("stream->conninfo.location == NULL\n");
          else
            printf("stream->conninfo.location != NULL\n");

          if (sskip->conninfo.location == NULL)
            printf("sskip->conninfo.location == NULL\n");
          else
            printf("sskip->conninfo.location != NULL\n");

It produced the following:
gst-launch-1.0 rtspsrc location=rtsp://192.168.1.201:554/VideoInput/1/h264/1 ! decodebin ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://192.168.1.201:554/VideoInput/1/h264/1
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0

stream->conninfo.location != NULL
sskip->conninfo.location == NULL

Caught SIGSEGV
Spinning.  Please run 'gdb gst-launch-1.0 4573' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
Comment 3 Tim-Philipp Müller 2018-05-06 13:42:13 UTC
This conninfo.location crash looks familiar. I'm 90% sure this has been fixed, but I can't find the commit right now.

In any case, the code has changed quite a bit in the mean time, so I think I will close this.

Would be great if you could re-test with 1.14 or git master.

Please re-open if it still happens with 1.14 or git master, thanks!