gnash-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-dev] Re: OpenLaszlo & Gnash


From: Henry Minsky
Subject: [Gnash-dev] Re: OpenLaszlo & Gnash
Date: Wed, 14 Feb 2007 15:00:43 -0500

I disassembled the swf using swftools-0.4.2 swfdump and it does seem to be confused at that tag judging by the '???' it is emitting.


[01a]       381 PLACEOBJECT2 places id 0005 at depth 0002 name "frameupdate"
global flags: 00f0
                 flags 00000040 [key down], 84 bytes actioncode
                 (   38 bytes) action: Constantpool(5 entries) String:"gotKeyDown" String:"getCode" String:"LzKeys" String:"_root" String:"Key"
                 (    7 bytes) action: Push int:0 Lookup:4 ("Key")
                 (    0 bytes) action: GetVariable
                 (    2 bytes) action: Push Lookup:1 ("getCode")
                 (    0 bytes) action: CallMethod
                 (    7 bytes) action: Push int:1 Lookup:3 ("_root")
                 (    0 bytes) action: GetVariable
                 (    2 bytes) action: Push Lookup:2 ("LzKeys")
                 (    0 bytes) action: GetMember
                 (    2 bytes) action: Push Lookup:0 ("gotKeyDown")
                 (    0 bytes) action: CallMethod
                 (    0 bytes) action: Pop
                 (    0 bytes) action: End
                 flags 00008000 [???], 20992 bytes actioncode
                 (    0 bytes) action: End
                 flags 05002488 [mouse move][key up][???], 1953457920 bytes actioncode
                 (    0 bytes) action: ToString
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: unknown[79]
                 (    0 bytes) action: GetMembers?
                 (    0 bytes) action: unknown[70]
                 (    0 bytes) action: End
                 flags 43746567 [on load][enter frame][unload][mouse up][key down][data][???], 6644847 bytes actioncode
                 (    0 bytes) action: PushDuplicate
                 (    0 bytes) action: unknown[7a]
                 (    0 bytes) action: ToString
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: unknown[79]
                 (    0 bytes) action: unknown[73]
                 (    0 bytes) action: End
                 flags 6f6f725f [on load][enter frame][unload][mouse move][mouse down][key down][???], 1699414132 bytes actioncode
                 (    0 bytes) action: unknown[79]
                 (    0 bytes) action: End
                 flags 07000796 [enter frame][unload][mouse down][key up][data][???], 0 bytes actioncode
                 (    0 bytes) action: ToggleQuality
                 (    0 bytes) action: NextFrame
                 (    0 bytes) action: GetVariable
                 (    2 bytes) action: Push Lookup:1
                 (    0 bytes) action: CallMethod
                 (    7 bytes) action: Push int:1 Lookup:3
                 (    0 bytes) action: GetVariable
                 (    2 bytes) action: Push Lookup:2
                 (    0 bytes) action: GetMember
                 (    2 bytes) action: Push Lookup:0
                 (    0 bytes) action: CallMethod
                 (    0 bytes) action: Pop
                 (    0 bytes) action: End
                 flags 00001000 [???], 20224 bytes actioncode
                 (    0 bytes) action: End
                 flags 04003088 [mouse move][key up][???], 1299860480 bytes actioncode
                 (    0 bytes) action: unknown[6f]
                 (    0 bytes) action: BitRShift
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: StackSwap
                 (    0 bytes) action: BitOr
                 (    0 bytes) action: unknown[6e]
                 (    0 bytes) action: BitOr
                 (    0 bytes) action: Less3?
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: unknown[72]
                 (    0 bytes) action: End
                 flags 4d776172 [enter frame][mouse down][mouse up][key down][data][???], 1702065519 bytes actioncode
                 (    0 bytes) action: TargetPath
                 (    0 bytes) action: unknown[76]
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: unknown[6e]
                 (    0 bytes) action: unknown[74]
                 (    0 bytes) action: End
                 flags 6f6d6e6f [on load][enter frame][unload][mouse move][mouse up][key down][???], 1684370293 bytes actioncode
                 (    0 bytes) action: unknown[6f]
                 (    0 bytes) action: unknown[77]
                 (    0 bytes) action: unknown[6e]
                 (    0 bytes) action: End
                 flags 6f6f725f [on load][enter frame][unload][mouse move][mouse down][key down][???], 160825460 bytes actioncode
                 (    0 bytes) action: End
                 flags 01070208 [mouse move][???], 134217728 bytes actioncode
                 (    0 bytes) action: unknown[03]
                 (    0 bytes) action: GetVariable
                 (    2 bytes) action: Push Lookup:0
                 (    0 bytes) action: GetMember
                 (    2 bytes) action: Push Lookup:1
                 (    0 bytes) action: CallMethod
                 (    0 bytes) action: Pop
                 (    0 bytes) action: End
                 flags 00002000 [???], 19712 bytes actioncode
                 (    0 bytes) action: End
                 flags 04002e88 [mouse move][key up][???], 1299860480 bytes actioncode
                 (    0 bytes) action: unknown[6f]
                 (    0 bytes) action: BitRShift
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: StackSwap
                 (    0 bytes) action: BitOr
                 (    0 bytes) action: unknown[6e]
                 (    0 bytes) action: BitOr
                 (    0 bytes) action: Less3?
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: unknown[72]
                 (    0 bytes) action: End
                 flags 4d776172 [enter frame][mouse down][mouse up][key down][data][???], 1702065519 bytes actioncode
                 (    0 bytes) action: TargetPath
                 (    0 bytes) action: unknown[76]
                 (    0 bytes) action: BitURShift
                 (    0 bytes) action: unknown[6e]
                 (    0 bytes) action: unknown[74]
                 (    0 bytes) action: End
                 flags 6f6d6e6f [on load][enter frame][unload][mouse move][mouse up][key down][???], 1969582965 bytes actioncode
                 (    0 bytes) action: unknown[70]
                 (    0 bytes) action: End
                 flags 6f6f725f [on load][enter frame][unload][mouse move][mouse down][key down][???], 160825460 bytes actioncode
                 (    0 bytes) action: End
                 flags 01070208 [mouse move][???], 134217728 bytes actioncode
                 (    0 bytes) action: unknown[03]
                 (    0 bytes) action: GetVariable
                 (    2 bytes) action: Push Lookup:0
                 (    0 bytes) action: GetMember
                 (    2 bytes) action: Push Lookup:1
                 (    0 bytes) action: CallMethod
                 (    0 bytes) action: Pop
                 (    0 bytes) action: End
[027]         4 DEFINESPRITE defines id 0006
[000]         0          END


On 2/14/07, strk <address@hidden> wrote:
On Wed, Feb 14, 2007 at 01:30:12PM -0500, Henry Minsky wrote:
> The structure of a Laszlo application is that the runtime LFC library is
> compiled entirely by the script compiler, it is just a big action block.
>
> Then, the user's application is also compiled by the script compiler into a
> big action block.
>
> Then those are inserted into a kind of boilerplate framework which is
> generated using the old JGenerator library which we've modified somewhat.
> That is generated by the source code in
> WEB-INF/lps/server/src/org/openlaszlo/compiler/SWFFile.java, and consists of
> various resources and trampolines into the LFC, such as buttons for catching
> click events, keyboard events, and a video object which can be attached to
> play video.
>
> The question I have is whether the bad opcode is coming from our script
> compiler, or whether it comes in somehow when the app is assembled by
> placing the compiled script code into the application framework.

The Gnash-detected error is in a PLACEOBJECT2 tag events . You can also
see tha name of the instanciated character (frameupdate) :

SWF[444]: tag type = 26, tag length = 381
  place_object_2
  depth = 2
  char id = 5
  name = frameupdate
  actions: flags = 0xF0
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 84, but read 83. Skipping excessive bytes.
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 82, but read 81. Skipping excessive bytes.
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 79, but read 78. Skipping excessive bytes.
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 77, but read 76. Skipping excessive bytes.

I'm both interested in making sure Gnash is fail-safe against this malformation
(the proprietary player is) and improve Gnash support for the ActionScript part, which
is also unsupported currently.
The ActionScript failure is about a 'prototype' member being undefined (namely: prototype.prototype).

--strk;



--
Henry Minsky
Software Architect
address@hidden


reply via email to

[Prev in Thread] Current Thread [Next in Thread]