bugGnash - The GNU Flash player - Bugs: bug #19898, lulu.tv segfault on OpenBSD...

 
 

bug #19898: lulu.tv segfault on OpenBSD (ffmpeg)

Submitted by:  Deanna Phillips <deanna>
Submitted on:  Fri 18 May 2007 03:11:23 PM UTC  
 
Category: video-ffmpegSeverity: 5 - Blocker
Release: NoneStatus: Fixed
Privacy: PublicAssigned to: Sandro Santilli <strk>
Open/Closed: Closed

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

(Jump to the original submission Jump to the original submission)

Fri 01 Jun 2007 12:06:20 PM UTC, comment #7:

Fixed in CVS.

Bastiaan Jacques <bjacques>
Project Member
Sat 26 May 2007 12:47:26 AM UTC, comment #6:

I can still reproduce the bug with current CVS.

With tgc's patch applied, I get a black screen (no video) after pressing the play button, instead of a crash. If I press the start/stop buttons again, I get a black screen with the 'buffering' message, but no video is played and no more debug output is printed.

Also with tgc's patch, I tried another movie on the main page, and it played for a bit then crashed here:

#0 0x00000000 in ?? ()
#1 0x09da387e in gnash::NetStreamFfmpeg::close() (this=0x87d3e200) at NetStreamFfmpeg.cpp:144
#2 0x09d79801 in netstream_close (fn=@0xcfbfa8a0) at NetStream.cpp:121
#3 0x09ca55bd in gnash::builtin_function::operator()(gnash::fn_call const&) (this=0x864facc0,
fn=@0xcfbfa8a0) at builtin_function.h:64
#4 0x09df4250 in gnash::call_method(gnash::as_value const&, gnash::as_environment, gnash::as_object, int, int) (method=@0xcfbfa950, env=0x7ef692e4, this_ptr=0x87d3e200, nargs=0, first_arg_bottom_index=21)
at action.cpp:228
#5 0x09deb1d6 in gnash::SWF::SWFHandlers::ActionCallMethod(gnash::ActionExec&) (thread=@0xcfbfabf0)
at ASHandlers.cpp:2900
#6 0x09dd56f6 in gnash::SWF::ActionHandler::execute(gnash::ActionExec&) const (this=0x7e5fd7b0,
thread=@0xcfbfabf0) at ASHandlers.cpp:171
#7 0x09de2d3f in gnash::SWF::SWFHandlers::execute(gnash::SWF::action_type, gnash::ActionExec&) const (
this=0x29bf9c90, type=ACTION_CALLMETHOD, thread=@0xcfbfabf0) at ASHandlers.cpp:452
#8 0x09df0c6d in gnash::ActionExec::operator()() (this=0xcfbfabf0) at ActionExec.cpp:218
#9 0x09cfb159 in gnash::swf_function::operator()(gnash::fn_call const&) (this=0x833f5580, fn=@0xcfbfad20)
at swf_function.cpp:331
#10 0x09df4250 in gnash::call_method(gnash::as_value const&, gnash::as_environment, gnash::as_object, int, int) (method=@0xcfbfada0, env=0x808cd4e4, this_ptr=0x808cd400, nargs=0, first_arg_bottom_index=0)
at action.cpp:228
#11 0x09df44ce in gnash::call_method0(gnash::as_value const&, gnash::as_environment, gnash::as_object) (
method=@0xcfbfada0, env=0x808cd4e4, this_ptr=0x808cd400) at action.cpp:252
#12 0x09ce23d7 in gnash::sprite_instance::on_event(gnash::event_id const&) (this=0x808cd400, id=@0xcfbfae70)
at sprite_instance.cpp:2194
#13 0x09c926fd in gnash::character::on_button_event(gnash::event_id const&) (this=0x808cd400, id=@0xcfbfae70)
at character.h:803
#14 0x09ccb3cf in gnash::generate_mouse_button_events(gnash::mouse_button_state*) (ms=0x813ad930)
at movie_root.cpp:340
#15 0x09ccb802 in gnash::movie_root::fire_mouse_event() (this=0x813ad900) at movie_root.cpp:461
#16 0x09ccb127 in gnash::movie_root::notify_mouse_clicked(bool, int) (this=0x813ad900, mouse_pressed=false,
button_mask=1) at movie_root.cpp:258
#17 0x0200d34b in gnash::Gui::notify_mouse_clicked(bool, int) (this=0x8b589200, mouse_pressed=false, mask=1)
at gui.cpp:280
#18 0x02007d2a in gnash::GtkGui::button_release_event(_GtkWidget, _GdkEventButton, void*) (
event=0x7f4ab3f0, data=0x8b589200) at gtk.cpp:1238
#19 0x0a1fced2 in gtk_marshal_VOID__UINT_STRING () from /usr/local/lib/libgtk-x11-2.0.so.1000.12
#20 0x0ed4c21e in g_closure_invoke () from /usr/local/lib/libgobject-2.0.so.1200.11
#21 0x0ed5c331 in g_signal_emit_by_name () from /usr/local/lib/libgobject-2.0.so.1200.11
#22 0x0ed5b301 in g_signal_emit_valist () from /usr/local/lib/libgobject-2.0.so.1200.11
#23 0x0ed5b73b in g_signal_emit () from /usr/local/lib/libgobject-2.0.so.1200.11
#24 0x0a2f0328 in gtk_widget_send_expose () from /usr/local/lib/libgtk-x11-2.0.so.1000.12
#25 0x0a1fbcea in gtk_propagate_event () from /usr/local/lib/libgtk-x11-2.0.so.1000.12
#26 0x0a1fae53 in gtk_main_do_event () from /usr/local/lib/libgtk-x11-2.0.so.1000.12
#27 0x0ace67c6 in gdk_x11_register_standard_event_type () from /usr/local/lib/libgdk-x11-2.0.so.1000.12
#28 0x09e5a3a3 in g_source_is_destroyed () from /usr/local/lib/libglib-2.0.so.1200.11
#29 0x09e5b38d in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.1200.11
#30 0x09e5b6b2 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.1200.11
#31 0x09e5bbbe in g_main_loop_run () from /usr/local/lib/libglib-2.0.so.1200.11
#32 0x0a1fa7c3 in gtk_main () from /usr/local/lib/libgtk-x11-2.0.so.1000.12
#33 0x02005605 in gnash::GtkGui::run() (this=0x8b589200) at gtk.cpp:318
#34 0x0325111e in gnash::Player::run(int, char*, char const, char const*) (this=0xcfbfb67c, argc=33,
argv=0xcfbfb738, infile=0xcfbfbc64 "-",
url=0xcfbfb9a5 "http://www.lulu.tv/wp-content/flash_play/flvplayer-nowings-lulutv-beta6.swf?file=[http://st]
---Type <return> to continue, or q <return> to quit---
atic.lulu.tv//wp-content/video2/2459/flash/9671/1180014031.flv&autoStart=true&postID=9671&vwidth=320&vheight=2"...) at Player.cpp:355
#35 0x1c003a04 in main (argc=33, argv=0xcfbfb738) at gnash.cpp:364

Deanna Phillips <deanna>
Thu 24 May 2007 12:32:18 AM UTC, comment #5:

Ok, i've solved some issues, and found some new ones. Patch attached.

Solved problems:
Decoding continued after close() had been called. This has been solved by checking for !m_go first thing in av_streamer.
A few URL handling fixes was also needed.

New problems:
It seems it get some deadlocks when calling setStatus() in av_streamer, which i don't understand... Maybe I'm missing something obvious, but it's getting very late here...

Feel free to continue hacking on this patch and commit the result

(file #12846)

Tomas Groth <tgc>
Wed 23 May 2007 09:45:13 PM UTC, comment #4:

Another patch has been committed please test :)

Tomas Groth <tgc>
Wed 23 May 2007 07:54:54 PM UTC, comment #3:

It still crashes when I press the play button on the main page, but now it's in the audio -

(gdb) bt
#0 0x0beef801 in avcodec_decode_audio () from /usr/local/lib/libavcodec.so.8.0
#1 0x06c1df1a in gnash::NetStreamFfmpeg::decodeAudio(AVPacket*) (this=0x89c95200, packet=0x86e13e08)
at NetStreamFfmpeg.cpp:744
#2 0x06c1deb9 in gnash::NetStreamFfmpeg::decodeFLVFrame() (this=0x89c95200) at NetStreamFfmpeg.cpp:729
#3 0x06c1d99c in gnash::NetStreamFfmpeg::av_streamer(gnash::NetStreamFfmpeg*) (ns=0x89c95200)
at NetStreamFfmpeg.cpp:629
#4 0x06c206ab in operator()<void ()(gnash::NetStreamFfmpeg), boost::_bi::list0> (this=0x82815e64,
f=@0x82815e60, a=@0x86e13eeb) at bind.hpp:229
#5 0x06c20666 in boost::_bi::bind_t<void, void ()(gnash::NetStreamFfmpeg), boost::_bi::list1<boost::_bi::value<gnash::NetStreamFfmpeg*> > >::operator()() (this=0x82815e60) at bind_template.hpp:20
#6 0x06c2061e in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, void ()(gnash::NetStreamFfmpeg), boost::_bi::list1<boost::_bi::value<gnash::NetStreamFfmpeg*> > >, void>::invoke(boost::detail::function::any_pointer) (function_obj_ptr=
{obj_ptr = 0x82815e60, const_obj_ptr = 0x82815e60, func_ptr = 0x82815e60, data = "`"})
at function_template.hpp:136
#7 0x0edc4eed in boost::function0<void, std::allocator<boost::function_base> >::operator()() const ()
from /usr/local/lib/libboost_thread-mt.so.0.0
#8 0x0edc4b8a in boost::thread_group::size() () from /usr/local/lib/libboost_thread-mt.so.0.0
#9 0x093d0fcb in _thread_start () at /usr/src/lib/libpthread/uthread/uthread_create.c:244
#10 0x0000001f in ?? ()
#11 0x00000000 in ?? ()

Deanna Phillips <deanna>
Wed 23 May 2007 09:14:46 AM UTC, comment #2:

I just committed a general cleanup patch to the video decoding, could you please try if this had any effect on the crashes?

Tomas Groth <tgc>
Sat 19 May 2007 10:36:14 PM UTC, comment #1:

I can confirm this on linux, playing the directly link: "http://www.lulu.tv/wp-content/flash_play/flvplayer-nowings-lulutv-beta6.swf?file=[http://static.lulu.tv//wp-content/video2/1194/flash/8141/1177355101.flv&postID=8141&vwidth=320&vheight=240&bgColor=#333333]"
The crash happens in libavcodec, but i have no idea why... It works with gstreamer.

Tomas Groth <tgc>
Fri 18 May 2007 03:11:23 PM UTC, original submission:

Gnash crashes when loading the featured movie on the lulu main page. This happens immediately after pressing the play button, or at some random time if left alone to load by itself.

The movie is:

http://www.lulu.tv/?p=8141

Gnash cvs20070518
Copyright (C) 2005-2007 Free Software Foundation, Inc.
Gnash comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of Gnash under the terms of the GNU General
Public License. For more information, see the file named COPYING.
Build options cvs20070518
Target:
Renderer: agg GUI: gtk Media handler: ffmpeg

Here is a trace after hitting the play button on the main page.

(gdb) bt
#0 0x03cbc765 in avcodec_decode_video () from /usr/local/lib/libavcodec.so.8.0
#1 0x7f5c2e00 in ?? ()
#2 0x7f5c2e00 in ?? ()
#3 0x85883e30 in ?? ()
#4 0x0a2a83ae in gnash::NetStreamFfmpeg::read_frame() (this=0x0) at NetStreamFfmpeg.cpp:808
Previous frame inner to this frame (corrupt stack?)

And here when doing the same on the individual movie's page

#0 0x06be552d in kill () from /usr/lib/libc.so.40.3
#1 0x06c1dc1b in abort () at /usr/src/lib/libc/stdlib/abort.c:65
#2 0x0349d314 in __cxxabiv1::__terminate(void (*)()) () from /usr/local/lib/libagg.so.2.4
#3 0x0349d348 in std::terminate() () from /usr/local/lib/libagg.so.2.4
#4 0x0349d491 in __cxa_throw () from /usr/local/lib/libagg.so.2.4
#5 0x07144d2d in boost::mutex::do_lock() () from /usr/local/lib/libboost_thread-mt.so.0.0
#6 0x0427b220 in boost::detail::thread::lock_ops<boost::mutex>::lock(boost::mutex&) (m=@0x898a8e64)
at lock.hpp:38
#7 0x0427b1f1 in boost::detail::thread::scoped_lock<boost::mutex>::lock() (this=0xcfbf65e0) at lock.hpp:81
#8 0x0427b13e in scoped_lock (this=0xcfbf65e0, mx=@0x898a8e64, initially_locked=true) at lock.hpp:71
#9 0x04309626 in gnash::NetStream::setStatus(gnash::NetStream::StatusCode) (this=0x898a8e00,
status=playStart) at NetStream.cpp:488
#10 0x043302f5 in gnash::NetStreamFfmpeg::pause(int) (this=0x898a8e00, mode=-1) at NetStreamFfmpeg.cpp:90
#11 0x04306939 in netstream_pause (fn=@0xcfbf6720) at NetStream.cpp:135
#12 0x0423347d in gnash::builtin_function::operator()(gnash::fn_call const&) (this=0x80d54cc0,
fn=@0xcfbf6720) at builtin_function.h:64
#13 0x0437d6e6 in gnash::call_method(gnash::as_value const&, gnash::as_environment, gnash::as_object, int, int) (method=@0xcfbf67d0, env=0x7eac20e8, this_ptr=0x898a8e00, nargs=0, first_arg_bottom_index=1)
at action.cpp:234
#14 0x04374725 in gnash::SWF::SWFHandlers::ActionCallMethod(gnash::ActionExec&) (thread=@0xcfbf6a60)
at ASHandlers.cpp:2900
#15 0x0435ec2a in gnash::SWF::ActionHandler::execute(gnash::ActionExec&) const (this=0x86c8f7b0,
thread=@0xcfbf6a60) at ASHandlers.cpp:171
#16 0x0436c273 in gnash::SWF::SWFHandlers::execute(gnash::SWF::action_type, gnash::ActionExec&) const (
this=0x2418a5d8, type=ACTION_CALLMETHOD, thread=@0xcfbf6a60) at ASHandlers.cpp:452
#17 0x0437a17c in gnash::ActionExec::operator()() (this=0xcfbf6a60) at ActionExec.cpp:215
#18 0x042890dd in gnash::swf_function::operator()(gnash::fn_call const&) (this=0x894fb700, fn=@0xcfbf6b90)
at swf_function.cpp:331
#19 0x0437d6e6 in gnash::call_method(gnash::as_value const&, gnash::as_environment, gnash::as_object, int, int) (method=@0xcfbf6c40, env=0x7eac20e8, this_ptr=0x898a8e00, nargs=1, first_arg_bottom_index=1)
at action.cpp:234
#20 0x04309508 in gnash::NetStream::processStatusNotifications() (this=0x898a8e00) at NetStream.cpp:472
#21 0x04333113 in gnash::NetStreamFfmpeg::advance() (this=0x898a8e00) at NetStreamFfmpeg.cpp:1016
#22 0x0428a886 in gnash::video_stream_instance::advance(float) (this=0x810aff00)
at video_stream_instance.cpp:126
#23 0x042a6721 in gnash::DisplayList::advance(float) (this=0xcfbf6d60, delta_time=1) at dlist.cpp:681
#24 0x04270831 in gnash::sprite_instance::advance_sprite(float) (this=0x7eac2000, delta_time=1)
at sprite_instance.cpp:2489
#25 0x042577c6 in gnash::movie_instance::advance(float) (this=0x7eac2000, delta_time=1)
at movie_instance.cpp:87
#26 0x042598dd in gnash::movie_root::advance(float) (this=0x8286f600, delta_time=1) at movie_root.cpp:595
#27 0x02def6a3 in gnash::Gui::advance_movie(gnash::Gui*) (gui=0x7c1e9200) at gui.cpp:462
#28 0x0c426947 in g_main_context_is_owner () from /usr/local/lib/libglib-2.0.so.1200.11
#29 0x0c4243a3 in g_source_is_destroyed () from /usr/local/lib/libglib-2.0.so.1200.11
#30 0x0c42538d in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.1200.11
#31 0x0c4256b2 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.1200.11
#32 0x0c425bbe in g_main_loop_run () from /usr/local/lib/libglib-2.0.so.1200.11
#33 0x0c0427c3 in gtk_main () from /usr/local/lib/libgtk-x11-2.0.so.1000.12
#34 0x02de75f5 in gnash::GtkGui::run() (this=0x7c1e9200) at gtk.cpp:318
#35 0x0a2a90dd in gnash::Player::run(int, char*, char const, char const*) (this=0xcfbf70bc, argc=33,
argv=0xcfbf7178, infile=0xcfbf76a4 "-",
url=0xcfbf73e5 "http://www.lulu.tv/wp-content/flash_play/flvplayer-nowings-lulutv-beta6.swf?file=[http://static.lulu.tv//wp-content/video2/1194/flash/8141/1177355101.flv&autoStart=true&postID=8141&vwidth=320&vheight=2]
"...) at Player.cpp:355
#36 0x1c0039f4 in main (argc=33, argv=0xcfbf7178) at gnash.cpp:364

Deanna Phillips <deanna>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #12846:  tmp.patch added by tgc (4KiB - text/x-patch)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by bjacques (Posted a comment)
  • -unavailable- added by strk (Updated the item)
  • -unavailable- added by tgc (Posted a comment)
  • -unavailable- added by deanna (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 10 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Fri 01 Jun 2007 12:06:20 PM UTCbjacquesStatusIn Progress=>Fixed
      Assigned totgc=>strk
      Open/ClosedOpen=>Closed
    Thu 31 May 2007 02:21:58 PM UTCstrkCategoryvideo=>video-ffmpeg
    Thu 31 May 2007 02:18:08 PM UTCstrkSummarylulu.tv segfault on OpenBSD=>lulu.tv segfault on OpenBSD (ffmpeg)
    Thu 24 May 2007 12:32:18 AM UTCtgcAttached File-=>Added tmp.patch, #12846
    Sat 19 May 2007 10:36:14 PM UTCtgcCategoryNone=>video
      Severity3 - Normal=>5 - Blocker
      StatusNone=>In Progress
      Assigned toNone=>tgc

    Back to the top


    Powered by Savane 3.1-cleanup1