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 673118 - [resindvd] segfault in read_vts_info, on DVD with no VTS_TMAPT
[resindvd] segfault in read_vts_info, on DVD with no VTS_TMAPT
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
0.10.x
Other All
: Normal normal
: 0.10.24
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-03-29 21:37 UTC by Josh Triplett
Modified: 2012-06-14 14:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
resindvd: guard against not finding some data on a DVD (1018 bytes, patch)
2012-06-07 14:07 UTC, Vincent Penquerc'h
none Details | Review
With an extra guard elsewhere to avoid a crash later. (1.30 KB, patch)
2012-06-14 14:34 UTC, Vincent Penquerc'h
committed Details | Review

Description Josh Triplett 2012-03-29 21:37:14 UTC
Totem segfaulted when attempting to play a DVD.  I installed debug
symbols and ran it under gdb, obtaining the following backtrace:

libdvdread: Using libdvdcss version 1.2.10 for DVD access
Please send bug report - no VTS_TMAPT ?? 

Program received signal SIGSEGV, Segmentation fault.
read_vts_info (bsrc=0x843c098) at resindvdsrc.c:456
456     resindvdsrc.c: No such file or directory.
        in resindvdsrc.c
(gdb) bt
  • #0 read_vts_info
    at resindvdsrc.c line 456
  • #1 rsn_dvdsrc_start
    at resindvdsrc.c line 359
  • #2 gst_base_src_start
    at gstbasesrc.c line 2685
  • #3 gst_base_src_activate_push
    at gstbasesrc.c line 2910
  • #4 gst_pad_activate_push
    at gstpad.c line 930
  • #5 gst_pad_activate_default
    at gstpad.c line 597
  • #6 gst_pad_set_active
    at gstpad.c line 686
  • #7 activate_pads
    at gstelement.c line 2630
  • #8 gst_iterator_fold
    at gstiterator.c line 549
  • #9 iterator_activate_fold_with_resync
    at gstelement.c line 2662
  • #10 gst_element_pads_activate
    at gstelement.c line 2699
  • #11 gst_element_change_state_func
    at gstelement.c line 2776
  • #12 gst_base_src_change_state
    at gstbasesrc.c line 3053
  • #13 rsn_dvdsrc_change_state
    at resindvdsrc.c line 2377
  • #14 gst_element_change_state
    at gstelement.c line 2546
  • #15 gst_element_set_state_func
    at gstelement.c line 2502
  • #16 gst_element_set_state
    at gstelement.c line 2403
  • #17 gst_bin_element_set_state
    at gstbin.c line 2136
  • #18 gst_bin_change_state_func
    at gstbin.c line 2435
  • #19 rsn_dvdbin_change_state
    at resindvdbin.c line 925
  • #20 gst_element_change_state
    at gstelement.c line 2546
  • #21 gst_element_continue_state
    at gstelement.c line 2220
  • #22 gst_element_change_state
    at gstelement.c line 2583
  • #23 gst_element_set_state_func
    at gstelement.c line 2502
  • #24 gst_element_set_state
    at gstelement.c line 2403
  • #25 gst_bin_element_set_state
    at gstbin.c line 2136
  • #26 gst_bin_change_state_func
    at gstbin.c line 2435
  • #27 gst_uri_decode_bin_change_state
    at gsturidecodebin.c line 2186
  • #28 gst_element_change_state
    at gstelement.c line 2546
  • #29 gst_element_set_state_func
    at gstelement.c line 2502
  • #30 gst_element_set_state
    at gstelement.c line 2403
  • #31 gst_bin_element_set_state
    at gstbin.c line 2136
  • #32 gst_bin_change_state_func
    at gstbin.c line 2435
  • #33 gst_pipeline_change_state
    at gstpipeline.c line 475
  • #34 gst_play_bin_change_state
    at gstplaybin2.c line 3586
  • #35 gst_element_change_state
    at gstelement.c line 2546
  • #36 gst_element_set_state_func
    at gstelement.c line 2502
  • #37 gst_element_set_state
    at gstelement.c line 2403
  • #38 bacon_video_widget_open
    at bacon-video-widget-gst-0.10.c line 3745
  • #39 totem_action_set_mrl_with_warning
    at totem-object.c line 1721
  • #40 totem_action_set_mrl
    at totem-object.c line 1808
  • #41 totem_action_set_mrl_and_play
    at totem-object.c line 1144
  • #42 totem_action_play_media_device
    at totem-object.c line 1299
  • #43 on_play_disc_activate
    at totem-menu.c line 610
  • #44 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #45 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #46 ??
    from /usr/lib/libgobject-2.0.so.0
  • #47 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #48 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #49 ??
    from /usr/lib/libgtk-x11-2.0.so.0
  • #50 gtk_action_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #51 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #52 ??
    from /usr/lib/libgobject-2.0.so.0
  • #53 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #54 ??
    from /usr/lib/libgobject-2.0.so.0
  • #55 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #56 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #57 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #58 gtk_menu_shell_activate_item
    from /usr/lib/libgtk-x11-2.0.so.0
  • #59 ??
    from /usr/lib/libgtk-x11-2.0.so.0
  • #60 ??
    from /usr/lib/libgtk-x11-2.0.so.0
  • #61 ??
    from /usr/lib/libgtk-x11-2.0.so.0
  • #62 ??
    from /usr/lib/libgobject-2.0.so.0
  • #63 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #64 ??
    from /usr/lib/libgobject-2.0.so.0
  • #65 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #66 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #67 ??
    from /usr/lib/libgtk-x11-2.0.so.0
  • #68 gtk_propagate_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #69 gtk_main_do_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #70 ??
    from /usr/lib/libgdk-x11-2.0.so.0
  • #71 g_main_context_dispatch
    from /lib/libglib-2.0.so.0
  • #72 ??
    from /lib/libglib-2.0.so.0
  • #73 g_main_loop_run
    from /lib/libglib-2.0.so.0
  • #74 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #75 main
    at totem.c line 299

Comment 1 Vincent Penquerc'h 2012-06-07 14:07:18 UTC
Created attachment 215852 [details] [review]
resindvd: guard against not finding some data on a DVD

May possibly help with a particular DVD.
Comment 2 Vincent Penquerc'h 2012-06-07 14:09:43 UTC
This may help, if you can test it. If you cannot, or if you still get related trouble with that DVD after applying it, is the DVD image large ? Hopefully one without such data may be quite small.
Comment 3 Josh Triplett 2012-06-09 21:44:20 UTC
Sorry, I don't have the DVD in question anymore.  This occurred with a full off-the-shelf commercial video DVD, though.
Comment 4 Tim-Philipp Müller 2012-06-09 22:20:03 UTC
Can you tell us the title and region (US/Europe/etc?) and perhaps edition if it was a special edition?
Comment 5 Josh Triplett 2012-06-09 23:35:42 UTC
(In reply to comment #4)
> Can you tell us the title and region (US/Europe/etc?) and perhaps edition if it
> was a special edition?

I honestly don't remember; random Netflix rental.  I should have noted it at the time.
Comment 6 Vincent Penquerc'h 2012-06-14 14:34:43 UTC
Created attachment 216418 [details] [review]
With an extra guard elsewhere to avoid a crash later.
Comment 7 Vincent Penquerc'h 2012-06-14 14:38:25 UTC
I tried forcing the code to go through the NULL path, fixed another issue down the line, and it seems to work, but that's on a DVD that does have that data, so it's possible there's further issues on a DVD that does not actually have the data. Since we have no test case, I'll mark as fixed for now, as the NULL pointer accesses are fixed.



commit 669683856ca4ccba0ad568f82e09e4a2dddbe2ff
Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Date:   Thu Jun 7 15:06:34 2012 +0100

    resindvd: guard against not finding some data on a DVD
    
    May possibly help with a particular DVD.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=673118