bugGnash - The GNU Flash player - Bugs: bug #19085, Problems in shape morph display...

 
 

bug #19085: Problems in shape morph display (with possibly malformed SWF)

Submitter:  Hubert Figuiere <hub>
Submitted:  Mon 19 Feb 2007 02:44:33 AM UTC
   
 
Category:  core Severity:  3 - Normal
Release:  None Status:  Confirmed
Privacy:  Public Assigned to:  None
Open/Closed:  Open
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Thu 30 Sep 2010 10:43:13 AM UTC, comment #14: 

http://uploads.ungrounded.net/1000/1448_doughguy.swf

or www.newgrounds.com/portal/view/1448

Problem is still there, and the sound is awful (ffmpeg).

Benjamin Wolsey <bwy>
Group Member
Thu 30 Sep 2010 10:39:51 AM UTC, comment #13: 

The test case, http://content.boredmuch.com/flash/568db6323c3109f.swf , is currently missing.  Was planning to see if I could reproduce the problem, but this proved to be impossible.

Anonymous
Mon 10 Sep 2007 06:47:59 AM UTC, comment #12: 

cmusick wrote:

> Yes, I saw the tongue spitting, but this doesn't appear
> to be a morphing                                                                                       issue, as far as I can determine.


I tried with FORCE_REDRAW in gui.cpp and it doesn't fix the problem, rather it makes it worst (longer toungue)

Sandro Santilli <strk>
Group Member
Mon 10 Sep 2007 06:20:26 AM UTC, comment #11: 

Yes, much better, but there's still a problem in the first scene, in where the dough seems to spit out its toungue (shouldn't happen).

Sandro Santilli <strk>
Group Member
Mon 10 Sep 2007 06:16:05 AM UTC, comment #10: 

Yes, confirm it's fixed.

Benjamin Wolsey <bwy>
Group Member
Mon 10 Sep 2007 04:34:38 AM UTC, comment #9: 

The SWF here wasn't malformed, but it included some hard edged bitmaps in a morph shape, which wasn't valid until v7. Should be fixed now.

Chad Musick <cmusick>
Thu 29 Mar 2007 09:27:37 AM UTC, comment #8: 

More info, the http://content.boredmuch.com/flash/568db6323c3109f.swf case plays
fine with swfdec, so we can look at its code to handle it better.

Sandro Santilli <strk>
Group Member
Mon 26 Feb 2007 02:40:08 PM UTC, comment #7: 

For the record: a couple of testcases for this problem are
already in CVS:
  samples/test_shape_tweening.swf
  samples/test_shape_tweening-2.swf

Both fail currently (no aborts, just wrong display)

Sandro Santilli <strk>
Group Member
Mon 26 Feb 2007 12:34:19 PM UTC, comment #6: 

mmm... just seen the first testcase (I was using the second one).
In this case my workaround doesn't work very well.
It doesn't abort, but display seems wrong.

Talking about: http://content.boredmuch.com/flash/568db6323c3109f.swf

Reduced testcases are still good.

I changed the bug summary to a more correct wording,
but I won't work on this now. Feel free to jump in anyone.

Sandro Santilli <strk>
Group Member
Mon 26 Feb 2007 10:43:28 AM UTC, comment #5: 

I've provided some handling of the malformation.
Your specific test seems to work fine now, but I don't
have more tests to check if anything broke.

Sandro Santilli <strk>
Group Member
Mon 26 Feb 2007 10:04:30 AM UTC, comment #4: 

The problem seems to be with the start and end shape
not having the same number of paths defined.

First shape has 37 paths.
Last shape has 24 paths.
Number of total edges in the paths is the same (1942).

Could you try reproducing this situation with a smaller
testcase focused on shape morphing ?

Best would be doing this using Ming.

Sandro Santilli <strk>
Group Member
Mon 19 Feb 2007 04:27:58 AM UTC, comment #3: 

valgrind log on the second movie:


==29209== Use of uninitialised value of size 4
==29209==    at 0x41801D8: gnash::morph2_character_def::display(gnash::character*) (morph2_character_def.cpp:95)
==29209==    by 0x40BFF20: gnash::generic_character::display() (generic_character.h:68)
==29209==    by 0x40FB2C9: gnash::DisplayList::display() (dlist.cpp:656)
==29209==    by 0x40C5DFD: gnash::sprite_instance::display() (sprite_instance.cpp:2933)
==29209==    by 0x40C195A: gnash::movie_root::display() (movie_root.cpp:519)
==29209==    by 0x40301B5: gnash::Gui::display(gnash::movie_root*) (gui.cpp:323)
==29209==    by 0x40304D3: gnash::Gui::advance_movie(gnash::Gui*) (gui.cpp:385)
==29209==    by 0x576E215: (within /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x576DC41: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x5770C1E: (within /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x5770FC8: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x531CF83: gtk_main (in /usr/lib/libgtk-x11-2.0.so.0.1000.9)
==29209==
==29209== Invalid read of size 4
==29209==    at 0x41801D8: gnash::morph2_character_def::display(gnash::character*) (morph2_character_def.cpp:95)
==29209==    by 0x40BFF20: gnash::generic_character::display() (generic_character.h:68)
==29209==    by 0x40FB2C9: gnash::DisplayList::display() (dlist.cpp:656)
==29209==    by 0x40C5DFD: gnash::sprite_instance::display() (sprite_instance.cpp:2933)
==29209==    by 0x40C195A: gnash::movie_root::display() (movie_root.cpp:519)
==29209==    by 0x40301B5: gnash::Gui::display(gnash::movie_root*) (gui.cpp:323)
==29209==    by 0x40304D3: gnash::Gui::advance_movie(gnash::Gui*) (gui.cpp:385)
==29209==    by 0x576E215: (within /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x576DC41: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x5770C1E: (within /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x5770FC8: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x531CF83: gtk_main (in /usr/lib/libgtk-x11-2.0.so.0.1000.9)
==29209==  Address 0x45A3A980 is not stack'd, malloc'd or (recently) free'd
==29209==
==29209== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==29209==  Access not within mapped region at address 0x45A3A980
==29209==    at 0x41801D8: gnash::morph2_character_def::display(gnash::character*) (morph2_character_def.cpp:95)
==29209==    by 0x40BFF20: gnash::generic_character::display() (generic_character.h:68)
==29209==    by 0x40FB2C9: gnash::DisplayList::display() (dlist.cpp:656)
==29209==    by 0x40C5DFD: gnash::sprite_instance::display() (sprite_instance.cpp:2933)
==29209==    by 0x40C195A: gnash::movie_root::display() (movie_root.cpp:519)
==29209==    by 0x40301B5: gnash::Gui::display(gnash::movie_root*) (gui.cpp:323)
==29209==    by 0x40304D3: gnash::Gui::advance_movie(gnash::Gui*) (gui.cpp:385)
==29209==    by 0x576E215: (within /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x576DC41: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x5770C1E: (within /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x5770FC8: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.1200.9)
==29209==    by 0x531CF83: gtk_main (in /usr/lib/libgtk-x11-2.0.so.0.1000.9)

Hubert Figuiere <hub>
Mon 19 Feb 2007 03:37:21 AM UTC, comment #2: 

Just as a followup note, this bug is on a Feisty system. Feisty is the not yet released version of Ubuntu that follows Edgy. (6.10)

Rob Savoye <rsavoye>
Group administrator
Mon 19 Feb 2007 02:48:17 AM UTC, comment #1: 
Hubert Figuiere <hub>
Mon 19 Feb 2007 02:44:33 AM UTC, original submission:  

gnash CVS randomly crash with that movie (see late for URL). By randomly, I mean that sometime it does, sometime it does not. But the stack trace is consistent.

The file is there:
http://content.boredmuch.com/flash/568db6323c3109f.swf

gdb stack trace:

#0  gnash::morph2_character_def::display (this=0x822a8c0, inst=0x847e360) at ../../../../gnash/server/parser/morph2_character_def.cpp:95
#1  0x400b8f21 in gnash::generic_character::display (this=0x847e360) at ../../../gnash/server/generic_character.h:68
#2  0x400f42ca in gnash::DisplayList::display (this=0x81bd924) at ../../../gnash/server/dlist.cpp:656
#3  0x400bedfe in gnash::sprite_instance::display (this=0x81bd868) at ../../../gnash/server/sprite_instance.cpp:2933
#4  0x400ba95b in gnash::movie_root::display (this=0x81c0fb0) at ../../../gnash/server/movie_root.cpp:519
#5  0x400291b6 in gnash::Gui::display (this=0x8051278, m=0x81c0fb0) at ../../../gnash/gui/gui.cpp:323
#6  0x400294d4 in gnash::Gui::advance_movie (gui=0x8051278) at ../../../gnash/gui/gui.cpp:385


Compiler is gcc 4.1.2. Linux Ubuntu Feisty.

Hubert Figuiere <hub>

 

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

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by bwy (Posted a comment)
  • -email is unavailable- added by cmusick (Posted a comment)
  • -email is unavailable- added by strk (Posted a comment)
  • -email is unavailable- added by rsavoye (Posted a comment)
  • -email is unavailable- added by hub (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 11 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2010-09-30 bwy Assigned tocmusick None
    2008-09-20 bwy StatusReady For Test Confirmed
    2007-09-10 cmusick StatusConfirmed Ready For Test
        Assigned toNone cmusick
    2007-02-26 strk StatusReady For Test Confirmed
        Assigned tostrk None
        Summaryrandom crash in shape morph display Problems in shape morph display (with possibly malformed SWF)
    2007-02-26 strk CategoryNone core
        StatusNone Ready For Test
        Assigned toNone strk
    2007-02-26 strk Summaryrandom crash random crash in shape morph display

    Back to the top

    Powered by Savane 3.13-758e.
    Corresponding source code