VLC plugin for Firefox crashing on streaming from Dreambox
I keep getting this exception when I stream from a Dreambox with VLC. It does not occur in Windows. What happens is:
Start plugin from Firefox. Stream some mpeg2 channel Switch to fullscreen Can watch then for hours on same channel Channel / stream changes resolution / switches aspect ratio. Ie from widescreen movie to regular advertissement, etc.. Can still watch everything fine.. Try to exit fullscreen Get all white screen but sound still on. Can even reenter fullscreen if i doubleclick on some spots on the screen where the window was. Click randomly untill crash or quit firefox with cmd-q
I believe this only happens when the aspect / resolution of the stream changes. And it works fine on windows btw.
Ok, so I built Firefox (1.8 Branch) from cvs and vlc 0.9 from svn. Then I tried to debug this in Xcode. Not so easy since I've never seen the code before. Anyway, I did create a testcase that will crash my firefox everytime.
You can download the testcase here: ftp://streams.videolan.org/incoming/vlc_test.tgz
I included some instructions on how to make it crash:
Quote:
Here is how to trigger the bug: Start firefox (Any 1.8 branch on os x will do) open test.html press play video doubleclick in video to go to fullscreen As the aspect ratio of the video changes the screen will blink white doubleclick again to exit video and you get a white screen I then get a crash in WindowEventHandler because the userData pointer points to something that isnt a vout_thread_t
This is the stack trace from gdb:
#0 0x31dbc400 in WindowEventHandler (nextHandler=0xbffff2d0, event=0x2f8f6f10, userData=0x25c6200) at voutgl.m:975 #1 (closed) 0x92de6537 in DispatchEventToHandlers () #2 (closed) 0x92de5bdc in SendEventToEventTargetInternal () #3 (closed) 0x92decfbc in SendEventToEventTarget () #4 0x92ded44f in ToolboxEventDispatcherHandler () #5 (closed) 0x92de68ee in DispatchEventToHandlers () #6 (closed) 0x92de5bdc in SendEventToEventTargetInternal () #7 (closed) 0x92decfbc in SendEventToEventTarget () #8 (closed) 0x92e30eb3 in ToolboxEventDispatcher () #9 (closed) 0x92e2f8cb in RunApplicationEventLoop () #10 (closed) 0x054f643e in nsAppShell::Run (this=0x1d2d410) at nsAppShell.cpp:93 #11 (closed) 0x05f9da70 in nsAppStartup::Run (this=0x1d2d2e0) at nsAppStartup.cpp:151 #12 (closed) 0x0000ea29 in XRE_main (argc=3, argv=0xbffffb0c, aAppData=0x40520) at nsAppRunner.cpp:2642 #13 (closed) 0x00003520 in main (argc=3, argv=0xbffffb0c) at nsBrowserApp.cpp:61
So it crashes when the eventhandler tries to use a fubar vout_thread_t pointer. The pointer passed with userData is not a valid pointer. So obviously the bug happened sometime before this. So does anyone have any idea on how to debug this further? Like where does userData come from and why is it fubar?