bugGnash - The GNU Flash player - Bugs: bug #33521, SWF8 video from registroimprese.it...

 
 

bug #33521: SWF8 video from registroimprese.it doesn't work

Submitted by:  Sandro Santilli <strk>
Submitted on:  Sat 11 Jun 2011 08:24:44 AM UTC  
 
Category: ActionScriptSeverity: 3 - Normal
Release: masterStatus: Fixed
Privacy: PublicAssigned to: Sandro Santilli <strk>
Open/Closed: Closed

Add a New Comment (Rich MarkupRich 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)

Mon 18 Jul 2011 10:47:23 PM UTC, comment #25:

With 9cecf8ad8f2d5f6e351929785b833ac7d560b26a we make a double scan of the live characters in movie_root and queue onLoad with the second scan. This fixed 6 tests (all the failing ones) in ActionOrderTest5.swf w/out breaking anything else.

This bug if also fixed with that commit.

Unfortunately we don't have those 2 nice successes that we were
having with the other attempt in registerClassTest2.c, but I've verified (manually) that the successes were kind of cheating ones as we were postponing onLoad to the next advance while they are expected in the same advance with the rest.

Anyway, 6 successes (+ this bug) and no failures was worth pushing. This also simplified the code in MovieClip::construct a little bit.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sun 17 Jul 2011 01:46:39 PM UTC, comment #24:

Note that the 3 unexpected failures are all in the ActionOrderTest5.swf movie, which also has 3 unexpected successes.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sun 17 Jul 2011 01:34:57 PM UTC, comment #23:

Pushed by new hopes, I reassign to myself.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sun 17 Jul 2011 01:33:36 PM UTC, comment #22:

Postponing the onLoad call for movieclip when there are not clip events fixes 5 tests in our testsuite, breaks 3 tests and fixes this movie. Patch attached.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Thu 14 Jul 2011 06:12:05 PM UTC, comment #21:

I'm burned on this, so making this available to others, if anyone is willing to try it...

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 13 Jul 2011 05:46:07 PM UTC, comment #20:

See also: http://www.kirupa.com/developer/oop/AS1OOPClassesWithMCs7.htm

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 13 Jul 2011 01:48:40 PM UTC, comment #19:

Ok, it was a bug in my flasm syntax, updated traces, streamlined and showing the order execution issue:

PP:

_level0.slide0__color_mc.TSWFItem6.frame0 actions enter
entrata.swf

_level0.slide0__color_mc.TSWFItem6.onLoad enter
LoadSWF enter

Gnash:

_level0.slide0__color_mc.TSWFItem6.onLoad enter
LoadSWF enter

_level0.slide0__color_mc.TSWFItem6.frame0 actions enter
entrata.swf

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 13 Jul 2011 01:33:45 PM UTC, comment #18:

8666:1] 1049 DEBUG: Sending onLoad event for clip _level0.slide0__color_mc.TSWFItem6
8666:1] 1049 TRACE: _level0.onLoad enter

Gnash says:

9918:1] 1039 DEBUG: Sending onLoad event for clip _level0.slide0__color_mc.TSWFItem6
9918:1] 1039 TRACE: _level0.onLoad enter
...
9918:1] 1039 DEBUG: Returned from sending onLoad event for clip _level0.slide0__color_mc.TSWFItem6

So it's actually the TSWFItem6 being called onLoad on, but 'this' in function body resolves to _level0... odd

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 13 Jul 2011 12:17:56 PM UTC, comment #17:

Uhm... onLoad is not _level0.onLoad but rather a method
of _global.captivate.Veela_AS2.rdSwfLoader.prototype:

R1 = function () {
super();
};
captivate.Veela_AS2.rdSwfLoader = R1;
...
R2 = R1.prototype;
...
R2.onLoad = function () {
trace(this+'.onLoad enter');
...
}

So this all thing might have to do with prototypes and registerClass... (indeed I couldn't handle to produce a testcase showing gnash wrong about onLoad execution order)

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 13 Jul 2011 11:53:30 AM UTC, comment #16:

Oops. I meant:

PP:

_level0.slide0__color_mc.TSWFItem6.frame0 actions enter
entrata.swf

_level0.onLoad enter
LoadSWF enter

Gnash:

_level0.onLoad enter
LoadSWF enter

_level0.slide0__color_mc.TSWFItem6.frame0 actions enter
entrata.swf

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 13 Jul 2011 10:00:14 AM UTC, comment #15:

Alright, it's level0.onLoad (user-defined) being invoked _before frame0 actions of a child movie:

PP:

_level0.init actions (93) enter
_level0.init actions (93) exit

_level0.loading_mc.onEnterFrame
_level0.loading_mc.onEnterFrame exit

_level0.onLoad enter
LoadSWF enter

_level0.slide0__color_mc.TSWFItem6.frame0 actions enter
entrata.swf

Gnash:

_level0.init actions (93) enter
_level0.init actions (93) exit

_level0.loading_mc.onEnterFrame
_level0.loading_mc.onEnterFrame exit

_level0.onLoad enter
LoadSWF enter

_level0.slide0__color_mc.TSWFItem6.frame0 actions enter
entrata.swf

You can see the proper URL (entrata.swf) is set in frame0 actions of 'slide0__color_mc'.'TSWFItem6' child.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Tue 12 Jul 2011 09:00:10 PM UTC, comment #14:

The trace of "entrate.swf" is in a DOACTION of character 93, right after a PLACEOBJECT of character 92.

Character 92 is a sprite containing a single END tag, but advertised to have 108 frames (?!?)

There's no INITACTION for character 92, but there's one for character 93. Such initaction is the one tracing the 'registered captivate.Veela...' message.

For some reason gnash is executing something else between the INITACTION and the DOACTION block.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Tue 12 Jul 2011 08:07:57 PM UTC, comment #13:

After long work on constant pool that part is fixed, but the movie still doesn't work. Next problem seems to be action execution order, where traces I get are:

For PP:

registered captivate.Veela_AS2.rdSwfLoader class to 1403d43_2 movie
entrata.swf
[object Object]

For Gnash:

registered captivate.Veela_AS2.rdSwfLoader class to 1403d43_2 movie
[object Object]
entrata.swf

Note that load attempt happens, in Gnash, before '[object Object]' and 'entrata.swf' are traced. This explains why it attempts to load 'undefined' rather than 'entrata.swf'

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sun 10 Jul 2011 11:52:42 AM UTC, comment #12:

A new test from Jan Flanders (attached) seems to suggest the scope of ConstantPools doesn't cross timelines (so dicts defined in a movieclip aren't accessible by the main movie).

The test should be converted into an automated one.

Jan's test (the URL may be temporary): http://www.haxer.be/guests/gnash/two-frame-swf-cpool-in-mc.zip

Sandro Santilli <strk>
Project MemberIn charge of this item.
Thu 07 Jul 2011 12:55:00 PM UTC, comment #11:

57974d2 adds the test for anonymous function, and fixes the runner which was broken in previous commit.

Seems to be about the time for a fix.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Thu 07 Jul 2011 12:41:22 PM UTC, comment #10:

I've finally handled to produce an automated testcase for this.
Pushed commit c67f4af in master.

Basically when a function is executed it uses the constant pool which was available at time of definition.
The test doesn't check if the same applies to anonymous functions,
should be improved (dunno when I'll have time).

The test fails, and we expect that.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 06 Jul 2011 11:32:11 PM UTC, comment #9:

Alright, here's the thing:

PC:370 - EX: ActionPushData ("onEnterFrame called: ")
0) type=string, value=[string:onEnterFrame called: ]

PC:396 - EX: ActionPushData (dict_lookup[11])
0) type=dict8, value=[string:inAutoPlayState]

PC:401 - EX: ActionGetVariable
-- get var: inAutoPlayState=[bool:false]

I do can find a constant pool where 11:this, but evidently we're getting the wrong one (where 11:inAutoPlayState)

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 06 Jul 2011 11:21:27 PM UTC, comment #8:

NOTE that the movie seems to be produced using the Captivate adobe tool, so fixing this might fix a set of contents.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 06 Jul 2011 11:15:11 PM UTC, comment #7:

This (SOC_800x600.swf) is actually an SWF8, but is also bogus when changed to 7...

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 06 Jul 2011 10:57:56 PM UTC, comment #6:

The call to onEnterFrame seems to be performed by a 'super.onEnterFrame' snippet, where super=undefined and this=_level0

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 06 Jul 2011 10:45:36 PM UTC, comment #5:

Uhm:
pp: onEnterFrame called: _level0
gn: onEnterFrame called: false

Now this seems a very likely culprit here.
And it's surprising no test in testsuite exposes such a bug.

That's pretty much:

function onEnterFrame () {
trace("onEnterFrame called: " + this);
}

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 06 Jul 2011 10:15:23 PM UTC, comment #4:

I attach the current state of the flasm source I'm playing with.
Note that simply playing SOC_800x600.swf in isolation is enough to detect the difference between PP and Gnash.

PP shows something (ComUnica StarWeb something) and traces something like:

registered captivate.Veela_AS2.rdSwfLoader class to 1403d43_2 movie
entrata.swf
startSlide (base) called
onEnterSlide called
OnSlideEnter called
Branching::script:;;
deepak branching : scripteval:[object Object];
doPlay called
...

Gnash never gets to "startSlide (base) called" message.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 29 Jun 2011 01:56:07 PM UTC, comment #3:

Note that you'll need http://www.registroimprese.it/dama/comc/comc/IT/cu/tutorial/MDNew/SOC_800x600_skin.swf to have it fully functional. This one will load the one w/out _skin suffix which will have the actual content. Downloading both should give you a working offline setup.

The problem seems to be with ActionScript setting a variable and not finding it anymore at time of usage. The variable is set using ActionVarEquals, with AS looking like:

var m_chidSwfName = 'entrata.swf';

in a DOACTION block.
The attempt to retrive it looks like this:

R2.LoadSWF = function () {
var R2;
if( this.childswf_mc==null || this.childswf_mc==undefined ) {
this.createLoader();
}
if( this.m_swf_mc==null || this.m_swf_mc==undefined ) {
R2 = this.getLoadBase()+this.m_chidSwfName;
this.m_mcLoader.loadClip(R2,this.childswf_mc);
this.m_swf_mc = this.childswf_mc;
this.stop();
}
};

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sat 11 Jun 2011 08:26:23 AM UTC, comment #2:

Direct url (works with no params): http://www.registroimprese.it/dama/comc/comc/IT/cu/tutorial/MDNew/SOC_800x600.swf

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sat 11 Jun 2011 08:25:25 AM UTC, comment #1:

This was tested with:
Gnash 0.8.10dev (master-20418-b20c9d2)

Note that there's a 100% CPU in use during the playback

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sat 11 Jun 2011 08:24:44 AM UTC, original submission:

This is a video tutorial about how to tell the Italian Public Administration that you changed something about your business:

http://www.registroimprese.it/dama/comc/comc/IT/cu/tutorial/MDNew/SOC_800x600.htm

Doesn't work with Gnash. It's an SWF7.

The Italian PA sucks pretty hard generally. The process is really hard so I'm not surprised it takes a movie to understand. Must be a comedy...

Sandro Santilli <strk>
Project MemberIn charge of this item.

 

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

Attach File(s):
   
   
Comment:
   

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by strk (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 13 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Fri 29 Jul 2011 09:16:57 AM UTCstrkStatusReady For Test=>Fixed
      Open/ClosedOpen=>Closed
    Mon 18 Jul 2011 10:47:23 PM UTCstrkStatusIn Progress=>Ready For Test
    Sun 17 Jul 2011 01:34:57 PM UTCstrkStatusConfirmed=>In Progress
      Assigned toNone=>strk
    Sun 17 Jul 2011 01:33:51 PM UTCstrkAttached File-=>Added 0001-Postpone-calling-onLoad-to-next-advance-if-no-clip-e.patch, #23667
    Thu 14 Jul 2011 06:12:05 PM UTCstrkStatusIn Progress=>Confirmed
      Assigned tostrk=>None
    Wed 06 Jul 2011 11:15:11 PM UTCstrkSummarySWF7 video from registroimprese.it doesn\'t work=>SWF8 video from registroimprese.it doesn't work
    Wed 06 Jul 2011 10:45:36 PM UTCstrkStatusConfirmed=>In Progress
      Assigned toNone=>strk
    Wed 29 Jun 2011 01:56:22 PM UTCstrkCategoryNone=>ActionScript
      StatusNone=>Confirmed

    Back to the top


    Powered by Savane 3.1-cleanup